From 8fa52937c9873ad5e2c17afa6ab8ab6e1bd9756f Mon Sep 17 00:00:00 2001
From: getdls <cztemplatetest@gmail.com>
Date: Sun, 18 Mar 2018 12:22:26 +0100
Subject: [PATCH] [XCX] Alignment cleanup + 8k fix inital commit

Fixes alignment drifting on higher resolutions.  By replacing with fixes
earlier in the rendering pipe.
This should also improve a lot of light leaking, but full res tweak will
be in upcoming commits.

As this is the initial commit, skell view may still be off and some
specific shadow fixes will probably be retired.
---
 .../2dc235c41abee590_0000000000000000_vs.txt  | 109 ------------------
 .../3cf2d31fbf321520_0000000000000000_vs.txt  |  60 ----------
 .../497a209b49886520_0000000000000000_vs.txt  |  14 +--
 .../4cb7bbd82d381167_0000000000000000_vs.txt  |  72 ------------
 .../4f557f00a56c6358_0000000000000000_vs.txt  |   4 +-
 .../72387b8c3f18030f_0000000000000000_vs.txt  |  64 ----------
 .../94d235f07b93ad2f_0000000000000000_vs.txt  | 109 ------------------
 .../9dc2d340255dee89_0000000000000000_vs.txt  |  15 ++-
 ..._cf4eda5057e1a527_0000000000000000_vs.txt} |   0
 .../dd1a35baa9bbe69b_0000000000000000_vs.txt  | 109 ------------------
 .../e412d30f981be3b5_0000000000000000_vs.txt  |  14 ++-
 .../fb7df308052b5222_0000000000000000_vs.txt  |  67 -----------
 12 files changed, 24 insertions(+), 613 deletions(-)
 delete mode 100644 Source/XenobladeX/2dc235c41abee590_0000000000000000_vs.txt
 delete mode 100644 Source/XenobladeX/3cf2d31fbf321520_0000000000000000_vs.txt
 delete mode 100644 Source/XenobladeX/4cb7bbd82d381167_0000000000000000_vs.txt
 delete mode 100644 Source/XenobladeX/72387b8c3f18030f_0000000000000000_vs.txt
 delete mode 100644 Source/XenobladeX/94d235f07b93ad2f_0000000000000000_vs.txt
 rename Source/XenobladeX/{cf4eda5057e1a527_0000000000000000_vs.txt => _cf4eda5057e1a527_0000000000000000_vs.txt} (100%)
 delete mode 100644 Source/XenobladeX/dd1a35baa9bbe69b_0000000000000000_vs.txt
 delete mode 100644 Source/XenobladeX/fb7df308052b5222_0000000000000000_vs.txt

