yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

pdeayton-nvAdd fwidth_coarse and fwidth_fine functions (#6941)7d7027853

master
1.8 KiB82 linesraw
1//TEST:SIMPLE(filecheck=CHECK): -stage fragment -target spirv -emit-spirv-directly -entry main
2
3RWStructuredBuffer<float> output;
4
5void main()
6{
7    {
8        // CHECK: OpFwidth
9        float w = 1.0;
10        float b = fwidth(w);
11        output[0] = b;
12
13        // CHECK: OpDPdx
14        float b1 = ddx(w);
15        output[1] = b1;
16        // CHECK: OpDPdy
17        float b2 = ddy(w);
18        output[2] = b2;
19
20        // CHECK: OpFwidthCoarse
21        float b3 = fwidth_coarse(w);
22        output[3] = b3;
23
24        // CHECK: OpDPdxCoarse
25        float b4 = ddx_coarse(w);
26        output[4] = b4;
27
28        // CHECK: OpDPdyCoarse
29        float b5 = ddy_coarse(w);
30        output[5] = b5;
31
32        // CHECK: OpFwidthFine
33        float b6 = fwidth_fine(w);
34        output[6] = b6;
35
36        // CHECK: OpDPdxFine
37        float b7 = ddx_fine(w);
38        output[7] = b7;
39
40        // CHECK: OpDPdyFine
41        float b8 = ddy_fine(w);
42        output[8] = b8;
43    }
44
45    {
46        // CHECK: OpFwidth
47        float3 w = 1.0;
48        float3 b = fwidth(w);
49        output[9] = b.x;
50
51        // CHECK: OpDPdx
52        float3 b1 = ddx(w);
53        output[10] = b1.x;
54        // CHECK: OpDPdy
55        float3 b2 = ddy(w);
56        output[11] = b2.x;
57
58        // CHECK: OpFwidthCoarse
59        float3 b3 = fwidth_coarse(w);
60        output[12] = b3.x;
61
62        // CHECK: OpDPdxCoarse
63        float3 b4 = ddx_coarse(w);
64        output[13] = b4.x;
65
66        // CHECK: OpDPdyCoarse
67        float3 b5 = ddy_coarse(w);
68        output[14] = b5.x;
69
70        // CHECK: OpFwidthFine
71        float3 b6 = fwidth_fine(w);
72        output[15] = b6.x;
73
74        // CHECK: OpDPdxFine
75        float3 b7 = ddx_fine(w);
76        output[16] = b7.x;
77
78        // CHECK: OpDPdyFine
79        float3 b8 = ddy_fine(w);
80        output[17] = b8.x;
81    }
82}