llvm / llvm/llvm-project

[Matrix] Implement matrix support for the `smoothstep` HLSL Function

Open
#184,489 1 comment 0 reactions 0 assignees View on GitHub
bot:HLSL clang:codegen HLSL
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

> Note: This issue tracks matrix support for `smoothstep`. The original implementation issue is [here](https://github.com/llvm/llvm-project/issues/99156).

Matrix requirements:
- [ ] https://github.com/llvm/wg-hlsl/issues/387

## HLSL:

Returns a smooth Hermite interpolation between 0 and 1, if *x* is in the range \[*min*, *max*\].

| *ret* smoothstep(*min*, *max*, *x*) |
|-------------------------------------|

## Parameters

| Item | Description |
|--------------------------------------------------------------|-----------------------------------------------------------|
| *min*
| \[in\] The minimum range of the *x* parameter.
|
| *max*
| \[in\] The maximum range of the *x* parameter.
|
| *x*
| \[in\] The specified value to be interpolated.
|

## Return Value

Returns 0 if *x* is less than *min*; 1 if *x* is greater than *max*; otherwise, a value between 0 and 1 if *x* is in the range \[*min*, *max*\].

## Remarks

Use the **smoothstep** HLSL intrinsic function to create a smooth transition between two values. For example, you can use this function to blend two colors smoothly.

## Type Description

| Name | [**Template Type**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md) | [**Component Type**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md) | Size |
|-------|----------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------|--------------------------------|
| *x* | [**scalar**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md), **vector**, or **matrix** | [**float**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/WinProg/windows-data-types.md) | any |
| *min* | same as input *x* | [**float**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/WinProg/windows-data-types.md) | same dimension(s) as input *x* |
| *max* | same as input *x* | [**float**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/WinProg/windows-data-types.md) | same dimension(s) as input *x* |
| *ret* | same as input *x* | [**float**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/WinProg/windows-data-types.md) | same dimension(s) as input *x* |

## Minimum Shader Model

This function is supported in the following shader models.

| Shader Model | Supported |
|------------------------------------------------------------------------------------|---------------------|
| [Shader Model 2 (DirectX HLSL)](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-sm2.md) and higher shader models | yes |
| [Shader Model 1 (DirectX HLSL)](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-sm1.md) | yes (vs\_1\_1 only) |

## See also

[**Intrinsic Functions (DirectX HLSL)**](https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src//direct3dhlsl/dx-graphics-hlsl-intrinsic-functions.md)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.