
Setting component=0 is later taken to mean the shader did so, which is not always legal. It should instead set the component as not set by the shader.
67 lines
1.6 KiB
GLSL
67 lines
1.6 KiB
GLSL
#version 450 core
|
|
|
|
in float in1;
|
|
in vec2 in2;
|
|
in vec3 in3;
|
|
in vec4 in4;
|
|
|
|
void main()
|
|
{
|
|
vec2 v2 = dFdxFine(in2);
|
|
vec3 v3 = dFdyCoarse(in3);
|
|
vec4 v4 = fwidth(in4);
|
|
v4 = dFdyFine(in4);
|
|
v3 = dFdyFine(in3);
|
|
float f = dFdx(in1) + dFdxFine(in1) + dFdxCoarse(in1);
|
|
v4 = fwidthCoarse(in4) + fwidthFine(in4);
|
|
|
|
float cull = gl_CullDistance[2];
|
|
float consts = gl_MaxCullDistances + gl_MaxCombinedClipAndCullDistances + gl_MaxSamples;
|
|
|
|
if (gl_HelperInvocation)
|
|
++v4;
|
|
|
|
int sum = gl_MaxVertexImageUniforms +
|
|
gl_MaxFragmentImageUniforms +
|
|
gl_MaxComputeImageUniforms +
|
|
gl_MaxCombinedImageUniforms +
|
|
gl_MaxCombinedShaderOutputResources;
|
|
|
|
bool b1, b3, b;
|
|
uint uin;
|
|
bvec2 b2 = mix(bvec2(b1), bvec2(b3), bvec2(b));
|
|
uint um = mix(uin, uin, b);
|
|
ivec3 im3 = mix(ivec3(uin), ivec3(uin), bvec3(b));
|
|
}
|
|
|
|
uniform sampler2DMS s2dms;
|
|
uniform usampler2DMSArray us2dmsa;
|
|
layout(rgba32i) uniform iimage2DMS ii2dms;
|
|
layout(rgba32f) uniform image2DMSArray i2dmsa;
|
|
|
|
void foo()
|
|
{
|
|
int s = textureSamples(s2dms);
|
|
s += textureSamples(us2dmsa);
|
|
s += imageSamples(ii2dms);
|
|
s += imageSamples(i2dmsa);
|
|
float f = imageAtomicExchange(i2dmsa, ivec3(in3), 2, 4.5);
|
|
}
|
|
|
|
in float gl_CullDistance[6];
|
|
|
|
float cull(int i)
|
|
{
|
|
return (i >= 6) ? gl_CullDistance[5] : gl_CullDistance[i];
|
|
}
|
|
|
|
layout(location = 6) in bName1 {
|
|
float f;
|
|
layout(location = 7) float g;
|
|
mat4 m;
|
|
} bInst1;
|
|
layout(location = 12) in bName2 {
|
|
float f;
|
|
layout(location = 13) float g; // ERROR, location on array
|
|
} bInst2[3];
|