summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-stdlib.cpp
diff options
context:
space:
mode:
authorTim Foley <tfoley@nvidia.com>2017-07-11 13:08:42 -0700
committerTim Foley <tfoley@nvidia.com>2017-07-11 14:46:48 -0700
commit88ccba175ee2c7a0748690395de9ce7defb466e1 (patch)
tree07870578a1390a19900197e751fc3f19707f195a /source/slang/slang-stdlib.cpp
parent20aac944ed3d5ab2af89ee0425af06768253fdbd (diff)
Add GLSL lowerings for `ddx*` and `ddy*`
Diffstat (limited to 'source/slang/slang-stdlib.cpp')
-rw-r--r--source/slang/slang-stdlib.cpp90
1 files changed, 72 insertions, 18 deletions
diff --git a/source/slang/slang-stdlib.cpp b/source/slang/slang-stdlib.cpp
index 09958ddab..bcc87b201 100644
--- a/source/slang/slang-stdlib.cpp
+++ b/source/slang/slang-stdlib.cpp
@@ -399,29 +399,83 @@ __generic<T : __BuiltinArithmeticType> __intrinsic vector<T,3> cross(vector<T,3>
__intrinsic int4 D3DCOLORtoUBYTE4(float4 x);
// Partial-difference derivatives
-__generic<T : __BuiltinFloatingPointType> __intrinsic T ddx(T x);
-__generic<T : __BuiltinFloatingPointType, let N : int> __intrinsic vector<T,N> ddx(vector<T,N> x);
-__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> __intrinsic matrix<T,N,M> ddx(matrix<T,N,M> x);
+__generic<T : __BuiltinFloatingPointType>
+__intrinsic(glsl, dFdx)
+__intrinsic
+T ddx(T x);
+__generic<T : __BuiltinFloatingPointType, let N : int>
+__intrinsic(glsl, dFdx)
+__intrinsic
+vector<T,N> ddx(vector<T,N> x);
+__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
+__intrinsic(glsl, dFdx)
+__intrinsic
+matrix<T,N,M> ddx(matrix<T,N,M> x);
-__generic<T : __BuiltinFloatingPointType> __intrinsic T ddx_coarse(T x);
-__generic<T : __BuiltinFloatingPointType, let N : int> __intrinsic vector<T,N> ddx_coarse(vector<T,N> x);
-__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> __intrinsic matrix<T,N,M> ddx_coarse(matrix<T,N,M> x);
+__generic<T : __BuiltinFloatingPointType>
+__intrinsic(glsl, dFdxCoarse)
+__intrinsic
+T ddx_coarse(T x);
+__generic<T : __BuiltinFloatingPointType, let N : int>
+__intrinsic(glsl, dFdxCoarse)
+__intrinsic
+vector<T,N> ddx_coarse(vector<T,N> x);
+__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
+__intrinsic(glsl, dFdxCoarse)
+__intrinsic
+matrix<T,N,M> ddx_coarse(matrix<T,N,M> x);
-__generic<T : __BuiltinFloatingPointType> __intrinsic T ddx_fine(T x);
-__generic<T : __BuiltinFloatingPointType, let N : int> __intrinsic vector<T,N> ddx_fine(vector<T,N> x);
-__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> __intrinsic matrix<T,N,M> ddx_fine(matrix<T,N,M> x);
+__generic<T : __BuiltinFloatingPointType>
+__intrinsic(glsl, dFdxFine)
+__intrinsic
+T ddx_fine(T x);
+__generic<T : __BuiltinFloatingPointType, let N : int>
+__intrinsic(glsl, dFdxFine)
+__intrinsic
+vector<T,N> ddx_fine(vector<T,N> x);
+__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
+__intrinsic(glsl, dFdxFine)
+__intrinsic
+matrix<T,N,M> ddx_fine(matrix<T,N,M> x);
-__generic<T : __BuiltinFloatingPointType> __intrinsic T ddy(T x);
-__generic<T : __BuiltinFloatingPointType, let N : int> __intrinsic vector<T,N> ddy(vector<T,N> x);
-__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> __intrinsic matrix<T,N,M> ddy(matrix<T,N,M> x);
+__generic<T : __BuiltinFloatingPointType>
+__intrinsic(glsl, dFdy)
+__intrinsic
+T ddy(T x);
+__generic<T : __BuiltinFloatingPointType, let N : int>
+__intrinsic(glsl, dFdy)
+__intrinsic
+vector<T,N> ddy(vector<T,N> x);
+__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
+__intrinsic(glsl, dFdy)
+__intrinsic
+ matrix<T,N,M> ddy(matrix<T,N,M> x);
-__generic<T : __BuiltinFloatingPointType> __intrinsic T ddy_coarse(T x);
-__generic<T : __BuiltinFloatingPointType, let N : int> __intrinsic vector<T,N> ddy_coarse(vector<T,N> x);
-__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> __intrinsic matrix<T,N,M> ddy_coarse(matrix<T,N,M> x);
+__generic<T : __BuiltinFloatingPointType>
+__intrinsic(glsl, dFdyCoarse)
+__intrinsic
+T ddy_coarse(T x);
+__generic<T : __BuiltinFloatingPointType, let N : int>
+__intrinsic(glsl, dFdyCoarse)
+__intrinsic
+vector<T,N> ddy_coarse(vector<T,N> x);
+__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
+__intrinsic(glsl, dFdyCoarse)
+__intrinsic
+matrix<T,N,M> ddy_coarse(matrix<T,N,M> x);
-__generic<T : __BuiltinFloatingPointType> __intrinsic T ddy_fine(T x);
-__generic<T : __BuiltinFloatingPointType, let N : int> __intrinsic vector<T,N> ddy_fine(vector<T,N> x);
-__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> __intrinsic matrix<T,N,M> ddy_fine(matrix<T,N,M> x);
+__generic<T : __BuiltinFloatingPointType>
+__intrinsic(glsl, dFdyFine)
+__intrinsic
+T ddy_fine(T x);
+__generic<T : __BuiltinFloatingPointType, let N : int>
+__intrinsic(glsl, dFdyFine)
+__intrinsic
+vector<T,N> ddy_fine(vector<T,N> x);
+__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
+__intrinsic(glsl, dFdyFine)
+__intrinsic
+matrix<T,N,M> ddy_fine(matrix<T,N,M> x);
// Radians to degrees