#version 450 flat in int i1; flat in ivec2 i2; flat in ivec3 i3; flat in ivec4 i4; flat in uint u1; flat in uvec2 u2; flat in uvec3 u3; flat in uvec4 u4; in float f1; in vec2 f2; in vec3 f3; in vec4 f4; out vec4 fragColor; void main() { ivec4 idata = ivec4(0); idata.x += floatBitsToInt(f1); idata.xy += floatBitsToInt(f2); idata.xyz += floatBitsToInt(f3); idata += floatBitsToInt(f4); uvec4 udata = uvec4(0); udata.x += floatBitsToUint(f1); udata.xy += floatBitsToUint(f2); udata.xyz += floatBitsToUint(f3); udata += floatBitsToUint(f4); vec4 fdata = vec4(0.0); fdata.x += intBitsToFloat(i1); fdata.xy += intBitsToFloat(i2); fdata.xyz += intBitsToFloat(i3); fdata += intBitsToFloat(i4); fdata.x += uintBitsToFloat(u1); fdata.xy += uintBitsToFloat(u2); fdata.xyz += uintBitsToFloat(u3); fdata += uintBitsToFloat(u4); fragColor = (idata == udata) ? fdata : fdata + vec4(0.2); }