diff --git a/Source/XenobladeX/2dc235c41abee590_0000000000000000_vs.txt b/Source/XenobladeX/2dc235c41abee590_0000000000000000_vs.txt
deleted file mode 100644
index 7906deaf..00000000
--- a/Source/XenobladeX/2dc235c41abee590_0000000000000000_vs.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-#version 420
-#extension GL_ARB_texture_gather : enable
-#extension GL_ARB_separate_shader_objects : enable
-#extension GL_ARB_shading_language_packing : enable
-// shader 2dc235c41abee590
-
-// shadow maskng alignment, haloing compromise
-//fixes most Y at cost of slightly worse X
-uniform ivec4 uf_remappedVS[6];
-uniform vec2 uf_windowSpaceToClipSpaceTransform;
-layout(location = 0) in uvec4 attrDataSem0;
-layout(location = 1) in uvec4 attrDataSem1;
-out gl_PerVertex
-{
-	vec4 gl_Position;
-	float gl_PointSize;
-};
-layout(location = 3) out vec4 passParameterSem3;
-layout(location = 0) out vec4 passParameterSem0;
-layout(location = 1) out vec4 passParameterSem1;
-layout(location = 2) out vec4 passParameterSem2;
-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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
-void main()
-{
-vec4 R0f = vec4(0.0);
-vec4 R1f = vec4(0.0);
-vec4 R2f = vec4(0.0);
-vec4 R3f = vec4(0.0);
-vec4 R4f = vec4(0.0);
-vec4 R123f = vec4(0.0);
-uvec4 attrDecoder;
-float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
-vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
-float PS0f = 0.0, PS1f = 0.0;
-vec4 tempf = vec4(0.0);
-float tempResultf;
-int tempResulti;
-ivec4 ARi = ivec4(0);
-bool predResult = true;
-vec3 cubeMapSTM;
-int cubeMapFaceId;
-R0f = floatBitsToInt(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;
-R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
-attrDecoder.xy = attrDataSem1.xy;
-attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
-attrDecoder.z = 0;
-attrDecoder.w = 0;
-R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
-// 0
-PV0f.x = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].w));
-PV0f.y = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].z));
-PV0f.z = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].y));
-PV0f.w = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].x));
-R4f.x = R2f.x;
-PS0f = R4f.x;
-// 1
-R123f.x = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].w)) + PV0f.x);
-PV1f.x = R123f.x;
-R123f.y = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].z)) + PV0f.y);
-PV1f.y = R123f.y;
-R123f.z = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].y)) + PV0f.z);
-PV1f.z = R123f.z;
-R123f.w = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].x)) + PV0f.w);
-PV1f.w = R123f.w;
-R4f.y = R2f.y;
-PS1f = R4f.y;
-// 2
-R123f.x = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].z)) + PV1f.y);
-PV0f.x = R123f.x;
-R123f.y = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].w)) + PV1f.x);
-PV0f.y = R123f.y;
-R123f.z = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].y)) + PV1f.z);
-PV0f.z = R123f.z;
-R123f.w = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].x)) + PV1f.w);
-PV0f.w = R123f.w;
-// 3
-R2f.x = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].x)) + PV0f.w);
-R2f.y = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].y)) + PV0f.z);
-R2f.z = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].z)) + PV0f.x);
-R2f.w = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].w)) + PV0f.y);
-// 4
-R3f.x = (mul_nonIEEE(R4f.x,intBitsToFloat(uf_remappedVS[4].x)) + intBitsToFloat(uf_remappedVS[4].z)*1.5);
-R3f.y = (mul_nonIEEE(R4f.y,intBitsToFloat(uf_remappedVS[4].y)) + intBitsToFloat(uf_remappedVS[4].w)/4);
-// 5
-R0f.x = (mul_nonIEEE(R4f.x,intBitsToFloat(uf_remappedVS[5].x)) + intBitsToFloat(uf_remappedVS[5].z));
-R0f.y = (mul_nonIEEE(R4f.y,intBitsToFloat(uf_remappedVS[5].y)) + intBitsToFloat(uf_remappedVS[5].w));
-// export
-gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
-// export
-passParameterSem3 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
-// export
-passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.z);
-// export
-passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.z);
-// export
-passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.z);
-// 0
-}
diff --git a/Source/XenobladeX/3cf2d31fbf321520_0000000000000000_vs.txt b/Source/XenobladeX/3cf2d31fbf321520_0000000000000000_vs.txt
deleted file mode 100644
index 57b14549..00000000
--- a/Source/XenobladeX/3cf2d31fbf321520_0000000000000000_vs.txt
+++ /dev/null
@@ -1,60 +0,0 @@
-#version 420
-#extension GL_ARB_texture_gather : enable
-#extension GL_ARB_separate_shader_objects : enable
-#extension GL_ARB_shading_language_packing : enable
-// shader 3cf2d31fbf321520
-//bloom align last merge
-uniform ivec4 uf_remappedVS[1];
-uniform vec2 uf_windowSpaceToClipSpaceTransform;
-layout(location = 0) in uvec4 attrDataSem0;
-layout(location = 1) in uvec4 attrDataSem1;
-out gl_PerVertex
-{
-	vec4 gl_Position;
-	float gl_PointSize;
-};
-layout(location = 0) out vec4 passParameterSem0;
-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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
-void main()
-{
-vec4 R1f = vec4(0.0);
-vec4 R2f = vec4(0.0);
-uvec4 attrDecoder;
-float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
-vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
-float PS0f = 0.0, PS1f = 0.0;
-vec4 tempf = vec4(0.0);
-float tempResultf;
-int tempResulti;
-ivec4 ARi = ivec4(0);
-bool predResult = true;
-vec3 cubeMapSTM;
-int cubeMapFaceId;
-attrDecoder.xyz = attrDataSem0.xyz;
-attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
-attrDecoder.w = 0;
-R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
-attrDecoder.xy = attrDataSem1.xy;
-attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
-attrDecoder.z = 0;
-attrDecoder.w = 0;
-R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
-// 0
-backupReg0f = R2f.x;
-backupReg1f = R2f.y;
-R2f.x = (mul_nonIEEE(backupReg0f,intBitsToFloat(uf_remappedVS[0].x)) + (intBitsToFloat(uf_remappedVS[0].z)*1.3));
-R2f.y = (mul_nonIEEE(backupReg1f,intBitsToFloat(uf_remappedVS[0].y)) + (intBitsToFloat(uf_remappedVS[0].w)*1.3));
-// export
-gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
-// export
-passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.z);
-// 0
-}
diff --git a/Source/XenobladeX/497a209b49886520_0000000000000000_vs.txt b/Source/XenobladeX/497a209b49886520_0000000000000000_vs.txt
index ac0b2625..7f483858 100644
--- a/Source/XenobladeX/497a209b49886520_0000000000000000_vs.txt
+++ b/Source/XenobladeX/497a209b49886520_0000000000000000_vs.txt
@@ -1,7 +1,9 @@
 #version 420
 #extension GL_ARB_texture_gather : enable
