#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))); } }