diff options
| author | Yong He <yonghe@outlook.com> | 2022-05-05 10:48:14 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-05 10:48:14 -0700 |
| commit | 3088d901fee6447b6d80fa67f258626ece4408dc (patch) | |
| tree | 95b7d6bcc4b549e58d705fcf0056dde71a52ae8e /source/slang/hlsl.meta.slang | |
| parent | aa03cea0da38b2950e6f8694dc8b1405352eda66 (diff) | |
Various vulkan/glsl fixes. (#2222)
* Various vulkan/glsl fixes.
* Fix.
* Fix.
* Canonicalize type constraints for name mangling.
Co-authored-by: Yong He <yhe@nvidia.com>
Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com>
Diffstat (limited to 'source/slang/hlsl.meta.slang')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 2c969e174..7d107888a 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -1582,7 +1582,7 @@ T distance(vector<T, N> x, vector<T, N> y) // Vector dot product -__generic<T : __BuiltinArithmeticType, let N : int> +__generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl) T dot(vector<T, N> x, vector<T, N> y) @@ -1593,6 +1593,17 @@ T dot(vector<T, N> x, vector<T, N> y) return result; } +__generic<T : __BuiltinIntegerType, let N : int> +__target_intrinsic(hlsl) +T dot(vector<T, N> x, vector<T, N> y) +{ + T result = T(0); + for(int i = 0; i < N; ++i) + result += x[i] * y[i]; + return result; +} + + // Helper for computing distance terms for lighting (obsolete) __generic<T : __BuiltinFloatingPointType> vector<T,4> dst(vector<T,4> x, vector<T,4> y); @@ -2568,13 +2579,19 @@ __intrinsic_op($(kIROp_Mul)) matrix<T, N, M> mul(T x, matrix<T, N, M> y); // vector-vector (dot product) -__generic<T : __BuiltinArithmeticType, let N : int> +__generic<T : __BuiltinFloatingPointType, let N : int> __target_intrinsic(hlsl) __target_intrinsic(glsl, "dot") T mul(vector<T, N> x, vector<T, N> y) { return dot(x, y); } +__generic<T : __BuiltinIntegerType, let N : int> +__target_intrinsic(hlsl) +T mul(vector<T, N> x, vector<T, N> y) +{ + return dot(x, y); +} // vector-matrix __generic<T : __BuiltinArithmeticType, let N : int, let M : int> |