+#extension GL_ARB_separate_shader_objects : enable
 #extension GL_ARB_shading_language_packing : enable
-// shader 497a209b49886520 // magic value hack aligment issue 1-> 1/2 
+// shader 497a209b49886520
+//align water depth
 uniform ivec4 uf_remappedVS[1];
 uniform vec2 uf_windowSpaceToClipSpaceTransform;
 layout(binding = 32) uniform sampler2D textureUnitVS0;// Tex0 addr 0xf545c000 res 1x1x1 dim 1 tm: 2 format 081e compSel: 0 1 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler18 ClampX/Y/Z: 2 2 2 border: 0
@@ -23,7 +25,7 @@ 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)); }
+float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
 void main()
 {
 vec4 R0f = vec4(0.0);
@@ -59,14 +61,12 @@ backupReg1f = R2f.y;
 R2f.x = backupReg0f;
 R2f.y = backupReg1f;
 R0f.z = intBitsToFloat(0x3f000000);
-R0f.w = (backupReg0f * intBitsToFloat(uf_remappedVS[0].x) + intBitsToFloat(uf_remappedVS[0].z));
-R0f.y = (backupReg1f * intBitsToFloat(uf_remappedVS[0].y) + intBitsToFloat(uf_remappedVS[0].w));
+R0f.w = (mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedVS[0].x)) +intBitsToFloat(uf_remappedVS[0].z)*3);
+R0f.y = (mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedVS[0].y)) +intBitsToFloat(uf_remappedVS[0].w)*3);
 PS0f = R0f.y;
 R3f.xy = (textureLod(textureUnitVS0, R0f.zz,0.0).xy);
 // export
-//gl_Position = vec4(R1f.x, R1f.y - 0.001, R1f.z, R1f.w*1.0040);
-
-gl_Position = vec4(R1f.x, R1f.y-0.0015, R1f.z, R1f.w*1.0040);
+gl_Position = vec4(R1f.x*(1.0 / 1.004), R1f.y*(1.0 / 1.006), R1f.z, R1f.w);
 // export
 passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.z);
 // export
