yum-mirror/glslang

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

janharaldAdding support for GL_KHR_compute_shader_derivatives91bfd96a

main
2.8 KiB110 linesraw
1#version 450
2#extension GL_KHR_compute_shader_derivatives : require
3
4layout(local_size_x = 2, local_size_y = 2) in;
5layout(derivative_group_quadsKHR) in;
6
7layout(binding = 0) uniform sampler2D tex;
8
9layout(binding = 1, std430) buffer block {
10  float fDerivativeX;
11  float fDerivativeY;
12  float fDerivativeWidth;
13  float fCoarseDerivativeX;
14  float fCoarseDerivativeY;
15  float fCoarseDerivativeWidth;
16  float fFineDerivativeX;
17  float fFineDerivativeY;
18  float fFineDerivativeWidth;
19
20  float fX;
21  float fY;
22
23  vec2 v2DerivativeX;
24  vec2 v2DerivativeY;
25  vec2 v2DerivativeWidth;
26  vec2 v2CoarseDerivativeX;
27  vec2 v2CoarseDerivativeY;
28  vec2 v2CoarseDerivativeWidth;
29  vec2 v2FineDerivativeX;
30  vec2 v2FineDerivativeY;
31  vec2 v2FineDerivativeWidth;
32
33  vec2 v2X;
34  vec2 v2Y;
35
36  vec3 v3DerivativeX;
37  vec3 v3DerivativeY;
38  vec3 v3DerivativeWidth;
39  vec3 v3CoarseDerivativeX;
40  vec3 v3CoarseDerivativeY;
41  vec3 v3CoarseDerivativeWidth;
42  vec3 v3FineDerivativeX;
43  vec3 v3FineDerivativeY;
44  vec3 v3FineDerivativeWidth;
45
46  vec3 v3X;
47  vec3 v3Y;
48
49  vec4 v4DerivativeX;
50  vec4 v4DerivativeY;
51  vec4 v4DerivativeWidth;
52  vec4 v4CoarseDerivativeX;
53  vec4 v4CoarseDerivativeY;
54  vec4 v4CoarseDerivativeWidth;
55  vec4 v4FineDerivativeX;
56  vec4 v4FineDerivativeY;
57  vec4 v4FineDerivativeWidth;
58
59  vec4 v4X;
60  vec4 v4Y;
61
62  vec4 color;
63  vec2 lod;
64};
65
66void main()
67{
68    fDerivativeX = dFdx(fX);
69    fDerivativeY = dFdy(fY);
70    fDerivativeWidth = fwidth(fX);
71    fCoarseDerivativeX = dFdxCoarse(fX);
72    fCoarseDerivativeY = dFdyCoarse(fY);
73    fCoarseDerivativeWidth = fwidthCoarse(fX);
74    fFineDerivativeX = dFdxFine(fX);
75    fFineDerivativeY = dFdyFine(fY);
76    fFineDerivativeWidth = fwidthFine(fX);
77
78    v2DerivativeX = dFdx(v2X);
79    v2DerivativeY = dFdy(v2Y);
80    v2DerivativeWidth = fwidth(v2X);
81    v2CoarseDerivativeX = dFdxCoarse(v2X);
82    v2CoarseDerivativeY = dFdyCoarse(v2Y);
83    v2CoarseDerivativeWidth = fwidthCoarse(v2X);
84    v2FineDerivativeX = dFdxFine(v2X);
85    v2FineDerivativeY = dFdyFine(v2Y);
86    v2FineDerivativeWidth = fwidthFine(v2X);
87
88    v3DerivativeX = dFdx(v3X);
89    v3DerivativeY = dFdy(v3Y);
90    v3DerivativeWidth = fwidth(v3X);
91    v3CoarseDerivativeX = dFdxCoarse(v3X);
92    v3CoarseDerivativeY = dFdyCoarse(v3Y);
93    v3CoarseDerivativeWidth = fwidthCoarse(v3X);
94    v3FineDerivativeX = dFdxFine(v3X);
95    v3FineDerivativeY = dFdyFine(v3Y);
96    v3FineDerivativeWidth = fwidthFine(v3X);
97
98    v4DerivativeX = dFdx(v4X);
99    v4DerivativeY = dFdy(v4Y);
100    v4DerivativeWidth = fwidth(v4X);
101    v4CoarseDerivativeX = dFdxCoarse(v4X);
102    v4CoarseDerivativeY = dFdyCoarse(v4Y);
103    v4CoarseDerivativeWidth = fwidthCoarse(v4X);
104    v4FineDerivativeX = dFdxFine(v4X);
105    v4FineDerivativeY = dFdyFine(v4Y);
106    v4FineDerivativeWidth = fwidthFine(v4X);
107
108    color = texture(tex, vec2(0.5), 0.25);
109    lod = textureQueryLod(tex, vec2(0.5));
110}