summaryrefslogtreecommitdiff
path: root/source/slang/hlsl.meta.slang
diff options
context:
space:
mode:
authorYong He <yonghe@google.com>2019-01-25 17:44:24 -0800
committerYong He <yonghe@google.com>2019-01-25 18:11:57 -0800
commiteefe2539373a2e17eda2f11c420908c0aebcac6d (patch)
treed56d36118b83ba23cc1b817035ab4f5b54034c99 /source/slang/hlsl.meta.slang
parent864c38ee72991f414f2478ccacb462bfb11b4bca (diff)
Add GLSL translation rules for `SampleCmp`, `asint` and `asfloat`.
Diffstat (limited to 'source/slang/hlsl.meta.slang')
-rw-r--r--source/slang/hlsl.meta.slang20
1 files changed, 16 insertions, 4 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 541d12112..02eb332c8 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -368,10 +368,16 @@ bool any(matrix<T,N,M> x);
double asdouble(uint lowbits, uint highbits);
// Reinterpret bits as a float (HLSL SM 4.0)
+__target_intrinsic(glsl, intBitsToFloat)
float asfloat( int x);
+__target_intrinsic(glsl, uintBitsToFloat)
float asfloat(uint x);
-__generic<let N : int> vector<float,N> asfloat(vector< int,N> x);
-__generic<let N : int> vector<float,N> asfloat(vector<uint,N> x);
+__generic<let N : int>
+__target_intrinsic(glsl, intBitsAsFloat)
+vector<float,N> asfloat(vector< int,N> x);
+__generic<let N : int>
+__target_intrinsic(glsl, uintBitsAsFloat)
+vector<float,N> asfloat(vector<uint,N> x);
__generic<let N : int, let M : int> matrix<float,N,M> asfloat(matrix< int,N,M> x);
__generic<let N : int, let M : int> matrix<float,N,M> asfloat(matrix<uint,N,M> x);
@@ -382,10 +388,16 @@ __generic<T : __BuiltinFloatingPointType, let N : int> vector<T,N> asin(vector<T
__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> matrix<T,N,M> asin(matrix<T,N,M> x);
// Reinterpret bits as an int (HLSL SM 4.0)
+__target_intrinsic(glsl, floatBitsToInt)
int asint(float x);
+__target_intrinsic(glsl, "uint($0)")
int asint(uint x);
-__generic<let N : int> vector<int,N> asint(vector<float,N> x);
-__generic<let N : int> vector<int,N> asint(vector<uint,N> x);
+
+__generic<let N : int>
+__target_intrinsic(glsl, floatBitsToInt)
+vector<int,N> asint(vector<float,N> x);
+__generic<let N : int>
+vector<int,N> asint(vector<uint,N> x);
__generic<let N : int, let M : int> matrix<int,N,M> asint(matrix<float,N,M> x);
__generic<let N : int, let M : int> matrix<int,N,M> asint(matrix<uint,N,M> x);