diff options
| author | Robert Stepinski <rob.stepinski@gmail.com> | 2019-03-20 17:13:48 -0400 |
|---|---|---|
| committer | Tim Foley <tfoleyNV@users.noreply.github.com> | 2019-03-20 14:13:48 -0700 |
| commit | fb29281b9061eb5e9b75d1362f2c824d01a8b3d4 (patch) | |
| tree | b3fee168100eff3357169afbe9b698a3d97f7164 /source | |
| parent | 662fcca6d3156d7645761ac967038e5ff068fe99 (diff) | |
Add support for scalar rcp() intrinsic for GLSL (#918)
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 6 | ||||
| -rw-r--r-- | source/slang/hlsl.meta.slang.h | 16 |
2 files changed, 17 insertions, 5 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index a12e45c36..40bd02597 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -1133,7 +1133,11 @@ __generic<T : __BuiltinFloatingPointType, let N : int> vector<T,N> radians(vecto __generic<T : __BuiltinFloatingPointType, let N : int, let M : int> matrix<T,N,M> radians(matrix<T,N,M> x); // Approximate reciprocal -__generic<T : __BuiltinFloatingPointType> T rcp(T x); +__generic<T : __BuiltinFloatingPointType> +__target_intrinsic(glsl, "1.0/($0)") +T rcp(T x); + +// TODO: vector and matrix approx. reciprocals needto be deconstructed for GLSL __generic<T : __BuiltinFloatingPointType, let N : int> vector<T,N> rcp(vector<T,N> x); __generic<T : __BuiltinFloatingPointType, let N : int, let M : int> matrix<T,N,M> rcp(matrix<T,N,M> x); diff --git a/source/slang/hlsl.meta.slang.h b/source/slang/hlsl.meta.slang.h index a82a733ac..e40e12962 100644 --- a/source/slang/hlsl.meta.slang.h +++ b/source/slang/hlsl.meta.slang.h @@ -1209,9 +1209,17 @@ SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int> vector<T,N> ra SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> matrix<T,N,M> radians(matrix<T,N,M> x);\n") SLANG_RAW("\n") SLANG_RAW("// Approximate reciprocal\n") -SLANG_RAW("__generic<T : __BuiltinFloatingPointType> T rcp(T x);\n") -SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int> vector<T,N> rcp(vector<T,N> x);\n") -SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> matrix<T,N,M> rcp(matrix<T,N,M> x);\n") +SLANG_RAW("__generic<T : __BuiltinFloatingPointType>\n") +SLANG_RAW("__target_intrinsic(glsl, \"1.0/($0)\")\n") +SLANG_RAW("T rcp(T x);\n") +SLANG_RAW("\n") +SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int>\n") +SLANG_RAW("__target_intrinsic(glsl, \"1.0/($0)\")\n") +SLANG_RAW("vector<T,N> rcp(vector<T,N> x);\n") +SLANG_RAW("\n") +SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>\n") +SLANG_RAW("__target_intrinsic(glsl, \"1.0/($0)\")\n") +SLANG_RAW("matrix<T,N,M> rcp(matrix<T,N,M> x);\n") SLANG_RAW("\n") SLANG_RAW("// Reflect incident vector across plane with given normal\n") SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int>\n") @@ -1531,7 +1539,7 @@ for (int aa = 0; aa < kBaseBufferAccessLevelCount; ++aa) sb << "};\n"; } -SLANG_RAW("#line 1458 \"hlsl.meta.slang\"") +SLANG_RAW("#line 1466 \"hlsl.meta.slang\"") SLANG_RAW("\n") SLANG_RAW("\n") SLANG_RAW("\n") |
