]> git.tdb.fi Git - libs/gl.git/blob - builtin_data/_builtin.glsl
Adjust GLSL builtins
[libs/gl.git] / builtin_data / _builtin.glsl
1 typedef vector(2) float vec2;
2 typedef vector(3) float vec3;
3 typedef vector(4) float vec4;
4 typedef vector(2) vec2 mat2;
5 typedef mat2 mat2x2;
6 typedef vector(3) vec2 mat3x2;
7 typedef vector(4) vec2 mat4x2;
8 typedef vector(2) vec3 mat2x3;
9 typedef vector(3) vec3 mat3;
10 typedef mat3 mat3x3;
11 typedef vector(4) vec3 mat4x3;
12 typedef vector(2) vec4 mat2x4;
13 typedef vector(3) vec4 mat3x4;
14 typedef vector(4) vec4 mat4;
15 typedef mat4 mat4x4;
16
17 typedef vector(2) int ivec2;
18 typedef vector(3) int ivec3;
19 typedef vector(4) int ivec4;
20
21 typedef vector(2) bool bvec2;
22 typedef vector(3) bool bvec3;
23 typedef vector(4) bool bvec4;
24
25 typedef image(dimensions=1, sampled) float sampler1D;
26 typedef image(dimensions=2, sampled) float sampler2D;
27 typedef image(dimensions=3, sampled) float sampler3D;
28 typedef image(dimensions=cube, sampled) float samplerCube;
29 typedef image(dimensions=1[], sampled) float sampler1DArray;
30 typedef image(dimensions=2[], sampled) float sampler2DArray;
31 typedef image(dimensions=cube[], sampled) float samplerCubeArray;
32 typedef image(dimensions=1, shadow, sampled) float sampler1DShadow;
33 typedef image(dimensions=2, shadow, sampled) float sampler2DShadow;
34 typedef image(dimensions=1[], shadow, sampled) float sampler1DArrayShadow;
35 typedef image(dimensions=2[], shadow, sampled) float sampler2DArrayShadow;
36 typedef image(dimensions=cube, shadow, sampled) float samplerCubeShadow;
37 typedef image(dimensions=cube[], shadow, sampled) float samplerCubeArrayShadow;
38
39 // BEGIN BUILTIN FUNCTIONS
40 float radians(float degrees);
41 vec2 radians(vec2 degrees);
42 vec3 radians(vec3 degrees);
43 vec4 radians(vec4 degrees);
44 float degrees(float radians);
45 vec2 degrees(vec2 radians);
46 vec3 degrees(vec3 radians);
47 vec4 degrees(vec4 radians);
48 float sin(float angle);
49 vec2 sin(vec2 angle);
50 vec3 sin(vec3 angle);
51 vec4 sin(vec4 angle);
52 float cos(float angle);
53 vec2 cos(vec2 angle);
54 vec3 cos(vec3 angle);
55 vec4 cos(vec4 angle);
56 float tan(float angle);
57 vec2 tan(vec2 angle);
58 vec3 tan(vec3 angle);
59 vec4 tan(vec4 angle);
60 float asin(float x);
61 vec2 asin(vec2 x);
62 vec3 asin(vec3 x);
63 vec4 asin(vec4 x);
64 float acos(float x);
65 vec2 acos(vec2 x);
66 vec3 acos(vec3 x);
67 vec4 acos(vec4 x);
68 float atan(float y, float x);
69 vec2 atan(vec2 y, vec2 x);
70 vec3 atan(vec3 y, vec3 x);
71 vec4 atan(vec4 y, vec4 x);
72 float atan(float y_over_x);
73 vec2 atan(vec2 y_over_x);
74 vec3 atan(vec3 y_over_x);
75 vec4 atan(vec4 y_over_x);
76 float sinh(float angle);
77 vec2 sinh(vec2 angle);
78 vec3 sinh(vec3 angle);
79 vec4 sinh(vec4 angle);
80 float cosh(float angle);
81 vec2 cosh(vec2 angle);
82 vec3 cosh(vec3 angle);
83 vec4 cosh(vec4 angle);
84 float tanh(float angle);
85 vec2 tanh(vec2 angle);
86 vec3 tanh(vec3 angle);
87 vec4 tanh(vec4 angle);
88 float asinh(float x);
89 vec2 asinh(vec2 x);
90 vec3 asinh(vec3 x);
91 vec4 asinh(vec4 x);
92 float acosh(float x);
93 vec2 acosh(vec2 x);
94 vec3 acosh(vec3 x);
95 vec4 acosh(vec4 x);
96 float atanh(float x);
97 vec2 atanh(vec2 x);
98 vec3 atanh(vec3 x);
99 vec4 atanh(vec4 x);
100 float pow(float x, float y);
101 vec2 pow(vec2 x, vec2 y);
102 vec3 pow(vec3 x, vec3 y);
103 vec4 pow(vec4 x, vec4 y);
104 float exp(float x);
105 vec2 exp(vec2 x);
106 vec3 exp(vec3 x);
107 vec4 exp(vec4 x);
108 float log(float x);
109 vec2 log(vec2 x);
110 vec3 log(vec3 x);
111 vec4 log(vec4 x);
112 float exp2(float x);
113 vec2 exp2(vec2 x);
114 vec3 exp2(vec3 x);
115 vec4 exp2(vec4 x);
116 float log2(float x);
117 vec2 log2(vec2 x);
118 vec3 log2(vec3 x);
119 vec4 log2(vec4 x);
120 float sqrt(float x);
121 vec2 sqrt(vec2 x);
122 vec3 sqrt(vec3 x);
123 vec4 sqrt(vec4 x);
124 float inversesqrt(float x);
125 vec2 inversesqrt(vec2 x);
126 vec3 inversesqrt(vec3 x);
127 vec4 inversesqrt(vec4 x);
128 float abs(float x);
129 vec2 abs(vec2 x);
130 vec3 abs(vec3 x);
131 vec4 abs(vec4 x);
132 int abs(int x);
133 ivec2 abs(ivec2 x);
134 ivec3 abs(ivec3 x);
135 ivec4 abs(ivec4 x);
136 float sign(float x);
137 vec2 sign(vec2 x);
138 vec3 sign(vec3 x);
139 vec4 sign(vec4 x);
140 int sign(int x);
141 ivec2 sign(ivec2 x);
142 ivec3 sign(ivec3 x);
143 ivec4 sign(ivec4 x);
144 float floor(float x);
145 vec2 floor(vec2 x);
146 vec3 floor(vec3 x);
147 vec4 floor(vec4 x);
148 float trunc(float x);
149 vec2 trunc(vec2 x);
150 vec3 trunc(vec3 x);
151 vec4 trunc(vec4 x);
152 float round(float x);
153 vec2 round(vec2 x);
154 vec3 round(vec3 x);
155 vec4 round(vec4 x);
156 float roundEven(float x);
157 vec2 roundEven(vec2 x);
158 vec3 roundEven(vec3 x);
159 vec4 roundEven(vec4 x);
160 float ceil(float x);
161 vec2 ceil(vec2 x);
162 vec3 ceil(vec3 x);
163 vec4 ceil(vec4 x);
164 float fract(float x);
165 vec2 fract(vec2 x);
166 vec3 fract(vec3 x);
167 vec4 fract(vec4 x);
168 float mod(float x, float y);
169 vec2 mod(vec2 x, vec2 y);
170 vec3 mod(vec3 x, vec3 y);
171 vec4 mod(vec4 x, vec4 y);
172 vec2 mod(vec2 x, float y) { return mod(x, vec2(y)); }
173 vec3 mod(vec3 x, float y) { return mod(x, vec3(y)); }
174 vec4 mod(vec4 x, float y) { return mod(x, vec4(y)); }
175 float min(float x, float y);
176 vec2 min(vec2 x, vec2 y);
177 vec3 min(vec3 x, vec3 y);
178 vec4 min(vec4 x, vec4 y);
179 int min(int x, int y);
180 ivec2 min(ivec2 x, ivec2 y);
181 ivec3 min(ivec3 x, ivec3 y);
182 ivec4 min(ivec4 x, ivec4 y);
183 vec2 min(vec2 x, float y) { return min(x, vec2(y)); }
184 vec3 min(vec3 x, float y) { return min(x, vec3(y)); }
185 vec4 min(vec4 x, float y) { return min(x, vec4(y)); }
186 ivec2 min(ivec2 x, int y) { return min(x, ivec2(y)); }
187 ivec3 min(ivec3 x, int y) { return min(x, ivec3(y)); }
188 ivec4 min(ivec4 x, int y) { return min(x, ivec4(y)); }
189 float max(float x, float y);
190 vec2 max(vec2 x, vec2 y);
191 vec3 max(vec3 x, vec3 y);
192 vec4 max(vec4 x, vec4 y);
193 int max(int x, int y);
194 ivec2 max(ivec2 x, ivec2 y);
195 ivec3 max(ivec3 x, ivec3 y);
196 ivec4 max(ivec4 x, ivec4 y);
197 vec2 max(vec2 x, float y) { return max(x, vec2(y)); }
198 vec3 max(vec3 x, float y) { return max(x, vec3(y)); }
199 vec4 max(vec4 x, float y) { return max(x, vec4(y)); }
200 ivec2 max(ivec2 x, int y) { return max(x, ivec2(y)); }
201 ivec3 max(ivec3 x, int y) { return max(x, ivec3(y)); }
202 ivec4 max(ivec4 x, int y) { return max(x, ivec4(y)); }
203 float clamp(float x, float minVal, float maxVal);
204 vec2 clamp(vec2 x, vec2 minVal, vec2 maxVal);
205 vec3 clamp(vec3 x, vec3 minVal, vec3 maxVal);
206 vec4 clamp(vec4 x, vec4 minVal, vec4 maxVal);
207 int clamp(int x, int minVal, int maxVal);
208 ivec2 clamp(ivec2 x, ivec2 minVal, ivec2 maxVal);
209 ivec3 clamp(ivec3 x, ivec3 minVal, ivec3 maxVal);
210 ivec4 clamp(ivec4 x, ivec4 minVal, ivec4 maxVal);
211 vec2 clamp(vec2 x, float minVal, float maxVal) { return clamp(x, vec2(minVal), vec2(maxVal)); }
212 vec3 clamp(vec3 x, float minVal, float maxVal) { return clamp(x, vec3(minVal), vec3(maxVal)); }
213 vec4 clamp(vec4 x, float minVal, float maxVal) { return clamp(x, vec4(minVal), vec4(maxVal)); }
214 ivec2 clamp(ivec2 x, int minVal, int maxVal) { return clamp(x, ivec2(minVal), ivec2(maxVal)); }
215 ivec3 clamp(ivec3 x, int minVal, int maxVal) { return clamp(x, ivec3(minVal), ivec3(maxVal)); }
216 ivec4 clamp(ivec4 x, int minVal, int maxVal) { return clamp(x, ivec4(minVal), ivec4(maxVal)); }
217 float mix(float x, float y, float a);
218 vec2 mix(vec2 x, vec2 y, vec2 a);
219 vec3 mix(vec3 x, vec3 y, vec3 a);
220 vec4 mix(vec4 x, vec4 y, vec4 a);
221 float mix(float x, float y, float a) { return mix(x, y, float(a)); }
222 vec2 mix(vec2 x, vec2 y, float a) { return mix(x, y, vec2(a)); }
223 vec3 mix(vec3 x, vec3 y, float a) { return mix(x, y, vec3(a)); }
224 vec4 mix(vec4 x, vec4 y, float a) { return mix(x, y, vec4(a)); }
225 float mix(float x, float y, bool a);
226 vec2 mix(vec2 x, vec2 y, bvec2 a);
227 vec3 mix(vec3 x, vec3 y, bvec3 a);
228 vec4 mix(vec4 x, vec4 y, bvec4 a);
229 int mix(int x, int y, bool a);
230 ivec2 mix(ivec2 x, ivec2 y, bvec2 a);
231 ivec3 mix(ivec3 x, ivec3 y, bvec3 a);
232 ivec4 mix(ivec4 x, ivec4 y, bvec4 a);
233 float step(float edge, float x);
234 vec2 step(vec2 edge, vec2 x);
235 vec3 step(vec3 edge, vec3 x);
236 vec4 step(vec4 edge, vec4 x);
237 vec2 step(float edge, vec2 x) { return step(vec2(edge), x); }
238 vec3 step(float edge, vec3 x) { return step(vec3(edge), x); }
239 vec4 step(float edge, vec4 x) { return step(vec4(edge), x); }
240 float smoothstep(float edge0, float edge1, float x);
241 vec2 smoothstep(vec2 edge0, vec2 edge1, vec2 x);
242 vec3 smoothstep(vec3 edge0, vec3 edge1, vec3 x);
243 vec4 smoothstep(vec4 edge0, vec4 edge1, vec4 x);
244 vec2 smoothstep(float edge0, float edge1, vec2 x) { return smoothstep(vec2(edge0), vec2(edge1), x); }
245 vec3 smoothstep(float edge0, float edge1, vec3 x) { return smoothstep(vec3(edge0), vec3(edge1), x); }
246 vec4 smoothstep(float edge0, float edge1, vec4 x) { return smoothstep(vec4(edge0), vec4(edge1), x); }
247 bool isnan(float x);
248 bvec2 isnan(vec2 x);
249 bvec3 isnan(vec3 x);
250 bvec4 isnan(vec4 x);
251 bool isinf(float x);
252 bvec2 isinf(vec2 x);
253 bvec3 isinf(vec3 x);
254 bvec4 isinf(vec4 x);
255 float fma(float a, float b, float c);
256 vec2 fma(vec2 a, vec2 b, vec2 c);
257 vec3 fma(vec3 a, vec3 b, vec3 c);
258 vec4 fma(vec4 a, vec4 b, vec4 c);
259 float length(float x);
260 float length(vec2 x);
261 float length(vec3 x);
262 float length(vec4 x);
263 float distance(float p0, float p1);
264 float distance(vec2 p0, vec2 p1);
265 float distance(vec3 p0, vec3 p1);
266 float distance(vec4 p0, vec4 p1);
267 float dot(float x, float y);
268 float dot(vec2 x, vec2 y);
269 float dot(vec3 x, vec3 y);
270 float dot(vec4 x, vec4 y);
271 vec3 cross(vec3 x);
272 float normalize(float x);
273 vec2 normalize(vec2 x);
274 vec3 normalize(vec3 x);
275 vec4 normalize(vec4 x);
276 float faceforward(float N, float I, float Nref);
277 vec2 faceforward(vec2 N, vec2 I, vec2 Nref);
278 vec3 faceforward(vec3 N, vec3 I, vec3 Nref);
279 vec4 faceforward(vec4 N, vec4 I, vec4 Nref);
280 float reflect(float I, float N);
281 vec2 reflect(vec2 I, vec2 N);
282 vec3 reflect(vec3 I, vec3 N);
283 vec4 reflect(vec4 I, vec4 N);
284 float refract(float I, float N, float eta);
285 vec2 refract(vec2 I, vec2 N, float eta);
286 vec3 refract(vec3 I, vec3 N, float eta);
287 vec4 refract(vec4 I, vec4 N, float eta);
288 mat2 matrixCompMult(mat2 x, mat2 y);
289 mat3 matrixCompMult(mat3 x, mat3 y);
290 mat4 matrixCompMult(mat4 x, mat4 y);
291 mat2x3 matrixCompMult(mat2x3 x, mat2x3 y);
292 mat3x2 matrixCompMult(mat3x2 x, mat3x2 y);
293 mat2x4 matrixCompMult(mat2x4 x, mat2x4 y);
294 mat4x2 matrixCompMult(mat4x2 x, mat4x2 y);
295 mat3x4 matrixCompMult(mat3x4 x, mat3x4 y);
296 mat4x3 matrixCompMult(mat4x3 x, mat4x3 y);
297 mat2 outerProduct(vec2 c, vec2 r);
298 mat3 outerProduct(vec3 c, vec3 r);
299 mat4 outerProduct(vec4 c, vec4 r);
300 mat2x3 outerProduct(vec3 c, vec2 r);
301 mat3x2 outerProduct(vec2 c, vec3 r);
302 mat2x4 outerProduct(vec4 c, vec2 r);
303 mat4x2 outerProduct(vec2 c, vec4 r);
304 mat3x4 outerProduct(vec4 c, vec3 r);
305 mat4x3 outerProduct(vec3 c, vec4 r);
306 mat2 transpose(mat2 m);
307 mat3 transpose(mat3 m);
308 mat4 transpose(mat4 m);
309 mat3x2 transpose(mat2x3 m);
310 mat2x3 transpose(mat3x2 m);
311 mat4x2 transpose(mat2x4 m);
312 mat2x4 transpose(mat4x2 m);
313 mat4x3 transpose(mat3x4 m);
314 mat3x4 transpose(mat4x3 m);
315 mat2 determinant(mat2 m);
316 mat3 determinant(mat3 m);
317 mat4 determinant(mat4 m);
318 mat2 inverse(mat2 m);
319 mat3 inverse(mat3 m);
320 mat4 inverse(mat4 m);
321 bvec2 lessThan(vec2 x, vec2 y);
322 bvec3 lessThan(vec3 x, vec3 y);
323 bvec4 lessThan(vec4 x, vec4 y);
324 bvec2 lessThan(ivec2 x, ivec2 y);
325 bvec3 lessThan(ivec3 x, ivec3 y);
326 bvec4 lessThan(ivec4 x, ivec4 y);
327 bvec2 lessThanEqual(vec2 x, vec2 y);
328 bvec3 lessThanEqual(vec3 x, vec3 y);
329 bvec4 lessThanEqual(vec4 x, vec4 y);
330 bvec2 lessThanEqual(ivec2 x, ivec2 y);
331 bvec3 lessThanEqual(ivec3 x, ivec3 y);
332 bvec4 lessThanEqual(ivec4 x, ivec4 y);
333 bvec2 greaterThan(vec2 x, vec2 y);
334 bvec3 greaterThan(vec3 x, vec3 y);
335 bvec4 greaterThan(vec4 x, vec4 y);
336 bvec2 greaterThan(ivec2 x, ivec2 y);
337 bvec3 greaterThan(ivec3 x, ivec3 y);
338 bvec4 greaterThan(ivec4 x, ivec4 y);
339 bvec2 greaterThanEqual(vec2 x, vec2 y);
340 bvec3 greaterThanEqual(vec3 x, vec3 y);
341 bvec4 greaterThanEqual(vec4 x, vec4 y);
342 bvec2 greaterThanEqual(ivec2 x, ivec2 y);
343 bvec3 greaterThanEqual(ivec3 x, ivec3 y);
344 bvec4 greaterThanEqual(ivec4 x, ivec4 y);
345 bvec2 equal(vec2 x, vec2 y);
346 bvec3 equal(vec3 x, vec3 y);
347 bvec4 equal(vec4 x, vec4 y);
348 bvec2 equal(ivec2 x, ivec2 y);
349 bvec3 equal(ivec3 x, ivec3 y);
350 bvec4 equal(ivec4 x, ivec4 y);
351 bvec2 notEqual(vec2 x, vec2 y);
352 bvec3 notEqual(vec3 x, vec3 y);
353 bvec4 notEqual(vec4 x, vec4 y);
354 bvec2 notEqual(ivec2 x, ivec2 y);
355 bvec3 notEqual(ivec3 x, ivec3 y);
356 bvec4 notEqual(ivec4 x, ivec4 y);
357 bool any(bvec2 x);
358 bool any(bvec3 x);
359 bool any(bvec4 x);
360 bool all(bvec2 x);
361 bool all(bvec3 x);
362 bool all(bvec4 x);
363 bool not(bvec2 x);
364 bool not(bvec3 x);
365 bool not(bvec4 x);
366 int bitfieldExtract(int value, int offset, int bits);
367 ivec2 bitfieldExtract(ivec2 value, int offset, int bits);
368 ivec3 bitfieldExtract(ivec3 value, int offset, int bits);
369 ivec4 bitfieldExtract(ivec4 value, int offset, int bits);
370 int bitfieldInsert(int value, int insert, int offset, int bits);
371 ivec2 bitfieldInsert(ivec2 value, ivec2 insert, int offset, int bits);
372 ivec3 bitfieldInsert(ivec3 value, ivec3 insert, int offset, int bits);
373 ivec4 bitfieldInsert(ivec4 value, ivec4 insert, int offset, int bits);
374 int bitfieldReverse(int value);
375 ivec2 bitfieldReverse(ivec2 value);
376 ivec3 bitfieldReverse(ivec3 value);
377 ivec4 bitfieldReverse(ivec4 value);
378 int bitCount(int value);
379 ivec2 bitCount(ivec2 value);
380 ivec3 bitCount(ivec3 value);
381 ivec4 bitCount(ivec4 value);
382 int findLSB(int value);
383 ivec2 findLSB(ivec2 value);
384 ivec3 findLSB(ivec3 value);
385 ivec4 findLSB(ivec4 value);
386 int findMSB(int value);
387 ivec2 findMSB(ivec2 value);
388 ivec3 findMSB(ivec3 value);
389 ivec4 findMSB(ivec4 value);
390 int textureSize(sampler1D sampler, int lod);
391 ivec2 textureSize(sampler2D sampler, int lod);
392 ivec3 textureSize(sampler3D sampler, int lod);
393 ivec2 textureSize(sampler1DArray sampler, int lod);
394 ivec3 textureSize(sampler2DArray sampler, int lod);
395 ivec2 textureSize(samplerCube sampler, int lod);
396 ivec3 textureSize(samplerCubeArray sampler, int lod);
397 int textureSize(sampler1DShadow sampler, int lod);
398 ivec2 textureSize(sampler2DShadow sampler, int lod);
399 ivec2 textureSize(samplerCubeShadow sampler, int lod);
400 ivec2 textureSize(sampler1DArrayShadow sampler, int lod);
401 ivec3 textureSize(sampler2DArrayShadow sampler, int lod);
402 ivec3 textureSize(samplerCubeArrayShadow sampler, int lod);
403 vec4 texture(sampler1D sampler, float P);
404 vec4 texture(sampler2D sampler, vec2 P);
405 vec4 texture(sampler3D sampler, vec3 P);
406 vec4 texture(sampler1DArray sampler, vec2 P);
407 vec4 texture(sampler2DArray sampler, vec3 P);
408 vec4 texture(samplerCube sampler, vec3 P);
409 vec4 texture(samplerCubeArray sampler, vec4 P);
410 float texture(sampler1DShadow sampler, vec3 P);
411 float texture(sampler2DShadow sampler, vec3 P);
412 float texture(samplerCubeShadow sampler, vec4 P);
413 float texture(sampler1DArrayShadow sampler, vec3 P);
414 float texture(sampler2DArrayShadow sampler, vec4 P);
415 float texture(samplerCubeArrayShadow sampler, vec4 P, float compare);
416 vec4 textureLod(sampler1D sampler, float P, float lod);
417 vec4 textureLod(sampler2D sampler, vec2 P, float lod);
418 vec4 textureLod(sampler3D sampler, vec3 P, float lod);
419 vec4 textureLod(sampler1DArray sampler, vec2 P, float lod);
420 vec4 textureLod(sampler2DArray sampler, vec3 P, float lod);
421 vec4 textureLod(samplerCube sampler, vec3 P, float lod);
422 vec4 textureLod(samplerCubeArray sampler, vec4 P, float lod);
423 vec4 texelFetch(sampler1D sampler, int P, int lod);
424 vec4 texelFetch(sampler2D sampler, ivec2 P, int lod);
425 vec4 texelFetch(sampler3D sampler, ivec3 P, int lod);
426 vec4 texelFetch(sampler1DArray sampler, ivec2 P, int lod);
427 vec4 texelFetch(sampler2DArray sampler, ivec3 P, int lod);
428 // END BUILTIN FUNCTIONS
429
430 #pragma MSP stage(vertex)
431 in int gl_VertexID;
432 in int gl_InstanceID;
433 out gl_PerVertex
434 {
435   vec4 gl_Position;
436   float gl_PointSize;
437   float gl_ClipDistance[];
438 };
439
440 #pragma MSP stage(geometry)
441 in gl_PerVertex
442 {
443   vec4 gl_Position;
444   float gl_PointSize;
445   float gl_ClipDistance[];
446 } gl_in[];
447 in int gl_PrimitiveIDIn;
448 in int gl_InvocationID;
449 out gl_PerVertex
450 {
451   vec4 gl_Position;
452   float gl_PointSize;
453   float gl_ClipDistance[];
454 };
455 out int gl_PrimitiveID;
456 out int gl_Layer;
457
458 void EmitVertex();
459 void EndPrimitive();
460
461 #pragma MSP stage(fragment)
462 // BEGIN BUILTIN FRAGMENT FUNCTIONS
463 float dFdx(float p);
464 vec2 dFdx(vec2 p);
465 vec3 dFdx(vec3 p);
466 vec4 dFdx(vec4 p);
467 float dFdy(float p);
468 vec2 dFdy(vec2 p);
469 vec3 dFdy(vec3 p);
470 vec4 dFdy(vec4 p);
471 float dFdxFine(float p);
472 vec2 dFdxFine(vec2 p);
473 vec3 dFdxFine(vec3 p);
474 vec4 dFdxFine(vec4 p);
475 float dFdyFine(float p);
476 vec2 dFdyFine(vec2 p);
477 vec3 dFdyFine(vec3 p);
478 vec4 dFdyFine(vec4 p);
479 float dFdxCoarse(float p);
480 vec2 dFdxCoarse(vec2 p);
481 vec3 dFdxCoarse(vec3 p);
482 vec4 dFdxCoarse(vec4 p);
483 float dFdyCoarse(float p);
484 vec2 dFdyCoarse(vec2 p);
485 vec3 dFdyCoarse(vec3 p);
486 vec4 dFdyCoarse(vec4 p);
487 float fwidth(float p);
488 vec2 fwidth(vec2 p);
489 vec3 fwidth(vec3 p);
490 vec4 fwidth(vec4 p);
491 float fwidthFine(float p);
492 vec2 fwidthFine(vec2 p);
493 vec3 fwidthFine(vec3 p);
494 vec4 fwidthFine(vec4 p);
495 float fwidthCoarse(float p);
496 vec2 fwidthCoarse(vec2 p);
497 vec3 fwidthCoarse(vec3 p);
498 vec4 fwidthCoarse(vec4 p);
499 float interpolateAtCentroid(float interpolant);
500 vec2 interpolateAtCentroid(vec2 interpolant);
501 vec3 interpolateAtCentroid(vec3 interpolant);
502 vec4 interpolateAtCentroid(vec4 interpolant);
503 float interpolateAtSample(float interpolant, int sample);
504 vec2 interpolateAtSample(vec2 interpolant, int sample);
505 vec3 interpolateAtSample(vec3 interpolant, int sample);
506 vec4 interpolateAtSample(vec4 interpolant, int sample);
507 float interpolateAtOffset(float interpolant, vec2 offset);
508 vec2 interpolateAtOffset(vec2 interpolant, vec2 offset);
509 vec3 interpolateAtOffset(vec3 interpolant, vec2 offset);
510 vec4 interpolateAtOffset(vec4 interpolant, vec2 offset);
511 // END BUILTIN FRAGMENT FUNCTIONS
512
513 in vec4 gl_FragCoord;
514 in bool gl_FrontFacing;
515 in float gl_ClipDistance[];
516 in vec2 gl_PointCoord;
517 in int gl_PrimitiveID;
518 in int gl_SampleID;
519 in vec2 gl_SamplePosition;
520 in int gl_Layer;
521 out float gl_FragDepth;