yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
7d7027853
master
1//TEST:SIMPLE(filecheck=CHECK_HLSL): -target hlsl -stage fragment -entry main 2//TEST:SIMPLE(filecheck=CHECK_SPV): -target spirv -emit-spirv-directly -stage fragment -entry main 3//TEST:SIMPLE(filecheck=CHECK_GLSL): -target glsl -stage fragment -entry main 4 5bool testFragmentProcessingDerivativeFunctionsScalar() 6{ 7// CHECK_HLSL: ddx 8// CHECK_SPV: OpDPdx 9// CHECK_GLSL: dFdx 10// CHECK_HLSL: ddy 11// CHECK_SPV: OpDPdy 12// CHECK_GLSL: dFdy 13// CHECK_HLSL: ddx_fine 14// CHECK_SPV: OpDPdxFine 15// CHECK_GLSL: dFdxFine 16// CHECK_HLSL: ddy_fine 17// CHECK_SPV: OpDPdyFine 18// CHECK_GLSL: dFdyFine 19// CHECK_HLSL: ddx_coarse 20// CHECK_SPV: OpDPdxCoarse 21// CHECK_GLSL: dFdxCoarse 22// CHECK_HLSL: ddy_coarse 23// CHECK_SPV: OpDPdyCoarse 24// CHECK_GLSL: dFdyCoarse 25// CHECK_HLSL: fwidth 26// CHECK_SPV: OpFwidth 27// CHECK_GLSL: fwidth 28// CHECK_HLSL: abs(ddx_fine({{.*}})) + abs(ddy_fine({{.*}})) 29// CHECK_SPV: OpFwidthFine 30// CHECK_GLSL: fwidthFine 31// CHECK_HLSL: abs(ddx_coarse({{.*}})) + abs(ddy_coarse({{.*}})) 32// CHECK_SPV: OpFwidthCoarse 33// CHECK_GLSL: fwidthCoarse 34 return true 35 && ddx(1.0f) != -1.0f 36 && ddy(1.0f) != -1.0f 37 && ddx_fine(1.0f) != -1.0f 38 && ddy_fine(1.0f) != -1.0f 39 && ddx_coarse(1.0f) != -1.0f 40 && ddy_coarse(1.0f) != -1.0f 41 && fwidth(1.0f) != -1.0f 42 && fwidth_fine(1.0f) != -1.0f 43 && fwidth_coarse(1.0f) != -1.0f 44 ; 45} 46__generic<let N:int> 47bool testFragmentProcessingDerivativeFunctionsVector() 48{ 49// CHECK_HLSL: ddx 50// CHECK_SPV: OpDPdx 51// CHECK_GLSL: dFdx 52// CHECK_HLSL: ddy 53// CHECK_SPV: OpDPdy 54// CHECK_GLSL: dFdy 55// CHECK_HLSL: ddx_fine 56// CHECK_SPV: OpDPdxFine 57// CHECK_GLSL: dFdxFine 58// CHECK_HLSL: ddy_fine 59// CHECK_SPV: OpDPdyFine 60// CHECK_GLSL: dFdyFine 61// CHECK_HLSL: ddx_coarse 62// CHECK_SPV: OpDPdxCoarse 63// CHECK_GLSL: dFdxCoarse 64// CHECK_HLSL: ddy_coarse 65// CHECK_SPV: OpDPdyCoarse 66// CHECK_GLSL: dFdyCoarse 67// CHECK_HLSL: fwidth 68// CHECK_SPV: OpFwidth 69// CHECK_GLSL: fwidth 70// CHECK_HLSL: abs(ddx_fine({{.*}})) + abs(ddy_fine({{.*}})) 71// CHECK_SPV: OpFwidthFine 72// CHECK_GLSL: fwidthFine 73// CHECK_HLSL: abs(ddx_coarse({{.*}})) + abs(ddy_coarse({{.*}})) 74// CHECK_SPV: OpFwidthCoarse 75// CHECK_GLSL: fwidthCoarse 76 return true 77 && all(ddx(vector<float,N>(1.0f)) != vector<float,N>(-1.0f)) 78 && all(ddy(vector<float,N>(1.0f)) != vector<float,N>(-1.0f)) 79 && all(ddx_fine(vector<float,N>(1.0f)) != vector<float,N>(-1.0f)) 80 && all(ddy_fine(vector<float,N>(1.0f)) != vector<float,N>(-1.0f)) 81 && all(ddx_coarse(vector<float,N>(1.0f)) != vector<float,N>(-1.0f)) 82 && all(ddy_coarse(vector<float,N>(1.0f)) != vector<float,N>(-1.0f)) 83 && all(fwidth(vector<float,N>(1.0f)) != vector<float,N>(-1.0f)) 84 && all(fwidth_fine(vector<float,N>(1.0f)) != vector<float,N>(-1.0f)) 85 && all(fwidth_coarse(vector<float,N>(1.0f)) != vector<float,N>(-1.0f)) 86 ; 87} 88 89bool testFragmentProcessingFunctions() 90{ 91 return true 92 && testFragmentProcessingDerivativeFunctionsScalar() 93 && testFragmentProcessingDerivativeFunctionsVector<2>() 94 && testFragmentProcessingDerivativeFunctionsVector<3>() 95 && testFragmentProcessingDerivativeFunctionsVector<4>() 96 ; 97 ; 98} 99 100[shader("pixel")] 101int4 main() : SV_Target { 102 return int4(true 103 && testFragmentProcessingFunctions() 104 ); 105}