• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#version 450
2#extension GL_NV_compute_shader_derivatives : require
3
4layout (local_size_x = 2, local_size_y = 4) in;
5layout(derivative_group_quadsNV) in;
6
7buffer block {
8  float fDerivativeX;
9  float fDerivativeY;
10  float fDerivativeWidth;
11  float fCoarseDerivativeX;
12  float fCoarseDerivativeY;
13  float fCoarseDerivativeWidth;
14  float fFineDerivativeX;
15  float fFineDerivativeY;
16  float fFineDerivativeWidth;
17
18  float fX;
19  float fY;
20
21
22  vec2 v2DerivativeX;
23  vec2 v2DerivativeY;
24  vec2 v2DerivativeWidth;
25  vec2 v2CoarseDerivativeX;
26  vec2 v2CoarseDerivativeY;
27  vec2 v2CoarseDerivativeWidth;
28  vec2 v2FineDerivativeX;
29  vec2 v2FineDerivativeY;
30  vec2 v2FineDerivativeWidth;
31
32  vec2 v2X;
33  vec2 v2Y;
34
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
50  vec4 v4DerivativeX;
51  vec4 v4DerivativeY;
52  vec4 v4DerivativeWidth;
53  vec4 v4CoarseDerivativeX;
54  vec4 v4CoarseDerivativeY;
55  vec4 v4CoarseDerivativeWidth;
56  vec4 v4FineDerivativeX;
57  vec4 v4FineDerivativeY;
58  vec4 v4FineDerivativeWidth;
59
60  vec4 v4X;
61  vec4 v4Y;
62};
63
64void main(){
65    fDerivativeX = dFdx(fX);
66    fDerivativeY = dFdy(fY);
67    fDerivativeWidth = fwidth(fX);
68    fCoarseDerivativeX = dFdxCoarse(fX);
69    fCoarseDerivativeY = dFdyCoarse(fY);
70    fCoarseDerivativeWidth = fwidthCoarse(fX);
71    fFineDerivativeX = dFdxFine(fX);
72    fFineDerivativeY = dFdyFine(fY);
73    fFineDerivativeWidth = fwidthFine(fX);
74
75    v2DerivativeX = dFdx(v2X);
76    v2DerivativeY = dFdy(v2Y);
77    v2DerivativeWidth = fwidth(v2X);
78    v2CoarseDerivativeX = dFdxCoarse(v2X);
79    v2CoarseDerivativeY = dFdyCoarse(v2Y);
80    v2CoarseDerivativeWidth = fwidthCoarse(v2X);
81    v2FineDerivativeX = dFdxFine(v2X);
82    v2FineDerivativeY = dFdyFine(v2Y);
83    v2FineDerivativeWidth = fwidthFine(v2X);
84
85
86    v3DerivativeX = dFdx(v3X);
87    v3DerivativeY = dFdy(v3Y);
88    v3DerivativeWidth = fwidth(v3X);
89    v3CoarseDerivativeX = dFdxCoarse(v3X);
90    v3CoarseDerivativeY = dFdyCoarse(v3Y);
91    v3CoarseDerivativeWidth = fwidthCoarse(v3X);
92    v3FineDerivativeX = dFdxFine(v3X);
93    v3FineDerivativeY = dFdyFine(v3Y);
94    v3FineDerivativeWidth = fwidthFine(v3X);
95
96
97    v4DerivativeX = dFdx(v4X);
98    v4DerivativeY = dFdy(v4Y);
99    v4DerivativeWidth = fwidth(v4X);
100    v4CoarseDerivativeX = dFdxCoarse(v4X);
101    v4CoarseDerivativeY = dFdyCoarse(v4Y);
102    v4CoarseDerivativeWidth = fwidthCoarse(v4X);
103    v4FineDerivativeX = dFdxFine(v4X);
104    v4FineDerivativeY = dFdyFine(v4Y);
105    v4FineDerivativeWidth = fwidthFine(v4X);
106}
107