mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 19:40:06 +00:00
52c59ecd3d
The restriction of no swizzling and no struct fields as an interpolant were not being checked when using the ES profile. Fixes #3277.
74 lines
1.9 KiB
GLSL
74 lines
1.9 KiB
GLSL
#version 320 es
|
|
|
|
struct S
|
|
{
|
|
highp float a;
|
|
highp float b;
|
|
};
|
|
layout(location = 0) in S v_var;
|
|
|
|
layout(location = 2) in highp float v;
|
|
|
|
struct S0 {
|
|
highp vec4 s_v;
|
|
};
|
|
|
|
layout(location = 3) in FIn {
|
|
highp float x;
|
|
highp vec4 xyz[1];
|
|
S0 s0;
|
|
};
|
|
|
|
layout(location = 7) in highp float z[1];
|
|
|
|
layout(location = 8) in highp vec4 w;
|
|
|
|
layout(location = 0) out mediump vec4 fragColor;
|
|
void main (void)
|
|
{
|
|
// Centroid
|
|
{
|
|
// valid
|
|
fragColor = vec4(interpolateAtCentroid(v));
|
|
fragColor = vec4(interpolateAtCentroid(x));
|
|
fragColor = vec4(interpolateAtCentroid(z[0]));
|
|
fragColor = interpolateAtCentroid(w);
|
|
fragColor = interpolateAtCentroid(xyz[0]);
|
|
|
|
//// invalid
|
|
fragColor = vec4(interpolateAtCentroid(v_var.a));
|
|
fragColor = vec4(interpolateAtCentroid(w.x));
|
|
fragColor = vec4(interpolateAtCentroid(s0.s_v));
|
|
}
|
|
|
|
// Sample
|
|
{
|
|
// valid
|
|
fragColor = vec4(interpolateAtSample(v, 0));
|
|
fragColor = vec4(interpolateAtSample(x, 0));
|
|
fragColor = vec4(interpolateAtSample(z[0], 0));
|
|
fragColor = interpolateAtSample(w, 0);
|
|
fragColor = interpolateAtSample(xyz[0], 0);
|
|
|
|
// invalid
|
|
fragColor = vec4(interpolateAtSample(v_var.a, 0));
|
|
fragColor = vec4(interpolateAtSample(w.x, 0));
|
|
fragColor = vec4(interpolateAtSample(s0.s_v, 0));
|
|
}
|
|
|
|
// Offset
|
|
{
|
|
// valid
|
|
fragColor = vec4(interpolateAtOffset(v, vec2(0)));
|
|
fragColor = vec4(interpolateAtOffset(x, vec2(0)));
|
|
fragColor = vec4(interpolateAtOffset(z[0], vec2(0)));
|
|
fragColor = interpolateAtOffset(w, vec2(0));
|
|
fragColor = interpolateAtOffset(xyz[0], vec2(0));
|
|
|
|
// invalid
|
|
fragColor = vec4(interpolateAtOffset(v_var.a, vec2(0)));
|
|
fragColor = vec4(interpolateAtOffset(w.x, vec2(0)));
|
|
fragColor = vec4(interpolateAtOffset(s0.s_v, vec2(0)));
|
|
}
|
|
}
|