SPV: Implement GLSL built-in bitcast functions.
This commit is contained in:
45
Test/spv.bitCast.frag
Normal file
45
Test/spv.bitCast.frag
Normal file
@@ -0,0 +1,45 @@
|
||||
#version 450
|
||||
|
||||
uniform int i1;
|
||||
uniform ivec2 i2;
|
||||
uniform ivec3 i3;
|
||||
uniform ivec4 i4;
|
||||
|
||||
uniform uint u1;
|
||||
uniform uvec2 u2;
|
||||
uniform uvec3 u3;
|
||||
uniform uvec4 u4;
|
||||
|
||||
uniform float f1;
|
||||
uniform vec2 f2;
|
||||
uniform vec3 f3;
|
||||
uniform 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);
|
||||
}
|
||||
Reference in New Issue
Block a user