diff --git a/Source/XenobladeX/4cb7bbd82d381167_0000000000000000_vs.txt b/Source/XenobladeX/4cb7bbd82d381167_0000000000000000_vs.txt
deleted file mode 100644
index 18851d43..00000000
--- a/Source/XenobladeX/4cb7bbd82d381167_0000000000000000_vs.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-#version 420
-#extension GL_ARB_texture_gather : enable
-#extension GL_ARB_shading_language_packing : enable
-// shader 4cb7bbd82d381167 // cutscene specular highlight dof align
-const float constScale = 8.0;
-uniform ivec4 uf_remappedVS[1];
-uniform vec2 uf_windowSpaceToClipSpaceTransform;
-layout(binding = 32) uniform sampler2D textureUnitVS0;// Tex0 addr 0xf545c000 res 1x1x1 dim 1 tm: 2 format 081e compSel: 0 1 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler18 ClampX/Y/Z: 2 2 2 border: 0
-layout(location = 0) in uvec4 attrDataSem0;
-layout(location = 1) in uvec4 attrDataSem1;
-out gl_PerVertex
-{
-	vec4 gl_Position;
-	float gl_PointSize;
-};
-layout(location = 1) out vec4 passParameterSem1;
-layout(location = 0) out vec4 passParameterSem0;
-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()
-{
-vec4 R0f = vec4(0.0);
-vec4 R1f = vec4(0.0);
-vec4 R2f = vec4(0.0);
-uvec4 attrDecoder;
-float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
-vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
-float PS0f = 0.0, PS1f = 0.0;
-vec4 tempf = vec4(0.0);
-float tempResultf;
-int tempResulti;
-ivec4 ARi = ivec4(0);
-bool predResult = true;
-vec3 cubeMapSTM;
-int cubeMapFaceId;
-R0f = floatBitsToInt(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;
-R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
-attrDecoder.xy = attrDataSem1.xy;
-attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
-attrDecoder.z = 0;
-attrDecoder.w = 0;
-R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
-// 0
-backupReg0f = R2f.x;
-backupReg1f = R2f.y;
-R2f.x = (backupReg0f * intBitsToFloat(uf_remappedVS[0].x) + (intBitsToFloat(uf_remappedVS[0].z)/ constScale));
-R2f.y = (backupReg1f * intBitsToFloat(uf_remappedVS[0].y) + (intBitsToFloat(uf_remappedVS[0].w)/ constScale));
-R0f.z = intBitsToFloat(0x3f000000);
-R0f.xy = (textureLod(textureUnitVS0, R0f.zz,0.0).xy);
-// export
-gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
-// export
-passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.z);
-// 0
-backupReg0f = R0f.x;
-backupReg1f = R0f.y;
-R0f.x = backupReg0f;
-R0f.y = backupReg1f;
-// export
-passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.z);
-// 0
-}
diff --git a/Source/XenobladeX/4f557f00a56c6358_0000000000000000_vs.txt b/Source/XenobladeX/4f557f00a56c6358_0000000000000000_vs.txt
index b4b10011..c7663c2a 100644
--- a/Source/XenobladeX/4f557f00a56c6358_0000000000000000_vs.txt
+++ b/Source/XenobladeX/4f557f00a56c6358_0000000000000000_vs.txt
@@ -3,7 +3,7 @@
 #extension GL_ARB_separate_shader_objects : enable
 #extension GL_ARB_shading_language_packing : enable
 // shader 4f557f00a56c6358
-//vs shadow mask
+//test align edge alpha shadow 
 uniform ivec4 uf_remappedVS[4];
 uniform vec2 uf_windowSpaceToClipSpaceTransform;
 layout(location = 0) in uvec4 attrDataSem0;
@@ -86,7 +86,7 @@ R2f.y = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].y)) + PV0f.x);
 R2f.z = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].z)) + PV0f.w);
 R2f.w = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].w)) + PV0f.z);
 // export
-gl_Position = vec4(R1f.x*0.999, R1f.y, R1f.z, R1f.w);//magic align shadows
+gl_Position = vec4(R1f.x*(1/1.001), R1f.y*(1 / 1.001), R1f.z, R1f.w);
 // export
 passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
 // export
diff --git a/Source/XenobladeX/72387b8c3f18030f_0000000000000000_vs.txt b/Source/XenobladeX/72387b8c3f18030f_0000000000000000_vs.txt
deleted file mode 100644
index 12e798b2..00000000
--- a/Source/XenobladeX/72387b8c3f18030f_0000000000000000_vs.txt
+++ /dev/null
@@ -1,64 +0,0 @@
-#version 420
-#extension GL_ARB_texture_gather : enable
-#extension GL_ARB_separate_shader_objects : enable
-#extension GL_ARB_shading_language_packing : enable
-// shader 72387b8c3f18030f
-//skell view align bloom
-uniform ivec4 uf_remappedVS[1];
-uniform vec2 uf_windowSpaceToClipSpaceTransform;
-layout(location = 0) in uvec4 attrDataSem0;
-out gl_PerVertex
-{
-	vec4 gl_Position;
-	float gl_PointSize;
-};
-layout(location = 0) out vec4 passParameterSem0;
-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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
-void main()
-{
-vec4 R0f = vec4(0.0);
-vec4 R1f = vec4(0.0);
-uvec4 attrDecoder;
-float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
-vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
-float PS0f = 0.0, PS1f = 0.0;
-vec4 tempf = vec4(0.0);
-float tempResultf;
-int tempResulti;
-ivec4 ARi = ivec4(0);
-bool predResult = true;
-vec3 cubeMapSTM;
-int cubeMapFaceId;
-R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
-attrDecoder.xy = attrDataSem0.xy;
-attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
-attrDecoder.z = 0;
-attrDecoder.w = 0;
-R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
-// 0
-PV0f.x = -(R1f.y);
-PV0f.x /= 2.0;
-PV0f.y = R1f.x;
-PV0f.y /= 2.0;
-R1f.z = 0.0;
-R1f.w = 1.0;
-// 1
-PV1f.z = PV0f.x + 0.5;
-PV1f.w = PV0f.y + 0.5;
-// 2
-R0f.x = PV1f.w + intBitsToFloat(uf_remappedVS[0].x)/8; //const align
-R0f.y = PV1f.z + intBitsToFloat(uf_remappedVS[0].y)/8;
-// export
-gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
-// export
-passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.z);
-// 0
-}
diff --git a/Source/XenobladeX/94d235f07b93ad2f_0000000000000000_vs.txt b/Source/XenobladeX/94d235f07b93ad2f_0000000000000000_vs.txt
deleted file mode 100644
index b6a8bcee..00000000
--- a/Source/XenobladeX/94d235f07b93ad2f_0000000000000000_vs.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-#version 420
-#extension GL_ARB_texture_gather : enable
-#extension GL_ARB_separate_shader_objects : enable
-#extension GL_ARB_shading_language_packing : enable
-// shader 94d235f07b93ad2f
-// shadow masking alignment, haloing compromise
-//fixes most Y at cost of slightly worse X
-
-uniform ivec4 uf_remappedVS[6];
-uniform vec2 uf_windowSpaceToClipSpaceTransform;
-layout(location = 0) in uvec4 attrDataSem0;
-layout(location = 1) in uvec4 attrDataSem1;
-out gl_PerVertex
-{
-	vec4 gl_Position;
-	float gl_PointSize;
-};
-layout(location = 3) out vec4 passParameterSem3;
-layout(location = 0) out vec4 passParameterSem0;
-layout(location = 1) out vec4 passParameterSem1;
-layout(location = 2) out vec4 passParameterSem2;
-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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
-void main()
-{
-vec4 R0f = vec4(0.0);
-vec4 R1f = vec4(0.0);
-vec4 R2f = vec4(0.0);
-vec4 R3f = vec4(0.0);
-vec4 R4f = vec4(0.0);
-vec4 R123f = vec4(0.0);
-uvec4 attrDecoder;
-float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
-vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
-float PS0f = 0.0, PS1f = 0.0;
-vec4 tempf = vec4(0.0);
-float tempResultf;
-int tempResulti;
-ivec4 ARi = ivec4(0);
-bool predResult = true;
-vec3 cubeMapSTM;
-int cubeMapFaceId;
-R0f = floatBitsToInt(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;
-R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
-attrDecoder.xy = attrDataSem1.xy;
-attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
-attrDecoder.z = 0;
-attrDecoder.w = 0;
-R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
-// 0
-PV0f.x = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].w));
-PV0f.y = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].z));
-PV0f.z = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].y));
-PV0f.w = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].x));
-R4f.x = R2f.x;
-PS0f = R4f.x;
-// 1
-R123f.x = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].w)) + PV0f.x);
-PV1f.x = R123f.x;
-R123f.y = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].z)) + PV0f.y);
-PV1f.y = R123f.y;
-R123f.z = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].y)) + PV0f.z);
-PV1f.z = R123f.z;
-R123f.w = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].x)) + PV0f.w);
-PV1f.w = R123f.w;
-R4f.y = R2f.y;
-PS1f = R4f.y;
-// 2
-R123f.x = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].z)) + PV1f.y);
-PV0f.x = R123f.x;
-R123f.y = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].w)) + PV1f.x);
-PV0f.y = R123f.y;
-R123f.z = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].y)) + PV1f.z);
-PV0f.z = R123f.z;
-R123f.w = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].x)) + PV1f.w);
-PV0f.w = R123f.w;
-// 3
-R2f.x = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].x)) + PV0f.w);
-R2f.y = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].y)) + PV0f.z);
-R2f.z = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].z)) + PV0f.x);
-R2f.w = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].w)) + PV0f.y);
-// 4
-R3f.x = (mul_nonIEEE(R4f.x,intBitsToFloat(uf_remappedVS[4].x)) + intBitsToFloat(uf_remappedVS[4].z));
-R3f.y = (mul_nonIEEE(R4f.y,intBitsToFloat(uf_remappedVS[4].y)) + intBitsToFloat(uf_remappedVS[4].w)/4); //2
-// 5
-R0f.x = (mul_nonIEEE(R4f.x,intBitsToFloat(uf_remappedVS[5].x)) + intBitsToFloat(uf_remappedVS[5].z));
-R0f.y = (mul_nonIEEE(R4f.y,intBitsToFloat(uf_remappedVS[5].y)) + intBitsToFloat(uf_remappedVS[5].w));
-// export
-gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
-// export
-passParameterSem3 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
-// export
-passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.z);
-// export
-passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.z);
-// export
-passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.z);
-// 0
-}
diff --git a/Source/XenobladeX/9dc2d340255dee89_0000000000000000_vs.txt b/Source/XenobladeX/9dc2d340255dee89_0000000000000000_vs.txt
index e493a653..69823731 100644
--- a/Source/XenobladeX/9dc2d340255dee89_0000000000000000_vs.txt
+++ b/Source/XenobladeX/9dc2d340255dee89_0000000000000000_vs.txt
@@ -1,14 +1,13 @@
 #version 420
 #extension GL_ARB_texture_gather : enable
+#extension GL_ARB_separate_shader_objects : enable
 #extension GL_ARB_shading_language_packing : enable
-// shader 9dc2d340255dee89 //aligment vs
-const float constvs = 8.0;
-
+// shader 9dc2d340255dee89
+//align bloom 1
 uniform ivec4 uf_remappedVS[1];
 uniform vec2 uf_windowSpaceToClipSpaceTransform;
 layout(location = 0) in uvec4 attrDataSem0;
 layout(location = 1) in uvec4 attrDataSem1;
-
 out gl_PerVertex
 {
 	vec4 gl_Position;
@@ -23,7 +22,7 @@ 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)); }
+float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
 void main()
 {
 vec4 R1f = vec4(0.0);
@@ -51,10 +50,10 @@ R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)
 // 0
 backupReg0f = R2f.x;
 backupReg1f = R2f.y;
-R2f.x = (backupReg0f * intBitsToFloat(uf_remappedVS[0].x) + (intBitsToFloat(uf_remappedVS[0].z)/constvs));
-R2f.y = (backupReg1f * intBitsToFloat(uf_remappedVS[0].y) + (intBitsToFloat(uf_remappedVS[0].w)/constvs));
+R2f.x = (mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedVS[0].x)));// +intBitsToFloat(uf_remappedVS[0].z) / 8);
+R2f.y = (mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedVS[0].y)));// +intBitsToFloat(uf_remappedVS[0].w) / 8);
 // export
-gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
+gl_Position = vec4(R1f.x*(1.0/1.006), R1f.y*(1.0/1.006), R1f.z, R1f.w);
 // export
 passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.z);
 // 0
diff --git a/Source/XenobladeX/cf4eda5057e1a527_0000000000000000_vs.txt b/Source/XenobladeX/_cf4eda5057e1a527_0000000000000000_vs.txt
similarity index 100%
rename from Source/XenobladeX/cf4eda5057e1a527_0000000000000000_vs.txt
rename to Source/XenobladeX/_cf4eda5057e1a527_0000000000000000_vs.txt
diff --git a/Source/XenobladeX/dd1a35baa9bbe69b_0000000000000000_vs.txt b/Source/XenobladeX/dd1a35baa9bbe69b_0000000000000000_vs.txt
deleted file mode 100644
index 7f1adea2..00000000
--- a/Source/XenobladeX/dd1a35baa9bbe69b_0000000000000000_vs.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-#version 420
-#extension GL_ARB_texture_gather : enable
-#extension GL_ARB_separate_shader_objects : enable
-#extension GL_ARB_shading_language_packing : enable
-// shader dd1a35baa9bbe69b
-// shadow maskng alignment, haloing compromise
-//fixes most Y at cost of slightly worse X
-
-uniform ivec4 uf_remappedVS[6];
-uniform vec2 uf_windowSpaceToClipSpaceTransform;
-layout(location = 0) in uvec4 attrDataSem0;
-layout(location = 1) in uvec4 attrDataSem1;
-out gl_PerVertex
-{
-	vec4 gl_Position;
-	float gl_PointSize;
-};
-layout(location = 3) out vec4 passParameterSem3;
-layout(location = 0) out vec4 passParameterSem0;
-layout(location = 1) out vec4 passParameterSem1;
-layout(location = 2) out vec4 passParameterSem2;
-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){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
-void main()
-{
-vec4 R0f = vec4(0.0);
-vec4 R1f = vec4(0.0);
-vec4 R2f = vec4(0.0);
-vec4 R3f = vec4(0.0);
-vec4 R4f = vec4(0.0);
-vec4 R123f = vec4(0.0);
-uvec4 attrDecoder;
-float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
-vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
-float PS0f = 0.0, PS1f = 0.0;
-vec4 tempf = vec4(0.0);
-float tempResultf;
-int tempResulti;
-ivec4 ARi = ivec4(0);
-bool predResult = true;
-vec3 cubeMapSTM;
-int cubeMapFaceId;
-R0f = floatBitsToInt(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;
-R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
-attrDecoder.xy = attrDataSem1.xy;
-attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
-attrDecoder.z = 0;
-attrDecoder.w = 0;
-R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
-// 0
-PV0f.x = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].w));
-PV0f.y = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].z));
-PV0f.z = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].y));
-PV0f.w = mul_nonIEEE(R1f.w, intBitsToFloat(uf_remappedVS[0].x));
-R4f.x = R2f.x;
-PS0f = R4f.x;
-// 1
-R123f.x = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].w)) + PV0f.x);
-PV1f.x = R123f.x;
-R123f.y = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].z)) + PV0f.y);
-PV1f.y = R123f.y;
-R123f.z = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].y)) + PV0f.z);
-PV1f.z = R123f.z;
-R123f.w = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedVS[1].x)) + PV0f.w);
-PV1f.w = R123f.w;
-R4f.y = R2f.y;
-PS1f = R4f.y;
-// 2
-R123f.x = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].z)) + PV1f.y);
-PV0f.x = R123f.x;
-R123f.y = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].w)) + PV1f.x);
-PV0f.y = R123f.y;
-R123f.z = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].y)) + PV1f.z);
-PV0f.z = R123f.z;
-R123f.w = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedVS[2].x)) + PV1f.w);
-PV0f.w = R123f.w;
-// 3
-R2f.x = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].x)) + PV0f.w);
-R2f.y = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].y)) + PV0f.z);
-R2f.z = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].z)) + PV0f.x);
-R2f.w = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedVS[3].w)) + PV0f.y);
-// 4
-R3f.x = (mul_nonIEEE(R4f.x,intBitsToFloat(uf_remappedVS[4].x)) + intBitsToFloat(uf_remappedVS[4].z));
-R3f.y = (mul_nonIEEE(R4f.y,intBitsToFloat(uf_remappedVS[4].y)) + intBitsToFloat(uf_remappedVS[4].w)/4);
-// 5
-R0f.x = (mul_nonIEEE(R4f.x,intBitsToFloat(uf_remappedVS[5].x)) + intBitsToFloat(uf_remappedVS[5].z));
-R0f.y = (mul_nonIEEE(R4f.y,intBitsToFloat(uf_remappedVS[5].y)) + intBitsToFloat(uf_remappedVS[5].w));
-// export
-gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
-// export
-passParameterSem3 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
-// export
-passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.z);
-// export
-passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.z);
-// export
-passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.z);
-// 0
-}
diff --git a/Source/XenobladeX/e412d30f981be3b5_0000000000000000_vs.txt b/Source/XenobladeX/e412d30f981be3b5_0000000000000000_vs.txt
index 6c01dc7b..b0beea91 100644
--- a/Source/XenobladeX/e412d30f981be3b5_0000000000000000_vs.txt
+++ b/Source/XenobladeX/e412d30f981be3b5_0000000000000000_vs.txt
@@ -1,9 +1,10 @@
 #version 420
 #extension GL_ARB_texture_gather : enable
+#extension GL_ARB_separate_shader_objects : enable
 #extension GL_ARB_shading_language_packing : enable
-// shader e412d30f981be3b5 //char select VS persp
+// shader e412d30f981be3b5
+//char select dof
 uniform ivec4 uf_remappedVS[1];
-const float constvs = 8.0;
 uniform vec2 uf_windowSpaceToClipSpaceTransform;
 layout(location = 0) in uvec4 attrDataSem0;
 layout(location = 1) in uvec4 attrDataSem1;
@@ -21,7 +22,7 @@ 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)); }
+float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
 void main()
 {
 vec4 R1f = vec4(0.0);
@@ -49,10 +50,11 @@ R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)
 // 0
 backupReg0f = R2f.x;
 backupReg1f = R2f.y;
-R2f.x = (backupReg0f * intBitsToFloat(uf_remappedVS[0].x) + (intBitsToFloat(uf_remappedVS[0].z)/constvs));
-R2f.y = (backupReg1f * intBitsToFloat(uf_remappedVS[0].y) + (intBitsToFloat(uf_remappedVS[0].w)/constvs));
+R2f.x = (mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedVS[0].x)));// +intBitsToFloat(uf_remappedVS[0].z));
+R2f.y = (mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedVS[0].y)));// +intBitsToFloat(uf_remappedVS[0].w));
 // export
-gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
+gl_Position = vec4(R1f.x*(1.0 / 1.004), R1f.y*(1.0 / 1.006), R1f.z, R1f.w);
+//gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
 // export
 passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.z);
 // 0
diff --git a/Source/XenobladeX/fb7df308052b5222_0000000000000000_vs.txt b/Source/XenobladeX/fb7df308052b5222_0000000000000000_vs.txt
deleted file mode 100644
index 18fbdd8b..00000000
--- a/Source/XenobladeX/fb7df308052b5222_0000000000000000_vs.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-#version 420
-#extension GL_ARB_texture_gather : enable
-#extension GL_ARB_shading_language_packing : enable
-// shader fb7df308052b5222 //align cut-scene
-uniform ivec4 uf_remappedVS[2];
-const float constvs = 8.0;
-uniform vec2 uf_windowSpaceToClipSpaceTransform;
-layout(location = 0) in uvec4 attrDataSem0;
-layout(location = 1) in uvec4 attrDataSem1;
-out gl_PerVertex
-{
-	vec4 gl_Position;
-	float gl_PointSize;
-};
-layout(location = 0) out vec4 passParameterSem0;
-layout(location = 1) out vec4 passParameterSem1;
-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()
-{
-vec4 R0f = vec4(0.0);
-vec4 R1f = vec4(0.0);
-vec4 R2f = vec4(0.0);
-uvec4 attrDecoder;
-float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
-vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
-float PS0f = 0.0, PS1f = 0.0;
-vec4 tempf = vec4(0.0);
-float tempResultf;
-int tempResulti;
-ivec4 ARi = ivec4(0);
-bool predResult = true;
-vec3 cubeMapSTM;
-int cubeMapFaceId;
-R0f = floatBitsToInt(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;
-R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
-attrDecoder.xy = attrDataSem1.xy;
-attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
-attrDecoder.z = 0;
-attrDecoder.w = 0;
-R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
-// 0
-R0f.x = (R2f.x * intBitsToFloat(uf_remappedVS[0].x) + intBitsToFloat(uf_remappedVS[0].z)/constvs);
-R0f.y = (R2f.y * intBitsToFloat(uf_remappedVS[0].y) + intBitsToFloat(uf_remappedVS[0].w)/constvs);
-// 1
-backupReg0f = R2f.x;
-backupReg1f = R2f.y;
-R2f.x = (backupReg0f * intBitsToFloat(uf_remappedVS[1].x) + intBitsToFloat(uf_remappedVS[1].z));
-R2f.y = (backupReg1f * intBitsToFloat(uf_remappedVS[1].y) + intBitsToFloat(uf_remappedVS[1].w));
-// export
-gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
-// export
-passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.z);
-// export
-passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.z);
-// 0
-}