mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2025-02-17 02:26:20 +01:00
![Crementif](/assets/img/avatar_default.png)
Since I wanted to make sure that I didn't broke the shaders after converting the shaders to Vulkan, we need to check if all the shaders weren't broken. Since we're talking about like 400 shaders checking all of them is pretty much impossible and even then, So, the obvious solution was to automate the checking. Not as simple as you'd think, because in 300 of our shaders we use preset variables which without replacing the value like Cemu does, will make the shader error regardless. So I also implemented some functionality that would read the preset values and types out of the rules.txt file and replace them in the shaders using that information. And then we use Khronos' glslang to compile the shaders, using both OpenGL and Vulkan. The result was that glslang found quite a few errors in some of the shaders, which I fixed in this commit. I'm considering adding this rules.txt parsing and automated shader compilation testing to the build process. Also, I fixed Clarity's name and description since Monochromia isn't available anymore and Xenoblade's resolution pack had a lot of weird blank lines before their #version declaration, which my converter didn't like.
399 lines
17 KiB
Plaintext
399 lines
17 KiB
Plaintext
#version 420
|
|
#extension GL_ARB_texture_gather : enable
|
|
#extension GL_ARB_separate_shader_objects : enable
|
|
// shader 2a8afa64e98f2977
|
|
layout(binding = 1, std140) uniform uniformBlockVS1
|
|
{
|
|
vec4 uf_blockVS1[1024];
|
|
};
|
|
|
|
layout(binding = 2, std140) uniform uniformBlockVS2
|
|
{
|
|
vec4 uf_blockVS2[1024];
|
|
};
|
|
|
|
layout(binding = 4, std140) uniform uniformBlockVS4
|
|
{
|
|
vec4 uf_blockVS4[1024];
|
|
};
|
|
|
|
uniform vec2 uf_windowSpaceToClipSpaceTransform;
|
|
layout(location = 0) in uvec4 attrDataSem0;
|
|
layout(location = 1) in uvec4 attrDataSem1;
|
|
layout(location = 2) in uvec4 attrDataSem2;
|
|
layout(location = 3) in uvec4 attrDataSem3;
|
|
out gl_PerVertex
|
|
{
|
|
vec4 gl_Position;
|
|
float gl_PointSize;
|
|
};
|
|
int clampFI32(int v)
|
|
{
|
|
if( v == 0x7FFFFFFF )
|
|
return floatBitsToInt(1.0);
|
|
else if( v == 0xFFFFFFFF )
|
|
return floatBitsToInt(0.0);
|
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
|
}
|
|
float mul_nonIEEE(float a, float b){ return min(a*b,min(abs(a)*3.40282347E+38F,abs(b)*3.40282347E+38F)); }
|
|
void main()
|
|
{
|
|
ivec4 R0i = ivec4(0);
|
|
ivec4 R1i = ivec4(0);
|
|
ivec4 R2i = ivec4(0);
|
|
ivec4 R3i = ivec4(0);
|
|
ivec4 R4i = ivec4(0);
|
|
ivec4 R5i = ivec4(0);
|
|
ivec4 R6i = ivec4(0);
|
|
ivec4 R7i = ivec4(0);
|
|
ivec4 R8i = ivec4(0);
|
|
ivec4 R9i = ivec4(0);
|
|
ivec4 R10i = ivec4(0);
|
|
ivec4 R11i = ivec4(0);
|
|
ivec4 R12i = ivec4(0);
|
|
ivec4 R13i = ivec4(0);
|
|
ivec4 R14i = ivec4(0);
|
|
ivec4 R15i = ivec4(0);
|
|
ivec4 R16i = ivec4(0);
|
|
ivec4 R17i = ivec4(0);
|
|
ivec4 R18i = ivec4(0);
|
|
ivec4 R123i = ivec4(0);
|
|
ivec4 R124i = ivec4(0);
|
|
ivec4 R125i = ivec4(0);
|
|
ivec4 R126i = ivec4(0);
|
|
ivec4 R127i = ivec4(0);
|
|
uvec4 attrDecoder;
|
|
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
|
|
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
|
|
int PS0i = 0, PS1i = 0;
|
|
ivec4 tempi = ivec4(0);
|
|
float tempResultf;
|
|
int tempResulti;
|
|
ivec4 ARi = ivec4(0);
|
|
bool predResult = true;
|
|
vec3 cubeMapSTM;
|
|
int cubeMapFaceId;
|
|
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
|
|
attrDecoder.xyz = attrDataSem0.xyz;
|
|
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
|
|
attrDecoder.w = 0;
|
|
R4i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), floatBitsToInt(1.0));
|
|
attrDecoder.xyzw = attrDataSem2.xyzw;
|
|
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
|
|
attrDecoder.xyzw = floatBitsToUint(vec4(attrDataSem1.xyzw)/255.0);
|
|
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
|
|
attrDecoder.x = attrDataSem3.x;
|
|
attrDecoder.x = (attrDecoder.x>>24)|((attrDecoder.x>>8)&0xFF00)|((attrDecoder.x<<8)&0xFF0000)|((attrDecoder.x<<24));
|
|
attrDecoder.y = 0;
|
|
attrDecoder.z = 0;
|
|
attrDecoder.w = 0;
|
|
attrDecoder.xyzw = uvec4((attrDecoder.x>>0)&0x3FF,(attrDecoder.x>>10)&0x3FF,(attrDecoder.x>>20)&0x3FF,(attrDecoder.x>>30)&0x3);
|
|
if( (attrDecoder.x&0x200) != 0 ) attrDecoder.x |= 0xFFFFFC00;
|
|
if( (attrDecoder.y&0x200) != 0 ) attrDecoder.y |= 0xFFFFFC00;
|
|
if( (attrDecoder.z&0x200) != 0 ) attrDecoder.z |= 0xFFFFFC00;
|
|
attrDecoder.x = floatBitsToUint(max(float(int(attrDecoder.x))/511.0,-1.0));
|
|
attrDecoder.y = floatBitsToUint(max(float(int(attrDecoder.y))/511.0,-1.0));
|
|
attrDecoder.z = floatBitsToUint(max(float(int(attrDecoder.z))/511.0,-1.0));
|
|
attrDecoder.w = floatBitsToUint(float(attrDecoder.w));
|
|
R3i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
|
|
// 0
|
|
R18i.x = floatBitsToInt(1.0);
|
|
R4i.w = 0x3f800000;
|
|
R0i.y = R1i.y * 0x00000003;
|
|
PS0i = R0i.y;
|
|
// 1
|
|
R0i.x = PS0i + int(1);
|
|
R0i.w = PS0i + 0x00000002;
|
|
R0i.z = R1i.x * 0x00000003;
|
|
PS1i = R0i.z;
|
|
// 2
|
|
R5i.x = PS1i + 0x00000002;
|
|
R5i.y = PS1i + int(1);
|
|
R6i.x = R1i.z * 0x00000003;
|
|
PS0i = R6i.x;
|
|
// 3
|
|
backupReg0i = R1i.w;
|
|
R1i.z = PS0i + 0x00000002;
|
|
R1i.w = PS0i + int(1);
|
|
R3i.w = backupReg0i * 0x00000003;
|
|
PS1i = R3i.w;
|
|
R7i.xyzw = floatBitsToInt(uf_blockVS2[R0i.y].xyzw);
|
|
R8i.xyzw = floatBitsToInt(uf_blockVS2[R0i.x].xyzw);
|
|
R9i.xyzw = floatBitsToInt(uf_blockVS2[R0i.w].xyzw);
|
|
R0i.xyzw = floatBitsToInt(uf_blockVS2[R0i.z].xyzw);
|
|
R10i.xyzw = floatBitsToInt(uf_blockVS2[R5i.y].xyzw);
|
|
R11i.xyzw = floatBitsToInt(uf_blockVS2[R5i.x].xyzw);
|
|
R12i.xyzw = floatBitsToInt(uf_blockVS2[R6i.x].xyzw);
|
|
R13i.xyzw = floatBitsToInt(uf_blockVS2[R1i.w].xyzw);
|
|
R14i.xyzw = floatBitsToInt(uf_blockVS2[R1i.z].xyzw);
|
|
// 0
|
|
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R7i.x)));
|
|
R5i.y = R3i.w + 0x00000002;
|
|
R1i.z = R3i.w + int(1);
|
|
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R7i.y)));
|
|
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R7i.z)));
|
|
PS0i = R5i.z;
|
|
// 1
|
|
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R8i.z)));
|
|
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R7i.w)));
|
|
R7i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R8i.y)));
|
|
R7i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R8i.x)));
|
|
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R8i.w)));
|
|
PS1i = R8i.x;
|
|
R15i.xyzw = floatBitsToInt(uf_blockVS2[R3i.w].xyzw);
|
|
R16i.xyzw = floatBitsToInt(uf_blockVS2[R1i.z].xyzw);
|
|
R17i.xyzw = floatBitsToInt(uf_blockVS2[R5i.y].xyzw);
|
|
// 0
|
|
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R9i.z)));
|
|
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R9i.y)));
|
|
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R9i.x)));
|
|
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R9i.w)));
|
|
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R0i.x)));
|
|
PS0i = R127i.y;
|
|
// 1
|
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R0i.y)));
|
|
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R10i.x)));
|
|
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R0i.w)));
|
|
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R0i.z)));
|
|
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R10i.y)));
|
|
PS1i = R126i.w;
|
|
// 2
|
|
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R11i.y)));
|
|
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R10i.w)));
|
|
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R10i.z)));
|
|
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R11i.x)));
|
|
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R11i.z)));
|
|
PS0i = R10i.y;
|
|
// 3
|
|
backupReg0i = R127i.x;
|
|
backupReg1i = R127i.y;
|
|
backupReg2i = R127i.z;
|
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R11i.w)));
|
|
R127i.yzw = floatBitsToInt(vec3(intBitsToFloat(R5i.z),intBitsToFloat(R1i.w),intBitsToFloat(R6i.x)) + vec3(intBitsToFloat(R127i.w),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i)));
|
|
R124i.x = floatBitsToInt(intBitsToFloat(R7i.y) + intBitsToFloat(backupReg2i));
|
|
PS1i = R124i.x;
|
|
// 4
|
|
backupReg0i = R7i.x;
|
|
backupReg1i = R125i.w;
|
|
R7i.x = floatBitsToInt(intBitsToFloat(R8i.x) + intBitsToFloat(R125i.y));
|
|
R125i.y = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R126i.z));
|
|
R126i.z = floatBitsToInt(intBitsToFloat(R7i.z) + intBitsToFloat(R126i.w));
|
|
R125i.w = floatBitsToInt(intBitsToFloat(R7i.w) + intBitsToFloat(R126i.y));
|
|
R7i.w = floatBitsToInt(intBitsToFloat(R125i.z) + intBitsToFloat(backupReg1i));
|
|
PS0i = R7i.w;
|
|
// 5
|
|
backupReg0i = R10i.y;
|
|
R8i.x = floatBitsToInt(intBitsToFloat(R124i.w) + intBitsToFloat(R127i.x));
|
|
R10i.y = floatBitsToInt(intBitsToFloat(R125i.x) + intBitsToFloat(backupReg0i));
|
|
R124i.z = floatBitsToInt(intBitsToFloat(R124i.y) + intBitsToFloat(R126i.x));
|
|
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R12i.y)));
|
|
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R12i.z)));
|
|
PS1i = R124i.y;
|
|
// 6
|
|
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R12i.w)));
|
|
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R13i.y)));
|
|
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R13i.x)));
|
|
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R12i.x)));
|
|
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R13i.z)));
|
|
PS0i = R126i.x;
|
|
// 7
|
|
backupReg0i = R13i.w;
|
|
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R14i.y)));
|
|
R13i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R14i.x)));
|
|
R13i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R14i.z)));
|
|
R13i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(backupReg0i)));
|
|
R14i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R14i.w)));
|
|
PS1i = R14i.z;
|
|
// 8
|
|
backupReg0i = R127i.x;
|
|
backupReg1i = R127i.y;
|
|
backupReg2i = R127i.z;
|
|
backupReg3i = R127i.w;
|
|
backupReg4i = R126i.z;
|
|
R127i.xyz = floatBitsToInt(vec3(intBitsToFloat(backupReg0i),intBitsToFloat(R124i.y),intBitsToFloat(R126i.w)) + vec3(intBitsToFloat(R124i.x),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i)));
|
|
R127i.w = floatBitsToInt(intBitsToFloat(R124i.w) + intBitsToFloat(backupReg3i));
|
|
R126i.z = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(backupReg4i));
|
|
PS0i = R126i.z;
|
|
// 9
|
|
R124i.x = floatBitsToInt(intBitsToFloat(R13i.w) + intBitsToFloat(R7i.x));
|
|
R126i.y = floatBitsToInt(intBitsToFloat(R126i.x) + intBitsToFloat(R125i.y));
|
|
R12i.z = floatBitsToInt(intBitsToFloat(R13i.y) + intBitsToFloat(R7i.w));
|
|
R124i.w = floatBitsToInt(intBitsToFloat(R125i.z) + intBitsToFloat(R125i.w));
|
|
R7i.z = floatBitsToInt(intBitsToFloat(R125i.x) + intBitsToFloat(R124i.z));
|
|
PS1i = R7i.z;
|
|
// 10
|
|
backupReg0i = R8i.x;
|
|
backupReg1i = R10i.y;
|
|
R8i.x = floatBitsToInt(intBitsToFloat(R14i.z) + intBitsToFloat(backupReg0i));
|
|
R10i.y = floatBitsToInt(intBitsToFloat(R13i.z) + intBitsToFloat(backupReg1i));
|
|
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R15i.x)));
|
|
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R15i.y)));
|
|
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R15i.z)));
|
|
PS0i = R126i.x;
|
|
// 11
|
|
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R16i.y)));
|
|
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R16i.x)));
|
|
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R16i.z)));
|
|
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R15i.w)));
|
|
R15i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R16i.w)));
|
|
PS1i = R15i.z;
|
|
// 12
|
|
backupReg0i = R125i.z;
|
|
backupReg1i = R127i.w;
|
|
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R17i.x)));
|
|
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R17i.w)));
|
|
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R17i.z)));
|
|
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R17i.y)));
|
|
R17i.x = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(backupReg1i));
|
|
PS0i = R17i.x;
|
|
// 13
|
|
backupReg0i = R127i.y;
|
|
backupReg1i = R126i.w;
|
|
backupReg2i = R127i.x;
|
|
R127i.xyz = floatBitsToInt(vec3(intBitsToFloat(R125i.y),intBitsToFloat(R125i.w),intBitsToFloat(R126i.x)) + vec3(intBitsToFloat(R124i.w),intBitsToFloat(R127i.z),intBitsToFloat(backupReg0i)));
|
|
R126i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(backupReg2i));
|
|
R125i.y = floatBitsToInt(intBitsToFloat(R125i.x) + intBitsToFloat(R126i.z));
|
|
PS1i = R125i.y;
|
|
// 14
|
|
backupReg0i = R124i.z;
|
|
backupReg1i = R126i.y;
|
|
R126i.x = floatBitsToInt(intBitsToFloat(R2i.x) + intBitsToFloat(R12i.z));
|
|
R126i.y = floatBitsToInt(intBitsToFloat(R124i.y) + intBitsToFloat(R8i.x));
|
|
R124i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(backupReg1i));
|
|
R125i.w = floatBitsToInt(intBitsToFloat(R15i.z) + intBitsToFloat(R124i.x));
|
|
// 15
|
|
backupReg0i = R125i.z;
|
|
R124i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(R7i.z));
|
|
R125i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R10i.y));
|
|
// 16
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),intBitsToFloat(R4i.w)),vec4(intBitsToFloat(R17i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),intBitsToFloat(R126i.w))));
|
|
PV0i.x = tempi.x;
|
|
PV0i.y = tempi.x;
|
|
PV0i.z = tempi.x;
|
|
PV0i.w = tempi.x;
|
|
R7i.z = tempi.x;
|
|
// 17
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),intBitsToFloat(R4i.w)),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R125i.y),intBitsToFloat(R124i.z),intBitsToFloat(R125i.w))));
|
|
PV1i.x = tempi.x;
|
|
PV1i.y = tempi.x;
|
|
PV1i.z = tempi.x;
|
|
PV1i.w = tempi.x;
|
|
R10i.y = tempi.x;
|
|
R124i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + uf_blockVS4[0].x);
|
|
PS1i = R124i.x;
|
|
// 18
|
|
backupReg0i = R4i.w;
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),intBitsToFloat(backupReg0i)),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R124i.y),intBitsToFloat(R125i.z),intBitsToFloat(R126i.y))));
|
|
PV0i.x = tempi.x;
|
|
PV0i.y = tempi.x;
|
|
PV0i.z = tempi.x;
|
|
PV0i.w = tempi.x;
|
|
R4i.w = tempi.x;
|
|
// 19
|
|
R126i.y = floatBitsToInt(-(intBitsToFloat(R10i.y)) + uf_blockVS4[0].y);
|
|
PV1i.y = R126i.y;
|
|
R126i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + uf_blockVS4[0].z);
|
|
PV1i.z = R126i.z;
|
|
// 20
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
|
|
PV0i.x = tempi.x;
|
|
PV0i.y = tempi.x;
|
|
PV0i.z = tempi.x;
|
|
PV0i.w = tempi.x;
|
|
// 21
|
|
R125i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),-0.0),vec4(intBitsToFloat(R17i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),0.0)));
|
|
PV1i.x = R125i.x;
|
|
PV1i.y = R125i.x;
|
|
PV1i.z = R125i.x;
|
|
PV1i.w = R125i.x;
|
|
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
|
|
R125i.w = floatBitsToInt(tempResultf);
|
|
PS1i = R125i.w;
|
|
// 22
|
|
backupReg0i = R125i.y;
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(backupReg0i),intBitsToFloat(R124i.z),0.0)));
|
|
PV0i.x = tempi.x;
|
|
PV0i.y = tempi.x;
|
|
PV0i.z = tempi.x;
|
|
PV0i.w = tempi.x;
|
|
R125i.y = tempi.x;
|
|
R17i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PS1i)));
|
|
PS0i = R17i.x;
|
|
// 23
|
|
backupReg0i = R125i.z;
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R124i.y),intBitsToFloat(backupReg0i),0.0)));
|
|
PV1i.x = tempi.x;
|
|
PV1i.y = tempi.x;
|
|
PV1i.z = tempi.x;
|
|
PV1i.w = tempi.x;
|
|
R125i.z = tempi.x;
|
|
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R125i.w)));
|
|
PS1i = R3i.y;
|
|
// 24
|
|
R3i.x = floatBitsToInt(intBitsToFloat(R125i.y) * intBitsToFloat(0xbc23d70a));
|
|
PV0i.y = floatBitsToInt(intBitsToFloat(R125i.x) * intBitsToFloat(0xbc23d70a));
|
|
R3i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(R125i.w)));
|
|
PV0i.z = R3i.z;
|
|
R2i.w = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0xbc23d70a));
|
|
// 25
|
|
backupReg0i = R7i.z;
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R17i.x),intBitsToFloat(R3i.y),intBitsToFloat(PV0i.z),0.0)));
|
|
PV1i.x = tempi.x;
|
|
PV1i.y = tempi.x;
|
|
PV1i.z = tempi.x;
|
|
PV1i.w = tempi.x;
|
|
R7i.z = tempi.x;
|
|
R4i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV0i.y));
|
|
PS1i = R4i.z;
|
|
// 0
|
|
R125i.x = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(R2i.w));
|
|
R125i.y = floatBitsToInt(intBitsToFloat(R10i.y) + intBitsToFloat(R3i.x));
|
|
PV0i.w = ((intBitsToFloat(R7i.z) > 0.0)?int(0xFFFFFFFF):int(0x0));
|
|
// 1
|
|
R123i.z = ((PV0i.w == 0)?(floatBitsToInt(uf_blockVS4[0].w)):(0));
|
|
PV1i.z = R123i.z;
|
|
// 2
|
|
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.y), intBitsToFloat(PV1i.z)));
|
|
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.x), intBitsToFloat(PV1i.z)));
|
|
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV1i.z)));
|
|
// 3
|
|
backupReg0i = R125i.y;
|
|
backupReg1i = R125i.x;
|
|
R125i.xyz = floatBitsToInt(vec3(intBitsToFloat(R4i.z),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i)) + vec3(intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.w)));
|
|
PV1i.x = R125i.x;
|
|
PV1i.y = R125i.y;
|
|
PV1i.z = R125i.z;
|
|
// 4
|
|
R4i.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),intBitsToFloat(R18i.x)),vec4(uf_blockVS1[8].x,uf_blockVS1[8].y,uf_blockVS1[8].z,uf_blockVS1[8].w)));
|
|
PV0i.x = R4i.x;
|
|
PV0i.y = R4i.x;
|
|
PV0i.z = R4i.x;
|
|
PV0i.w = R4i.x;
|
|
// 5
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),intBitsToFloat(R18i.x)),vec4(uf_blockVS1[9].x,uf_blockVS1[9].y,uf_blockVS1[9].z,uf_blockVS1[9].w)));
|
|
PV1i.x = tempi.x;
|
|
PV1i.y = tempi.x;
|
|
PV1i.z = tempi.x;
|
|
PV1i.w = tempi.x;
|
|
R4i.y = tempi.x;
|
|
// 6
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),intBitsToFloat(R18i.x)),vec4(uf_blockVS1[10].x,uf_blockVS1[10].y,uf_blockVS1[10].z,uf_blockVS1[10].w)));
|
|
PV0i.x = tempi.x;
|
|
PV0i.y = tempi.x;
|
|
PV0i.z = tempi.x;
|
|
PV0i.w = tempi.x;
|
|
R4i.z = tempi.x;
|
|
// 7
|
|
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),intBitsToFloat(R18i.x)),vec4(uf_blockVS1[11].x,uf_blockVS1[11].y,uf_blockVS1[11].z,uf_blockVS1[11].w)));
|
|
PV1i.x = tempi.x;
|
|
PV1i.y = tempi.x;
|
|
PV1i.z = tempi.x;
|
|
PV1i.w = tempi.x;
|
|
R4i.w = tempi.x;
|
|
// export
|
|
gl_Position = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
|
|
// export
|
|
// skipped export to semanticId 255
|
|
// 0
|
|
}
|