Commit b6d7fa91 by John Kessenich

Merge pull request #117 from amdrexu/feature

SPV: Implement GLSL built-in bitcast functions.
parents 4f68b83e cbc426ee
...@@ -2531,6 +2531,13 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv: ...@@ -2531,6 +2531,13 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
unaryOp = spv::OpIsInf; unaryOp = spv::OpIsInf;
break; break;
case glslang::EOpFloatBitsToInt:
case glslang::EOpFloatBitsToUint:
case glslang::EOpIntBitsToFloat:
case glslang::EOpUintBitsToFloat:
unaryOp = spv::OpBitcast;
break;
case glslang::EOpPackSnorm2x16: case glslang::EOpPackSnorm2x16:
libCall = spv::GLSLstd450PackSnorm2x16; libCall = spv::GLSLstd450PackSnorm2x16;
break; break;
......
#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);
}
\ No newline at end of file
...@@ -30,6 +30,7 @@ spv.accessChain.frag ...@@ -30,6 +30,7 @@ spv.accessChain.frag
spv.aggOps.frag spv.aggOps.frag
spv.always-discard.frag spv.always-discard.frag
spv.always-discard2.frag spv.always-discard2.frag
spv.bitCast.frag
spv.bool.vert spv.bool.vert
spv.conditionalDiscard.frag spv.conditionalDiscard.frag
spv.conversion.frag spv.conversion.frag
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment