aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Bechard <malcolm@derivative.ca>2022-01-25 21:31:31 -0500
committerMalcolm Bechard <malcolm@derivative.ca>2022-01-28 23:38:56 -0500
commitb8338311ea58fadfc8cb41a389d857910f4d9818 (patch)
treeba65acc5fe2ff5adb056ad3cacd10284194555dd
parent81cc10a498b25a90147cccd6e8939493c1e9e20e (diff)
downloadglslang-b8338311ea58fadfc8cb41a389d857910f4d9818.tar.gz
fix cases where symbols in the tree didn't get updated during block merging
For GL_EXT_vulkan_glsl_relaxed. When merging the default uniform block, there were cases where symbols in the tree wern't updated to match the new block structure after merging blocks together. This change traverses the symbol tree and updates any references to the merged block.
-rwxr-xr-xTest/baseResults/vk.relaxed.stagelink.0.0.vert.out10697
-rwxr-xr-xTest/vk.relaxed.stagelink.0.0.frag139
-rwxr-xr-xTest/vk.relaxed.stagelink.0.0.vert126
-rwxr-xr-xTest/vk.relaxed.stagelink.0.1.frag504
-rwxr-xr-xTest/vk.relaxed.stagelink.0.1.vert242
-rwxr-xr-xTest/vk.relaxed.stagelink.0.2.frag9
-rwxr-xr-xTest/vk.relaxed.stagelink.0.2.vert320
-rw-r--r--glslang/MachineIndependent/linkValidate.cpp73
-rw-r--r--gtests/VkRelaxed.FromFile.cpp5
9 files changed, 12079 insertions, 36 deletions
diff --git a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out
new file mode 100755
index 00000000..bcd4e2af
--- /dev/null
+++ b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out
@@ -0,0 +1,10697 @@
+vk.relaxed.stagelink.0.0.vert
+Shader version: 460
+0:? Sequence
+0:11 Function Definition: main( ( global void)
+0:11 Function Parameters:
+0:15 Sequence
+0:15 Sequence
+0:15 Sequence
+0:15 move second child to first child ( temp highp 3-component vector of float)
+0:15 'texcoord' ( temp highp 3-component vector of float)
+0:15 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:15 direct index (layout( location=3) temp highp 3-component vector of float)
+0:15 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp highp 3-component vector of float)
+0:16 vector swizzle ( temp highp 3-component vector of float)
+0:16 texCoord0: direct index for structure ( out highp 3-component vector of float)
+0:16 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:16 Constant:
+0:16 2 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2 (const int)
+0:16 vector swizzle ( temp highp 3-component vector of float)
+0:16 'texcoord' ( temp highp 3-component vector of float)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2 (const int)
+0:20 move second child to first child ( temp highp int)
+0:20 instance: direct index for structure ( flat out highp int)
+0:20 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:20 Constant:
+0:20 4 (const int)
+0:20 Function Call: TDInstanceID( ( global highp int)
+0:21 Sequence
+0:21 move second child to first child ( temp highp 4-component vector of float)
+0:21 'worldSpacePos' ( temp highp 4-component vector of float)
+0:21 Function Call: TDDeform(vf3; ( global highp 4-component vector of float)
+0:21 'P' (layout( location=0) in highp 3-component vector of float)
+0:22 Sequence
+0:22 move second child to first child ( temp highp 3-component vector of float)
+0:22 'uvUnwrapCoord' ( temp highp 3-component vector of float)
+0:22 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:22 Function Call: TDUVUnwrapCoord( ( global highp 3-component vector of float)
+0:23 move second child to first child ( temp highp 4-component vector of float)
+0:23 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:23 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance})
+0:23 Constant:
+0:23 0 (const uint)
+0:23 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:23 'worldSpacePos' ( temp highp 4-component vector of float)
+0:23 'uvUnwrapCoord' ( temp highp 3-component vector of float)
+0:32 Sequence
+0:32 move second child to first child ( temp highp int)
+0:32 'cameraIndex' ( temp highp int)
+0:32 Function Call: TDCameraIndex( ( global highp int)
+0:33 move second child to first child ( temp highp int)
+0:33 cameraIndex: direct index for structure ( flat out highp int)
+0:33 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:33 Constant:
+0:33 3 (const int)
+0:33 'cameraIndex' ( temp highp int)
+0:34 move second child to first child ( temp highp 3-component vector of float)
+0:34 vector swizzle ( temp highp 3-component vector of float)
+0:34 worldSpacePos: direct index for structure ( out highp 3-component vector of float)
+0:34 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:34 Constant:
+0:34 1 (const int)
+0:34 Sequence
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const int)
+0:34 Constant:
+0:34 2 (const int)
+0:34 vector swizzle ( temp highp 3-component vector of float)
+0:34 'worldSpacePos' ( temp highp 4-component vector of float)
+0:34 Sequence
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const int)
+0:34 Constant:
+0:34 2 (const int)
+0:35 move second child to first child ( temp highp 4-component vector of float)
+0:35 color: direct index for structure ( out highp 4-component vector of float)
+0:35 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:35 Constant:
+0:35 0 (const int)
+0:35 Function Call: TDInstanceColor(vf4; ( global highp 4-component vector of float)
+0:35 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'P' (layout( location=0) in highp 3-component vector of float)
+0:? 'N' (layout( location=1) in highp 3-component vector of float)
+0:? 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:? 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance})
+0:? 'gl_VertexIndex' ( in int VertexIndex)
+0:? 'gl_InstanceIndex' ( in int InstanceIndex)
+
+vk.relaxed.stagelink.0.1.vert
+Shader version: 460
+0:? Sequence
+0:176 Function Definition: iTDCamToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:176 Function Parameters:
+0:176 'v' ( in highp 4-component vector of float)
+0:176 'uv' ( in highp 3-component vector of float)
+0:176 'cameraIndex' ( in highp int)
+0:176 'applyPickMod' ( in bool)
+0:178 Sequence
+0:178 Test condition and select ( temp void)
+0:178 Condition
+0:178 Negate conditional ( temp bool)
+0:178 Function Call: TDInstanceActive( ( global bool)
+0:178 true case
+0:179 Branch: Return with expression
+0:179 Constant:
+0:179 2.000000
+0:179 2.000000
+0:179 2.000000
+0:179 0.000000
+0:180 move second child to first child ( temp highp 4-component vector of float)
+0:180 'v' ( in highp 4-component vector of float)
+0:180 matrix-times-vector ( temp highp 4-component vector of float)
+0:180 proj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:180 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:180 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:180 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:180 Constant:
+0:180 0 (const uint)
+0:180 Constant:
+0:180 0 (const int)
+0:180 Constant:
+0:180 8 (const int)
+0:180 'v' ( in highp 4-component vector of float)
+0:181 Branch: Return with expression
+0:181 'v' ( in highp 4-component vector of float)
+0:183 Function Definition: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:183 Function Parameters:
+0:183 'v' ( in highp 4-component vector of float)
+0:183 'uv' ( in highp 3-component vector of float)
+0:183 'cameraIndex' ( in highp int)
+0:183 'applyPickMod' ( in bool)
+0:184 Sequence
+0:184 Test condition and select ( temp void)
+0:184 Condition
+0:184 Negate conditional ( temp bool)
+0:184 Function Call: TDInstanceActive( ( global bool)
+0:184 true case
+0:185 Branch: Return with expression
+0:185 Constant:
+0:185 2.000000
+0:185 2.000000
+0:185 2.000000
+0:185 0.000000
+0:186 move second child to first child ( temp highp 4-component vector of float)
+0:186 'v' ( in highp 4-component vector of float)
+0:186 matrix-times-vector ( temp highp 4-component vector of float)
+0:186 camProj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:186 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:186 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:186 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:186 Constant:
+0:186 0 (const uint)
+0:186 Constant:
+0:186 0 (const int)
+0:186 Constant:
+0:186 6 (const int)
+0:186 'v' ( in highp 4-component vector of float)
+0:187 Branch: Return with expression
+0:187 'v' ( in highp 4-component vector of float)
+0:193 Function Definition: TDInstanceID( ( global highp int)
+0:193 Function Parameters:
+0:194 Sequence
+0:194 Branch: Return with expression
+0:194 add ( temp highp int)
+0:194 'gl_InstanceIndex' ( in highp int InstanceIndex)
+0:194 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:194 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:194 Constant:
+0:194 0 (const uint)
+0:196 Function Definition: TDCameraIndex( ( global highp int)
+0:196 Function Parameters:
+0:197 Sequence
+0:197 Branch: Return with expression
+0:197 Constant:
+0:197 0 (const int)
+0:199 Function Definition: TDUVUnwrapCoord( ( global highp 3-component vector of float)
+0:199 Function Parameters:
+0:200 Sequence
+0:200 Branch: Return with expression
+0:200 direct index (layout( location=3) temp highp 3-component vector of float)
+0:200 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:200 Constant:
+0:200 0 (const int)
+0:205 Function Definition: TDPickID( ( global highp int)
+0:205 Function Parameters:
+0:209 Sequence
+0:209 Branch: Return with expression
+0:209 Constant:
+0:209 0 (const int)
+0:212 Function Definition: iTDConvertPickId(i1; ( global highp float)
+0:212 Function Parameters:
+0:212 'id' ( in highp int)
+0:213 Sequence
+0:213 or second child into first child ( temp highp int)
+0:213 'id' ( in highp int)
+0:213 Constant:
+0:213 1073741824 (const int)
+0:214 Branch: Return with expression
+0:214 intBitsToFloat ( global highp float)
+0:214 'id' ( in highp int)
+0:217 Function Definition: TDWritePickingValues( ( global void)
+0:217 Function Parameters:
+0:224 Function Definition: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:224 Function Parameters:
+0:224 'v' ( in highp 4-component vector of float)
+0:224 'uv' ( in highp 3-component vector of float)
+0:226 Sequence
+0:226 Branch: Return with expression
+0:226 Function Call: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:226 'v' ( in highp 4-component vector of float)
+0:226 'uv' ( in highp 3-component vector of float)
+0:226 Function Call: TDCameraIndex( ( global highp int)
+0:226 Constant:
+0:226 true (const bool)
+0:228 Function Definition: TDWorldToProj(vf3;vf3; ( global highp 4-component vector of float)
+0:228 Function Parameters:
+0:228 'v' ( in highp 3-component vector of float)
+0:228 'uv' ( in highp 3-component vector of float)
+0:230 Sequence
+0:230 Branch: Return with expression
+0:230 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:230 Construct vec4 ( temp highp 4-component vector of float)
+0:230 'v' ( in highp 3-component vector of float)
+0:230 Constant:
+0:230 1.000000
+0:230 'uv' ( in highp 3-component vector of float)
+0:232 Function Definition: TDWorldToProj(vf4; ( global highp 4-component vector of float)
+0:232 Function Parameters:
+0:232 'v' ( in highp 4-component vector of float)
+0:234 Sequence
+0:234 Branch: Return with expression
+0:234 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:234 'v' ( in highp 4-component vector of float)
+0:234 Constant:
+0:234 0.000000
+0:234 0.000000
+0:234 0.000000
+0:236 Function Definition: TDWorldToProj(vf3; ( global highp 4-component vector of float)
+0:236 Function Parameters:
+0:236 'v' ( in highp 3-component vector of float)
+0:238 Sequence
+0:238 Branch: Return with expression
+0:238 Function Call: TDWorldToProj(vf4; ( global highp 4-component vector of float)
+0:238 Construct vec4 ( temp highp 4-component vector of float)
+0:238 'v' ( in highp 3-component vector of float)
+0:238 Constant:
+0:238 1.000000
+0:240 Function Definition: TDPointColor( ( global highp 4-component vector of float)
+0:240 Function Parameters:
+0:241 Sequence
+0:241 Branch: Return with expression
+0:241 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'P' (layout( location=0) in highp 3-component vector of float)
+0:? 'N' (layout( location=1) in highp 3-component vector of float)
+0:? 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'mTD2DImageOutputs' (layout( rgba8) uniform 1-element array of highp image2D)
+0:? 'mTD2DArrayImageOutputs' (layout( rgba8) uniform 1-element array of highp image2DArray)
+0:? 'mTD3DImageOutputs' (layout( rgba8) uniform 1-element array of highp image3D)
+0:? 'mTDCubeImageOutputs' (layout( rgba8) uniform 1-element array of highp imageCube)
+0:? 'gl_VertexIndex' ( in int VertexIndex)
+0:? 'gl_InstanceIndex' ( in int InstanceIndex)
+
+vk.relaxed.stagelink.0.2.vert
+Shader version: 460
+0:? Sequence
+0:114 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:114 Function Parameters:
+0:114 'index' ( in highp int)
+0:114 't' ( in highp 3-component vector of float)
+0:? Sequence
+0:116 Sequence
+0:116 move second child to first child ( temp highp int)
+0:116 'coord' ( temp highp int)
+0:116 'index' ( in highp int)
+0:117 Sequence
+0:117 move second child to first child ( temp highp 4-component vector of float)
+0:117 'samp' ( temp highp 4-component vector of float)
+0:117 textureFetch ( global highp 4-component vector of float)
+0:117 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:117 'coord' ( temp highp int)
+0:118 move second child to first child ( temp highp float)
+0:118 direct index ( temp highp float)
+0:118 'v' ( temp highp 3-component vector of float)
+0:118 Constant:
+0:118 0 (const int)
+0:118 direct index ( temp highp float)
+0:118 't' ( in highp 3-component vector of float)
+0:118 Constant:
+0:118 0 (const int)
+0:119 move second child to first child ( temp highp float)
+0:119 direct index ( temp highp float)
+0:119 'v' ( temp highp 3-component vector of float)
+0:119 Constant:
+0:119 1 (const int)
+0:119 direct index ( temp highp float)
+0:119 't' ( in highp 3-component vector of float)
+0:119 Constant:
+0:119 1 (const int)
+0:120 move second child to first child ( temp highp float)
+0:120 direct index ( temp highp float)
+0:120 'v' ( temp highp 3-component vector of float)
+0:120 Constant:
+0:120 2 (const int)
+0:120 direct index ( temp highp float)
+0:120 'samp' ( temp highp 4-component vector of float)
+0:120 Constant:
+0:120 0 (const int)
+0:121 move second child to first child ( temp highp 3-component vector of float)
+0:121 vector swizzle ( temp highp 3-component vector of float)
+0:121 't' ( in highp 3-component vector of float)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:121 vector swizzle ( temp highp 3-component vector of float)
+0:121 'v' ( temp highp 3-component vector of float)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:122 Branch: Return with expression
+0:122 't' ( in highp 3-component vector of float)
+0:124 Function Definition: TDInstanceActive(i1; ( global bool)
+0:124 Function Parameters:
+0:124 'index' ( in highp int)
+0:125 Sequence
+0:125 subtract second child into first child ( temp highp int)
+0:125 'index' ( in highp int)
+0:125 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:125 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:125 Constant:
+0:125 0 (const uint)
+0:127 Sequence
+0:127 move second child to first child ( temp highp int)
+0:127 'coord' ( temp highp int)
+0:127 'index' ( in highp int)
+0:128 Sequence
+0:128 move second child to first child ( temp highp 4-component vector of float)
+0:128 'samp' ( temp highp 4-component vector of float)
+0:128 textureFetch ( global highp 4-component vector of float)
+0:128 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:128 'coord' ( temp highp int)
+0:129 move second child to first child ( temp highp float)
+0:129 'v' ( temp highp float)
+0:129 direct index ( temp highp float)
+0:129 'samp' ( temp highp 4-component vector of float)
+0:129 Constant:
+0:129 0 (const int)
+0:130 Branch: Return with expression
+0:130 Compare Not Equal ( temp bool)
+0:130 'v' ( temp highp float)
+0:130 Constant:
+0:130 0.000000
+0:132 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:132 Function Parameters:
+0:132 'index' ( in highp int)
+0:132 'instanceActive' ( out bool)
+0:133 Sequence
+0:133 Sequence
+0:133 move second child to first child ( temp highp int)
+0:133 'origIndex' ( temp highp int)
+0:133 'index' ( in highp int)
+0:134 subtract second child into first child ( temp highp int)
+0:134 'index' ( in highp int)
+0:134 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:134 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:134 Constant:
+0:134 0 (const uint)
+0:136 Sequence
+0:136 move second child to first child ( temp highp int)
+0:136 'coord' ( temp highp int)
+0:136 'index' ( in highp int)
+0:137 Sequence
+0:137 move second child to first child ( temp highp 4-component vector of float)
+0:137 'samp' ( temp highp 4-component vector of float)
+0:137 textureFetch ( global highp 4-component vector of float)
+0:137 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:137 'coord' ( temp highp int)
+0:138 move second child to first child ( temp highp float)
+0:138 direct index ( temp highp float)
+0:138 'v' ( temp highp 3-component vector of float)
+0:138 Constant:
+0:138 0 (const int)
+0:138 direct index ( temp highp float)
+0:138 'samp' ( temp highp 4-component vector of float)
+0:138 Constant:
+0:138 1 (const int)
+0:139 move second child to first child ( temp highp float)
+0:139 direct index ( temp highp float)
+0:139 'v' ( temp highp 3-component vector of float)
+0:139 Constant:
+0:139 1 (const int)
+0:139 direct index ( temp highp float)
+0:139 'samp' ( temp highp 4-component vector of float)
+0:139 Constant:
+0:139 2 (const int)
+0:140 move second child to first child ( temp highp float)
+0:140 direct index ( temp highp float)
+0:140 'v' ( temp highp 3-component vector of float)
+0:140 Constant:
+0:140 2 (const int)
+0:140 direct index ( temp highp float)
+0:140 'samp' ( temp highp 4-component vector of float)
+0:140 Constant:
+0:140 3 (const int)
+0:141 move second child to first child ( temp bool)
+0:141 'instanceActive' ( out bool)
+0:141 Compare Not Equal ( temp bool)
+0:141 direct index ( temp highp float)
+0:141 'samp' ( temp highp 4-component vector of float)
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 0.000000
+0:142 Branch: Return with expression
+0:142 'v' ( temp highp 3-component vector of float)
+0:144 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:144 Function Parameters:
+0:144 'index' ( in highp int)
+0:145 Sequence
+0:145 subtract second child into first child ( temp highp int)
+0:145 'index' ( in highp int)
+0:145 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:145 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:145 Constant:
+0:145 0 (const uint)
+0:147 Sequence
+0:147 move second child to first child ( temp highp int)
+0:147 'coord' ( temp highp int)
+0:147 'index' ( in highp int)
+0:148 Sequence
+0:148 move second child to first child ( temp highp 4-component vector of float)
+0:148 'samp' ( temp highp 4-component vector of float)
+0:148 textureFetch ( global highp 4-component vector of float)
+0:148 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:148 'coord' ( temp highp int)
+0:149 move second child to first child ( temp highp float)
+0:149 direct index ( temp highp float)
+0:149 'v' ( temp highp 3-component vector of float)
+0:149 Constant:
+0:149 0 (const int)
+0:149 direct index ( temp highp float)
+0:149 'samp' ( temp highp 4-component vector of float)
+0:149 Constant:
+0:149 1 (const int)
+0:150 move second child to first child ( temp highp float)
+0:150 direct index ( temp highp float)
+0:150 'v' ( temp highp 3-component vector of float)
+0:150 Constant:
+0:150 1 (const int)
+0:150 direct index ( temp highp float)
+0:150 'samp' ( temp highp 4-component vector of float)
+0:150 Constant:
+0:150 2 (const int)
+0:151 move second child to first child ( temp highp float)
+0:151 direct index ( temp highp float)
+0:151 'v' ( temp highp 3-component vector of float)
+0:151 Constant:
+0:151 2 (const int)
+0:151 direct index ( temp highp float)
+0:151 'samp' ( temp highp 4-component vector of float)
+0:151 Constant:
+0:151 3 (const int)
+0:152 Branch: Return with expression
+0:152 'v' ( temp highp 3-component vector of float)
+0:154 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:154 Function Parameters:
+0:154 'index' ( in highp int)
+0:155 Sequence
+0:155 subtract second child into first child ( temp highp int)
+0:155 'index' ( in highp int)
+0:155 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:155 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:155 Constant:
+0:155 0 (const uint)
+0:156 Sequence
+0:156 move second child to first child ( temp highp 3-component vector of float)
+0:156 'v' ( temp highp 3-component vector of float)
+0:156 Constant:
+0:156 0.000000
+0:156 0.000000
+0:156 0.000000
+0:157 Sequence
+0:157 move second child to first child ( temp highp 3X3 matrix of float)
+0:157 'm' ( temp highp 3X3 matrix of float)
+0:157 Constant:
+0:157 1.000000
+0:157 0.000000
+0:157 0.000000
+0:157 0.000000
+0:157 1.000000
+0:157 0.000000
+0:157 0.000000
+0:157 0.000000
+0:157 1.000000
+0:161 Branch: Return with expression
+0:161 'm' ( temp highp 3X3 matrix of float)
+0:163 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:163 Function Parameters:
+0:163 'index' ( in highp int)
+0:164 Sequence
+0:164 subtract second child into first child ( temp highp int)
+0:164 'index' ( in highp int)
+0:164 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:164 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:164 Constant:
+0:164 0 (const uint)
+0:165 Sequence
+0:165 move second child to first child ( temp highp 3-component vector of float)
+0:165 'v' ( temp highp 3-component vector of float)
+0:165 Constant:
+0:165 1.000000
+0:165 1.000000
+0:165 1.000000
+0:166 Branch: Return with expression
+0:166 'v' ( temp highp 3-component vector of float)
+0:168 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float)
+0:168 Function Parameters:
+0:168 'index' ( in highp int)
+0:169 Sequence
+0:169 subtract second child into first child ( temp highp int)
+0:169 'index' ( in highp int)
+0:169 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:169 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:169 Constant:
+0:169 0 (const uint)
+0:170 Sequence
+0:170 move second child to first child ( temp highp 3-component vector of float)
+0:170 'v' ( temp highp 3-component vector of float)
+0:170 Constant:
+0:170 0.000000
+0:170 0.000000
+0:170 0.000000
+0:171 Branch: Return with expression
+0:171 'v' ( temp highp 3-component vector of float)
+0:173 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float)
+0:173 Function Parameters:
+0:173 'index' ( in highp int)
+0:174 Sequence
+0:174 subtract second child into first child ( temp highp int)
+0:174 'index' ( in highp int)
+0:174 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:174 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:174 Constant:
+0:174 0 (const uint)
+0:175 Sequence
+0:175 move second child to first child ( temp highp 3-component vector of float)
+0:175 'v' ( temp highp 3-component vector of float)
+0:175 Constant:
+0:175 0.000000
+0:175 0.000000
+0:175 1.000000
+0:176 Branch: Return with expression
+0:176 'v' ( temp highp 3-component vector of float)
+0:178 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float)
+0:178 Function Parameters:
+0:178 'index' ( in highp int)
+0:179 Sequence
+0:179 subtract second child into first child ( temp highp int)
+0:179 'index' ( in highp int)
+0:179 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:179 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:179 Constant:
+0:179 0 (const uint)
+0:180 Sequence
+0:180 move second child to first child ( temp highp 3-component vector of float)
+0:180 'v' ( temp highp 3-component vector of float)
+0:180 Constant:
+0:180 0.000000
+0:180 1.000000
+0:180 0.000000
+0:181 Branch: Return with expression
+0:181 'v' ( temp highp 3-component vector of float)
+0:183 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:183 Function Parameters:
+0:183 'id' ( in highp int)
+0:184 Sequence
+0:184 Sequence
+0:184 move second child to first child ( temp bool)
+0:184 'instanceActive' ( temp bool)
+0:184 Constant:
+0:184 true (const bool)
+0:185 Sequence
+0:185 move second child to first child ( temp highp 3-component vector of float)
+0:185 't' ( temp highp 3-component vector of float)
+0:185 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:185 'id' ( in highp int)
+0:185 'instanceActive' ( temp bool)
+0:186 Test condition and select ( temp void)
+0:186 Condition
+0:186 Negate conditional ( temp bool)
+0:186 'instanceActive' ( temp bool)
+0:186 true case
+0:188 Sequence
+0:188 Branch: Return with expression
+0:188 Constant:
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:190 Sequence
+0:190 move second child to first child ( temp highp 4X4 matrix of float)
+0:190 'm' ( temp highp 4X4 matrix of float)
+0:190 Constant:
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:192 Sequence
+0:192 Sequence
+0:192 move second child to first child ( temp highp 3-component vector of float)
+0:192 'tt' ( temp highp 3-component vector of float)
+0:192 't' ( temp highp 3-component vector of float)
+0:193 add second child into first child ( temp highp float)
+0:193 direct index ( temp highp float)
+0:193 direct index ( temp highp 4-component vector of float)
+0:193 'm' ( temp highp 4X4 matrix of float)
+0:193 Constant:
+0:193 3 (const int)
+0:193 Constant:
+0:193 0 (const int)
+0:193 component-wise multiply ( temp highp float)
+0:193 direct index ( temp highp float)
+0:193 direct index ( temp highp 4-component vector of float)
+0:193 'm' ( temp highp 4X4 matrix of float)
+0:193 Constant:
+0:193 0 (const int)
+0:193 Constant:
+0:193 0 (const int)
+0:193 direct index ( temp highp float)
+0:193 'tt' ( temp highp 3-component vector of float)
+0:193 Constant:
+0:193 0 (const int)
+0:194 add second child into first child ( temp highp float)
+0:194 direct index ( temp highp float)
+0:194 direct index ( temp highp 4-component vector of float)
+0:194 'm' ( temp highp 4X4 matrix of float)
+0:194 Constant:
+0:194 3 (const int)
+0:194 Constant:
+0:194 1 (const int)
+0:194 component-wise multiply ( temp highp float)
+0:194 direct index ( temp highp float)
+0:194 direct index ( temp highp 4-component vector of float)
+0:194 'm' ( temp highp 4X4 matrix of float)
+0:194 Constant:
+0:194 0 (const int)
+0:194 Constant:
+0:194 1 (const int)
+0:194 direct index ( temp highp float)
+0:194 'tt' ( temp highp 3-component vector of float)
+0:194 Constant:
+0:194 0 (const int)
+0:195 add second child into first child ( temp highp float)
+0:195 direct index ( temp highp float)
+0:195 direct index ( temp highp 4-component vector of float)
+0:195 'm' ( temp highp 4X4 matrix of float)
+0:195 Constant:
+0:195 3 (const int)
+0:195 Constant:
+0:195 2 (const int)
+0:195 component-wise multiply ( temp highp float)
+0:195 direct index ( temp highp float)
+0:195 direct index ( temp highp 4-component vector of float)
+0:195 'm' ( temp highp 4X4 matrix of float)
+0:195 Constant:
+0:195 0 (const int)
+0:195 Constant:
+0:195 2 (const int)
+0:195 direct index ( temp highp float)
+0:195 'tt' ( temp highp 3-component vector of float)
+0:195 Constant:
+0:195 0 (const int)
+0:196 add second child into first child ( temp highp float)
+0:196 direct index ( temp highp float)
+0:196 direct index ( temp highp 4-component vector of float)
+0:196 'm' ( temp highp 4X4 matrix of float)
+0:196 Constant:
+0:196 3 (const int)
+0:196 Constant:
+0:196 3 (const int)
+0:196 component-wise multiply ( temp highp float)
+0:196 direct index ( temp highp float)
+0:196 direct index ( temp highp 4-component vector of float)
+0:196 'm' ( temp highp 4X4 matrix of float)
+0:196 Constant:
+0:196 0 (const int)
+0:196 Constant:
+0:196 3 (const int)
+0:196 direct index ( temp highp float)
+0:196 'tt' ( temp highp 3-component vector of float)
+0:196 Constant:
+0:196 0 (const int)
+0:197 add second child into first child ( temp highp float)
+0:197 direct index ( temp highp float)
+0:197 direct index ( temp highp 4-component vector of float)
+0:197 'm' ( temp highp 4X4 matrix of float)
+0:197 Constant:
+0:197 3 (const int)
+0:197 Constant:
+0:197 0 (const int)
+0:197 component-wise multiply ( temp highp float)
+0:197 direct index ( temp highp float)
+0:197 direct index ( temp highp 4-component vector of float)
+0:197 'm' ( temp highp 4X4 matrix of float)
+0:197 Constant:
+0:197 1 (const int)
+0:197 Constant:
+0:197 0 (const int)
+0:197 direct index ( temp highp float)
+0:197 'tt' ( temp highp 3-component vector of float)
+0:197 Constant:
+0:197 1 (const int)
+0:198 add second child into first child ( temp highp float)
+0:198 direct index ( temp highp float)
+0:198 direct index ( temp highp 4-component vector of float)
+0:198 'm' ( temp highp 4X4 matrix of float)
+0:198 Constant:
+0:198 3 (const int)
+0:198 Constant:
+0:198 1 (const int)
+0:198 component-wise multiply ( temp highp float)
+0:198 direct index ( temp highp float)
+0:198 direct index ( temp highp 4-component vector of float)
+0:198 'm' ( temp highp 4X4 matrix of float)
+0:198 Constant:
+0:198 1 (const int)
+0:198 Constant:
+0:198 1 (const int)
+0:198 direct index ( temp highp float)
+0:198 'tt' ( temp highp 3-component vector of float)
+0:198 Constant:
+0:198 1 (const int)
+0:199 add second child into first child ( temp highp float)
+0:199 direct index ( temp highp float)
+0:199 direct index ( temp highp 4-component vector of float)
+0:199 'm' ( temp highp 4X4 matrix of float)
+0:199 Constant:
+0:199 3 (const int)
+0:199 Constant:
+0:199 2 (const int)
+0:199 component-wise multiply ( temp highp float)
+0:199 direct index ( temp highp float)
+0:199 direct index ( temp highp 4-component vector of float)
+0:199 'm' ( temp highp 4X4 matrix of float)
+0:199 Constant:
+0:199 1 (const int)
+0:199 Constant:
+0:199 2 (const int)
+0:199 direct index ( temp highp float)
+0:199 'tt' ( temp highp 3-component vector of float)
+0:199 Constant:
+0:199 1 (const int)
+0:200 add second child into first child ( temp highp float)
+0:200 direct index ( temp highp float)
+0:200 direct index ( temp highp 4-component vector of float)
+0:200 'm' ( temp highp 4X4 matrix of float)
+0:200 Constant:
+0:200 3 (const int)
+0:200 Constant:
+0:200 3 (const int)
+0:200 component-wise multiply ( temp highp float)
+0:200 direct index ( temp highp float)
+0:200 direct index ( temp highp 4-component vector of float)
+0:200 'm' ( temp highp 4X4 matrix of float)
+0:200 Constant:
+0:200 1 (const int)
+0:200 Constant:
+0:200 3 (const int)
+0:200 direct index ( temp highp float)
+0:200 'tt' ( temp highp 3-component vector of float)
+0:200 Constant:
+0:200 1 (const int)
+0:201 add second child into first child ( temp highp float)
+0:201 direct index ( temp highp float)
+0:201 direct index ( temp highp 4-component vector of float)
+0:201 'm' ( temp highp 4X4 matrix of float)
+0:201 Constant:
+0:201 3 (const int)
+0:201 Constant:
+0:201 0 (const int)
+0:201 component-wise multiply ( temp highp float)
+0:201 direct index ( temp highp float)
+0:201 direct index ( temp highp 4-component vector of float)
+0:201 'm' ( temp highp 4X4 matrix of float)
+0:201 Constant:
+0:201 2 (const int)
+0:201 Constant:
+0:201 0 (const int)
+0:201 direct index ( temp highp float)
+0:201 'tt' ( temp highp 3-component vector of float)
+0:201 Constant:
+0:201 2 (const int)
+0:202 add second child into first child ( temp highp float)
+0:202 direct index ( temp highp float)
+0:202 direct index ( temp highp 4-component vector of float)
+0:202 'm' ( temp highp 4X4 matrix of float)
+0:202 Constant:
+0:202 3 (const int)
+0:202 Constant:
+0:202 1 (const int)
+0:202 component-wise multiply ( temp highp float)
+0:202 direct index ( temp highp float)
+0:202 direct index ( temp highp 4-component vector of float)
+0:202 'm' ( temp highp 4X4 matrix of float)
+0:202 Constant:
+0:202 2 (const int)
+0:202 Constant:
+0:202 1 (const int)
+0:202 direct index ( temp highp float)
+0:202 'tt' ( temp highp 3-component vector of float)
+0:202 Constant:
+0:202 2 (const int)
+0:203 add second child into first child ( temp highp float)
+0:203 direct index ( temp highp float)
+0:203 direct index ( temp highp 4-component vector of float)
+0:203 'm' ( temp highp 4X4 matrix of float)
+0:203 Constant:
+0:203 3 (const int)
+0:203 Constant:
+0:203 2 (const int)
+0:203 component-wise multiply ( temp highp float)
+0:203 direct index ( temp highp float)
+0:203 direct index ( temp highp 4-component vector of float)
+0:203 'm' ( temp highp 4X4 matrix of float)
+0:203 Constant:
+0:203 2 (const int)
+0:203 Constant:
+0:203 2 (const int)
+0:203 direct index ( temp highp float)
+0:203 'tt' ( temp highp 3-component vector of float)
+0:203 Constant:
+0:203 2 (const int)
+0:204 add second child into first child ( temp highp float)
+0:204 direct index ( temp highp float)
+0:204 direct index ( temp highp 4-component vector of float)
+0:204 'm' ( temp highp 4X4 matrix of float)
+0:204 Constant:
+0:204 3 (const int)
+0:204 Constant:
+0:204 3 (const int)
+0:204 component-wise multiply ( temp highp float)
+0:204 direct index ( temp highp float)
+0:204 direct index ( temp highp 4-component vector of float)
+0:204 'm' ( temp highp 4X4 matrix of float)
+0:204 Constant:
+0:204 2 (const int)
+0:204 Constant:
+0:204 3 (const int)
+0:204 direct index ( temp highp float)
+0:204 'tt' ( temp highp 3-component vector of float)
+0:204 Constant:
+0:204 2 (const int)
+0:206 Branch: Return with expression
+0:206 'm' ( temp highp 4X4 matrix of float)
+0:208 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:208 Function Parameters:
+0:208 'id' ( in highp int)
+0:209 Sequence
+0:209 Sequence
+0:209 move second child to first child ( temp highp 3X3 matrix of float)
+0:209 'm' ( temp highp 3X3 matrix of float)
+0:209 Constant:
+0:209 1.000000
+0:209 0.000000
+0:209 0.000000
+0:209 0.000000
+0:209 1.000000
+0:209 0.000000
+0:209 0.000000
+0:209 0.000000
+0:209 1.000000
+0:210 Branch: Return with expression
+0:210 'm' ( temp highp 3X3 matrix of float)
+0:212 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:212 Function Parameters:
+0:212 'id' ( in highp int)
+0:213 Sequence
+0:213 Sequence
+0:213 move second child to first child ( temp highp 3X3 matrix of float)
+0:213 'm' ( temp highp 3X3 matrix of float)
+0:213 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:213 'id' ( in highp int)
+0:214 Branch: Return with expression
+0:214 'm' ( temp highp 3X3 matrix of float)
+0:216 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:216 Function Parameters:
+0:216 'index' ( in highp int)
+0:216 'curColor' ( in highp 4-component vector of float)
+0:217 Sequence
+0:217 subtract second child into first child ( temp highp int)
+0:217 'index' ( in highp int)
+0:217 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:217 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:217 Constant:
+0:217 0 (const uint)
+0:219 Sequence
+0:219 move second child to first child ( temp highp int)
+0:219 'coord' ( temp highp int)
+0:219 'index' ( in highp int)
+0:220 Sequence
+0:220 move second child to first child ( temp highp 4-component vector of float)
+0:220 'samp' ( temp highp 4-component vector of float)
+0:220 textureFetch ( global highp 4-component vector of float)
+0:220 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:220 'coord' ( temp highp int)
+0:221 move second child to first child ( temp highp float)
+0:221 direct index ( temp highp float)
+0:221 'v' ( temp highp 4-component vector of float)
+0:221 Constant:
+0:221 0 (const int)
+0:221 direct index ( temp highp float)
+0:221 'samp' ( temp highp 4-component vector of float)
+0:221 Constant:
+0:221 0 (const int)
+0:222 move second child to first child ( temp highp float)
+0:222 direct index ( temp highp float)
+0:222 'v' ( temp highp 4-component vector of float)
+0:222 Constant:
+0:222 1 (const int)
+0:222 direct index ( temp highp float)
+0:222 'samp' ( temp highp 4-component vector of float)
+0:222 Constant:
+0:222 1 (const int)
+0:223 move second child to first child ( temp highp float)
+0:223 direct index ( temp highp float)
+0:223 'v' ( temp highp 4-component vector of float)
+0:223 Constant:
+0:223 2 (const int)
+0:223 direct index ( temp highp float)
+0:223 'samp' ( temp highp 4-component vector of float)
+0:223 Constant:
+0:223 2 (const int)
+0:224 move second child to first child ( temp highp float)
+0:224 direct index ( temp highp float)
+0:224 'v' ( temp highp 4-component vector of float)
+0:224 Constant:
+0:224 3 (const int)
+0:224 Constant:
+0:224 1.000000
+0:225 move second child to first child ( temp highp float)
+0:225 direct index ( temp highp float)
+0:225 'curColor' ( in highp 4-component vector of float)
+0:225 Constant:
+0:225 0 (const int)
+0:225 direct index ( temp highp float)
+0:225 'v' ( temp highp 4-component vector of float)
+0:225 Constant:
+0:225 0 (const int)
+0:227 move second child to first child ( temp highp float)
+0:227 direct index ( temp highp float)
+0:227 'curColor' ( in highp 4-component vector of float)
+0:227 Constant:
+0:227 1 (const int)
+0:227 direct index ( temp highp float)
+0:227 'v' ( temp highp 4-component vector of float)
+0:227 Constant:
+0:227 1 (const int)
+0:229 move second child to first child ( temp highp float)
+0:229 direct index ( temp highp float)
+0:229 'curColor' ( in highp 4-component vector of float)
+0:229 Constant:
+0:229 2 (const int)
+0:229 direct index ( temp highp float)
+0:229 'v' ( temp highp 4-component vector of float)
+0:229 Constant:
+0:229 2 (const int)
+0:231 Branch: Return with expression
+0:231 'curColor' ( in highp 4-component vector of float)
+0:233 Function Definition: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:233 Function Parameters:
+0:233 'id' ( in highp int)
+0:233 'pos' ( in highp 4-component vector of float)
+0:234 Sequence
+0:234 move second child to first child ( temp highp 4-component vector of float)
+0:234 'pos' ( in highp 4-component vector of float)
+0:234 matrix-times-vector ( temp highp 4-component vector of float)
+0:234 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:234 'id' ( in highp int)
+0:234 'pos' ( in highp 4-component vector of float)
+0:235 Branch: Return with expression
+0:235 matrix-times-vector ( temp highp 4-component vector of float)
+0:235 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:235 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:235 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:235 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:235 Constant:
+0:235 0 (const uint)
+0:235 Function Call: TDCameraIndex( ( global highp int)
+0:235 Constant:
+0:235 0 (const int)
+0:235 'pos' ( in highp 4-component vector of float)
+0:238 Function Definition: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:238 Function Parameters:
+0:238 'id' ( in highp int)
+0:238 'vec' ( in highp 3-component vector of float)
+0:240 Sequence
+0:240 Sequence
+0:240 move second child to first child ( temp highp 3X3 matrix of float)
+0:240 'm' ( temp highp 3X3 matrix of float)
+0:240 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:240 'id' ( in highp int)
+0:241 Branch: Return with expression
+0:241 matrix-times-vector ( temp highp 3-component vector of float)
+0:241 Construct mat3 ( temp highp 3X3 matrix of float)
+0:241 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:241 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:241 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:241 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:241 Constant:
+0:241 0 (const uint)
+0:241 Function Call: TDCameraIndex( ( global highp int)
+0:241 Constant:
+0:241 0 (const int)
+0:241 matrix-times-vector ( temp highp 3-component vector of float)
+0:241 'm' ( temp highp 3X3 matrix of float)
+0:241 'vec' ( in highp 3-component vector of float)
+0:243 Function Definition: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:243 Function Parameters:
+0:243 'id' ( in highp int)
+0:243 'vec' ( in highp 3-component vector of float)
+0:245 Sequence
+0:245 Sequence
+0:245 move second child to first child ( temp highp 3X3 matrix of float)
+0:245 'm' ( temp highp 3X3 matrix of float)
+0:245 Function Call: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:245 'id' ( in highp int)
+0:246 Branch: Return with expression
+0:246 matrix-times-vector ( temp highp 3-component vector of float)
+0:246 Construct mat3 ( temp highp 3X3 matrix of float)
+0:246 worldForNormals: direct index for structure (layout( column_major std140) global highp 3X3 matrix of float)
+0:246 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:246 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:246 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:246 Constant:
+0:246 0 (const uint)
+0:246 Function Call: TDCameraIndex( ( global highp int)
+0:246 Constant:
+0:246 13 (const int)
+0:246 matrix-times-vector ( temp highp 3-component vector of float)
+0:246 'm' ( temp highp 3X3 matrix of float)
+0:246 'vec' ( in highp 3-component vector of float)
+0:248 Function Definition: TDInstanceDeform(vf4; ( global highp 4-component vector of float)
+0:248 Function Parameters:
+0:248 'pos' ( in highp 4-component vector of float)
+0:249 Sequence
+0:249 Branch: Return with expression
+0:249 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:249 Function Call: TDInstanceID( ( global highp int)
+0:249 'pos' ( in highp 4-component vector of float)
+0:251 Function Definition: TDInstanceDeformVec(vf3; ( global highp 3-component vector of float)
+0:251 Function Parameters:
+0:251 'vec' ( in highp 3-component vector of float)
+0:252 Sequence
+0:252 Branch: Return with expression
+0:252 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:252 Function Call: TDInstanceID( ( global highp int)
+0:252 'vec' ( in highp 3-component vector of float)
+0:254 Function Definition: TDInstanceDeformNorm(vf3; ( global highp 3-component vector of float)
+0:254 Function Parameters:
+0:254 'vec' ( in highp 3-component vector of float)
+0:255 Sequence
+0:255 Branch: Return with expression
+0:255 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:255 Function Call: TDInstanceID( ( global highp int)
+0:255 'vec' ( in highp 3-component vector of float)
+0:257 Function Definition: TDInstanceActive( ( global bool)
+0:257 Function Parameters:
+0:257 Sequence
+0:257 Branch: Return with expression
+0:257 Function Call: TDInstanceActive(i1; ( global bool)
+0:257 Function Call: TDInstanceID( ( global highp int)
+0:258 Function Definition: TDInstanceTranslate( ( global highp 3-component vector of float)
+0:258 Function Parameters:
+0:258 Sequence
+0:258 Branch: Return with expression
+0:258 Function Call: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:258 Function Call: TDInstanceID( ( global highp int)
+0:259 Function Definition: TDInstanceRotateMat( ( global highp 3X3 matrix of float)
+0:259 Function Parameters:
+0:259 Sequence
+0:259 Branch: Return with expression
+0:259 Function Call: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:259 Function Call: TDInstanceID( ( global highp int)
+0:260 Function Definition: TDInstanceScale( ( global highp 3-component vector of float)
+0:260 Function Parameters:
+0:260 Sequence
+0:260 Branch: Return with expression
+0:260 Function Call: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:260 Function Call: TDInstanceID( ( global highp int)
+0:261 Function Definition: TDInstanceMat( ( global highp 4X4 matrix of float)
+0:261 Function Parameters:
+0:261 Sequence
+0:261 Branch: Return with expression
+0:261 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:261 Function Call: TDInstanceID( ( global highp int)
+0:263 Function Definition: TDInstanceMat3( ( global highp 3X3 matrix of float)
+0:263 Function Parameters:
+0:263 Sequence
+0:263 Branch: Return with expression
+0:263 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:263 Function Call: TDInstanceID( ( global highp int)
+0:265 Function Definition: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:265 Function Parameters:
+0:265 't' ( in highp 3-component vector of float)
+0:266 Sequence
+0:266 Branch: Return with expression
+0:266 Function Call: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:266 Function Call: TDInstanceID( ( global highp int)
+0:266 't' ( in highp 3-component vector of float)
+0:268 Function Definition: TDInstanceColor(vf4; ( global highp 4-component vector of float)
+0:268 Function Parameters:
+0:268 'curColor' ( in highp 4-component vector of float)
+0:269 Sequence
+0:269 Branch: Return with expression
+0:269 Function Call: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:269 Function Call: TDInstanceID( ( global highp int)
+0:269 'curColor' ( in highp 4-component vector of float)
+0:271 Function Definition: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:271 Function Parameters:
+0:271 'pos' ( in highp 4-component vector of float)
+0:271 Sequence
+0:271 Branch: Return with expression
+0:271 'pos' ( in highp 4-component vector of float)
+0:273 Function Definition: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:273 Function Parameters:
+0:273 'vec' ( in highp 3-component vector of float)
+0:273 Sequence
+0:273 Branch: Return with expression
+0:273 'vec' ( in highp 3-component vector of float)
+0:275 Function Definition: TDFastDeformTangent(vf3;vf4;vf3; ( global highp 3-component vector of float)
+0:275 Function Parameters:
+0:275 'oldNorm' ( in highp 3-component vector of float)
+0:275 'oldTangent' ( in highp 4-component vector of float)
+0:275 'deformedNorm' ( in highp 3-component vector of float)
+0:276 Sequence
+0:276 Branch: Return with expression
+0:276 vector swizzle ( temp highp 3-component vector of float)
+0:276 'oldTangent' ( in highp 4-component vector of float)
+0:276 Sequence
+0:276 Constant:
+0:276 0 (const int)
+0:276 Constant:
+0:276 1 (const int)
+0:276 Constant:
+0:276 2 (const int)
+0:277 Function Definition: TDBoneMat(i1; ( global highp 4X4 matrix of float)
+0:277 Function Parameters:
+0:277 'index' ( in highp int)
+0:278 Sequence
+0:278 Branch: Return with expression
+0:278 Constant:
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:280 Function Definition: TDDeform(vf4; ( global highp 4-component vector of float)
+0:280 Function Parameters:
+0:280 'pos' ( in highp 4-component vector of float)
+0:281 Sequence
+0:281 move second child to first child ( temp highp 4-component vector of float)
+0:281 'pos' ( in highp 4-component vector of float)
+0:281 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:281 'pos' ( in highp 4-component vector of float)
+0:282 move second child to first child ( temp highp 4-component vector of float)
+0:282 'pos' ( in highp 4-component vector of float)
+0:282 Function Call: TDInstanceDeform(vf4; ( global highp 4-component vector of float)
+0:282 'pos' ( in highp 4-component vector of float)
+0:283 Branch: Return with expression
+0:283 'pos' ( in highp 4-component vector of float)
+0:286 Function Definition: TDDeform(i1;vf3; ( global highp 4-component vector of float)
+0:286 Function Parameters:
+0:286 'instanceID' ( in highp int)
+0:286 'p' ( in highp 3-component vector of float)
+0:287 Sequence
+0:287 Sequence
+0:287 move second child to first child ( temp highp 4-component vector of float)
+0:287 'pos' ( temp highp 4-component vector of float)
+0:287 Construct vec4 ( temp highp 4-component vector of float)
+0:287 'p' ( in highp 3-component vector of float)
+0:287 Constant:
+0:287 1.000000
+0:288 move second child to first child ( temp highp 4-component vector of float)
+0:288 'pos' ( temp highp 4-component vector of float)
+0:288 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:288 'pos' ( temp highp 4-component vector of float)
+0:289 move second child to first child ( temp highp 4-component vector of float)
+0:289 'pos' ( temp highp 4-component vector of float)
+0:289 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:289 'instanceID' ( in highp int)
+0:289 'pos' ( temp highp 4-component vector of float)
+0:290 Branch: Return with expression
+0:290 'pos' ( temp highp 4-component vector of float)
+0:293 Function Definition: TDDeform(vf3; ( global highp 4-component vector of float)
+0:293 Function Parameters:
+0:293 'pos' ( in highp 3-component vector of float)
+0:294 Sequence
+0:294 Branch: Return with expression
+0:294 Function Call: TDDeform(i1;vf3; ( global highp 4-component vector of float)
+0:294 Function Call: TDInstanceID( ( global highp int)
+0:294 'pos' ( in highp 3-component vector of float)
+0:297 Function Definition: TDDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:297 Function Parameters:
+0:297 'instanceID' ( in highp int)
+0:297 'vec' ( in highp 3-component vector of float)
+0:298 Sequence
+0:298 move second child to first child ( temp highp 3-component vector of float)
+0:298 'vec' ( in highp 3-component vector of float)
+0:298 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:298 'vec' ( in highp 3-component vector of float)
+0:299 move second child to first child ( temp highp 3-component vector of float)
+0:299 'vec' ( in highp 3-component vector of float)
+0:299 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:299 'instanceID' ( in highp int)
+0:299 'vec' ( in highp 3-component vector of float)
+0:300 Branch: Return with expression
+0:300 'vec' ( in highp 3-component vector of float)
+0:303 Function Definition: TDDeformVec(vf3; ( global highp 3-component vector of float)
+0:303 Function Parameters:
+0:303 'vec' ( in highp 3-component vector of float)
+0:304 Sequence
+0:304 Branch: Return with expression
+0:304 Function Call: TDDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:304 Function Call: TDInstanceID( ( global highp int)
+0:304 'vec' ( in highp 3-component vector of float)
+0:307 Function Definition: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:307 Function Parameters:
+0:307 'instanceID' ( in highp int)
+0:307 'vec' ( in highp 3-component vector of float)
+0:308 Sequence
+0:308 move second child to first child ( temp highp 3-component vector of float)
+0:308 'vec' ( in highp 3-component vector of float)
+0:308 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:308 'vec' ( in highp 3-component vector of float)
+0:309 move second child to first child ( temp highp 3-component vector of float)
+0:309 'vec' ( in highp 3-component vector of float)
+0:309 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:309 'instanceID' ( in highp int)
+0:309 'vec' ( in highp 3-component vector of float)
+0:310 Branch: Return with expression
+0:310 'vec' ( in highp 3-component vector of float)
+0:313 Function Definition: TDDeformNorm(vf3; ( global highp 3-component vector of float)
+0:313 Function Parameters:
+0:313 'vec' ( in highp 3-component vector of float)
+0:314 Sequence
+0:314 Branch: Return with expression
+0:314 Function Call: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:314 Function Call: TDInstanceID( ( global highp int)
+0:314 'vec' ( in highp 3-component vector of float)
+0:317 Function Definition: TDSkinnedDeformNorm(vf3; ( global highp 3-component vector of float)
+0:317 Function Parameters:
+0:317 'vec' ( in highp 3-component vector of float)
+0:318 Sequence
+0:318 move second child to first child ( temp highp 3-component vector of float)
+0:318 'vec' ( in highp 3-component vector of float)
+0:318 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:318 'vec' ( in highp 3-component vector of float)
+0:319 Branch: Return with expression
+0:319 'vec' ( in highp 3-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:? 'gl_VertexIndex' ( in int VertexIndex)
+0:? 'gl_InstanceIndex' ( in int InstanceIndex)
+
+vk.relaxed.stagelink.0.0.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:95 Function Definition: main( ( global void)
+0:95 Function Parameters:
+0:99 Sequence
+0:99 Function Call: TDCheckDiscard( ( global void)
+0:101 Sequence
+0:101 move second child to first child ( temp highp 4-component vector of float)
+0:101 'outcol' ( temp highp 4-component vector of float)
+0:101 Constant:
+0:101 0.000000
+0:101 0.000000
+0:101 0.000000
+0:101 0.000000
+0:103 Sequence
+0:103 move second child to first child ( temp highp 3-component vector of float)
+0:103 'texCoord0' ( temp highp 3-component vector of float)
+0:103 vector swizzle ( temp highp 3-component vector of float)
+0:103 texCoord0: direct index for structure ( in highp 3-component vector of float)
+0:103 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:103 Constant:
+0:103 2 (const int)
+0:103 Sequence
+0:103 Constant:
+0:103 0 (const int)
+0:103 Constant:
+0:103 1 (const int)
+0:103 Constant:
+0:103 2 (const int)
+0:104 Sequence
+0:104 move second child to first child ( temp highp float)
+0:104 'actualTexZ' ( temp highp float)
+0:104 mod ( global highp float)
+0:104 Convert int to float ( temp highp float)
+0:104 Convert float to int ( temp highp int)
+0:104 direct index ( temp highp float)
+0:104 'texCoord0' ( temp highp 3-component vector of float)
+0:104 Constant:
+0:104 2 (const int)
+0:104 Constant:
+0:104 2048.000000
+0:105 Sequence
+0:105 move second child to first child ( temp highp float)
+0:105 'instanceLoop' ( temp highp float)
+0:105 Floor ( global highp float)
+0:105 Convert int to float ( temp highp float)
+0:105 divide ( temp highp int)
+0:105 Convert float to int ( temp highp int)
+0:105 direct index ( temp highp float)
+0:105 'texCoord0' ( temp highp 3-component vector of float)
+0:105 Constant:
+0:105 2 (const int)
+0:105 Constant:
+0:105 2048 (const int)
+0:106 move second child to first child ( temp highp float)
+0:106 direct index ( temp highp float)
+0:106 'texCoord0' ( temp highp 3-component vector of float)
+0:106 Constant:
+0:106 2 (const int)
+0:106 'actualTexZ' ( temp highp float)
+0:107 Sequence
+0:107 move second child to first child ( temp highp 4-component vector of float)
+0:107 'colorMapColor' ( temp highp 4-component vector of float)
+0:107 texture ( global highp 4-component vector of float)
+0:107 'sColorMap' ( uniform highp sampler2DArray)
+0:107 vector swizzle ( temp highp 3-component vector of float)
+0:107 'texCoord0' ( temp highp 3-component vector of float)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:109 Sequence
+0:109 move second child to first child ( temp highp float)
+0:109 'red' ( temp highp float)
+0:109 indirect index ( temp highp float)
+0:109 'colorMapColor' ( temp highp 4-component vector of float)
+0:109 Convert float to int ( temp highp int)
+0:109 'instanceLoop' ( temp highp float)
+0:110 move second child to first child ( temp highp 4-component vector of float)
+0:110 'colorMapColor' ( temp highp 4-component vector of float)
+0:110 Construct vec4 ( temp highp 4-component vector of float)
+0:110 'red' ( temp highp float)
+0:112 add second child into first child ( temp highp 3-component vector of float)
+0:112 vector swizzle ( temp highp 3-component vector of float)
+0:112 'outcol' ( temp highp 4-component vector of float)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:112 component-wise multiply ( temp highp 3-component vector of float)
+0:112 uConstant: direct index for structure ( uniform highp 3-component vector of float)
+0:112 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:112 Constant:
+0:112 3 (const uint)
+0:112 vector swizzle ( temp highp 3-component vector of float)
+0:112 color: direct index for structure ( in highp 4-component vector of float)
+0:112 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:112 Constant:
+0:112 0 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:114 multiply second child into first child ( temp highp 4-component vector of float)
+0:114 'outcol' ( temp highp 4-component vector of float)
+0:114 'colorMapColor' ( temp highp 4-component vector of float)
+0:117 Sequence
+0:117 move second child to first child ( temp highp float)
+0:117 'alpha' ( temp highp float)
+0:117 component-wise multiply ( temp highp float)
+0:117 direct index ( temp highp float)
+0:117 color: direct index for structure ( in highp 4-component vector of float)
+0:117 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 3 (const int)
+0:117 direct index ( temp highp float)
+0:117 'colorMapColor' ( temp highp 4-component vector of float)
+0:117 Constant:
+0:117 3 (const int)
+0:120 move second child to first child ( temp highp 4-component vector of float)
+0:120 'outcol' ( temp highp 4-component vector of float)
+0:120 Function Call: TDDither(vf4; ( global highp 4-component vector of float)
+0:120 'outcol' ( temp highp 4-component vector of float)
+0:122 vector scale second child into first child ( temp highp 3-component vector of float)
+0:122 vector swizzle ( temp highp 3-component vector of float)
+0:122 'outcol' ( temp highp 4-component vector of float)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:122 'alpha' ( temp highp float)
+0:126 Function Call: TDAlphaTest(f1; ( global void)
+0:126 'alpha' ( temp highp float)
+0:128 move second child to first child ( temp highp float)
+0:128 direct index ( temp highp float)
+0:128 'outcol' ( temp highp 4-component vector of float)
+0:128 Constant:
+0:128 3 (const int)
+0:128 'alpha' ( temp highp float)
+0:129 move second child to first child ( temp highp 4-component vector of float)
+0:129 direct index (layout( location=0) temp highp 4-component vector of float)
+0:129 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:129 Constant:
+0:129 0 (const int)
+0:129 Function Call: TDOutputSwizzle(vf4; ( global highp 4-component vector of float)
+0:129 'outcol' ( temp highp 4-component vector of float)
+0:135 Sequence
+0:135 Sequence
+0:135 move second child to first child ( temp highp int)
+0:135 'i' ( temp highp int)
+0:135 Constant:
+0:135 1 (const int)
+0:135 Loop with condition tested first
+0:135 Loop Condition
+0:135 Compare Less Than ( temp bool)
+0:135 'i' ( temp highp int)
+0:135 Constant:
+0:135 1 (const int)
+0:135 Loop Body
+0:137 Sequence
+0:137 move second child to first child ( temp highp 4-component vector of float)
+0:137 indirect index (layout( location=0) temp highp 4-component vector of float)
+0:137 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:137 'i' ( temp highp int)
+0:137 Constant:
+0:137 0.000000
+0:137 0.000000
+0:137 0.000000
+0:137 0.000000
+0:135 Loop Terminal Expression
+0:135 Post-Increment ( temp highp int)
+0:135 'i' ( temp highp int)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'sColorMap' ( uniform highp sampler2DArray)
+0:? 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:? 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+
+vk.relaxed.stagelink.0.1.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:116 Function Definition: TDColor(vf4; ( global highp 4-component vector of float)
+0:116 Function Parameters:
+0:116 'color' ( in highp 4-component vector of float)
+0:116 Sequence
+0:116 Branch: Return with expression
+0:116 'color' ( in highp 4-component vector of float)
+0:117 Function Definition: TDCheckOrderIndTrans( ( global void)
+0:117 Function Parameters:
+0:119 Function Definition: TDCheckDiscard( ( global void)
+0:119 Function Parameters:
+0:120 Sequence
+0:120 Function Call: TDCheckOrderIndTrans( ( global void)
+0:122 Function Definition: TDDither(vf4; ( global highp 4-component vector of float)
+0:122 Function Parameters:
+0:122 'color' ( in highp 4-component vector of float)
+0:124 Sequence
+0:124 Sequence
+0:124 move second child to first child ( temp highp float)
+0:124 'd' ( temp highp float)
+0:125 direct index ( temp highp float)
+0:125 texture ( global highp 4-component vector of float)
+0:124 'sTDNoiseMap' ( uniform highp sampler2D)
+0:125 divide ( temp highp 2-component vector of float)
+0:125 vector swizzle ( temp highp 2-component vector of float)
+0:125 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord)
+0:125 Sequence
+0:125 Constant:
+0:125 0 (const int)
+0:125 Constant:
+0:125 1 (const int)
+0:125 Constant:
+0:125 256.000000
+0:125 Constant:
+0:125 0 (const int)
+0:126 subtract second child into first child ( temp highp float)
+0:126 'd' ( temp highp float)
+0:126 Constant:
+0:126 0.500000
+0:127 divide second child into first child ( temp highp float)
+0:127 'd' ( temp highp float)
+0:127 Constant:
+0:127 256.000000
+0:128 Branch: Return with expression
+0:128 Construct vec4 ( temp highp 4-component vector of float)
+0:128 add ( temp highp 3-component vector of float)
+0:128 vector swizzle ( temp highp 3-component vector of float)
+0:128 'color' ( in highp 4-component vector of float)
+0:128 Sequence
+0:128 Constant:
+0:128 0 (const int)
+0:128 Constant:
+0:128 1 (const int)
+0:128 Constant:
+0:128 2 (const int)
+0:128 'd' ( temp highp float)
+0:128 direct index ( temp highp float)
+0:128 'color' ( in highp 4-component vector of float)
+0:128 Constant:
+0:128 3 (const int)
+0:130 Function Definition: TDFrontFacing(vf3;vf3; ( global bool)
+0:130 Function Parameters:
+0:130 'pos' ( in highp 3-component vector of float)
+0:130 'normal' ( in highp 3-component vector of float)
+0:132 Sequence
+0:132 Branch: Return with expression
+0:132 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:134 Function Definition: TDAttenuateLight(i1;f1; ( global highp float)
+0:134 Function Parameters:
+0:134 'index' ( in highp int)
+0:134 'lightDist' ( in highp float)
+0:136 Sequence
+0:136 Branch: Return with expression
+0:136 Constant:
+0:136 1.000000
+0:138 Function Definition: TDAlphaTest(f1; ( global void)
+0:138 Function Parameters:
+0:138 'alpha' ( in highp float)
+0:140 Function Definition: TDHardShadow(i1;vf3; ( global highp float)
+0:140 Function Parameters:
+0:140 'lightIndex' ( in highp int)
+0:140 'worldSpacePos' ( in highp 3-component vector of float)
+0:141 Sequence
+0:141 Branch: Return with expression
+0:141 Constant:
+0:141 0.000000
+0:142 Function Definition: TDSoftShadow(i1;vf3;i1;i1; ( global highp float)
+0:142 Function Parameters:
+0:142 'lightIndex' ( in highp int)
+0:142 'worldSpacePos' ( in highp 3-component vector of float)
+0:142 'samples' ( in highp int)
+0:142 'steps' ( in highp int)
+0:143 Sequence
+0:143 Branch: Return with expression
+0:143 Constant:
+0:143 0.000000
+0:144 Function Definition: TDSoftShadow(i1;vf3; ( global highp float)
+0:144 Function Parameters:
+0:144 'lightIndex' ( in highp int)
+0:144 'worldSpacePos' ( in highp 3-component vector of float)
+0:145 Sequence
+0:145 Branch: Return with expression
+0:145 Constant:
+0:145 0.000000
+0:146 Function Definition: TDShadow(i1;vf3; ( global highp float)
+0:146 Function Parameters:
+0:146 'lightIndex' ( in highp int)
+0:146 'worldSpacePos' ( in highp 3-component vector of float)
+0:147 Sequence
+0:147 Branch: Return with expression
+0:147 Constant:
+0:147 0.000000
+0:152 Function Definition: iTDRadicalInverse_VdC(u1; ( global highp float)
+0:152 Function Parameters:
+0:152 'bits' ( in highp uint)
+0:154 Sequence
+0:154 move second child to first child ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 inclusive-or ( temp highp uint)
+0:154 left-shift ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 Constant:
+0:154 16 (const uint)
+0:154 right-shift ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 Constant:
+0:154 16 (const uint)
+0:155 move second child to first child ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 inclusive-or ( temp highp uint)
+0:155 left-shift ( temp highp uint)
+0:155 bitwise and ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 Constant:
+0:155 1431655765 (const uint)
+0:155 Constant:
+0:155 1 (const uint)
+0:155 right-shift ( temp highp uint)
+0:155 bitwise and ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 Constant:
+0:155 2863311530 (const uint)
+0:155 Constant:
+0:155 1 (const uint)
+0:156 move second child to first child ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 inclusive-or ( temp highp uint)
+0:156 left-shift ( temp highp uint)
+0:156 bitwise and ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 Constant:
+0:156 858993459 (const uint)
+0:156 Constant:
+0:156 2 (const uint)
+0:156 right-shift ( temp highp uint)
+0:156 bitwise and ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 Constant:
+0:156 3435973836 (const uint)
+0:156 Constant:
+0:156 2 (const uint)
+0:157 move second child to first child ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 inclusive-or ( temp highp uint)
+0:157 left-shift ( temp highp uint)
+0:157 bitwise and ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 Constant:
+0:157 252645135 (const uint)
+0:157 Constant:
+0:157 4 (const uint)
+0:157 right-shift ( temp highp uint)
+0:157 bitwise and ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 Constant:
+0:157 4042322160 (const uint)
+0:157 Constant:
+0:157 4 (const uint)
+0:158 move second child to first child ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 inclusive-or ( temp highp uint)
+0:158 left-shift ( temp highp uint)
+0:158 bitwise and ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 Constant:
+0:158 16711935 (const uint)
+0:158 Constant:
+0:158 8 (const uint)
+0:158 right-shift ( temp highp uint)
+0:158 bitwise and ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 Constant:
+0:158 4278255360 (const uint)
+0:158 Constant:
+0:158 8 (const uint)
+0:159 Branch: Return with expression
+0:159 component-wise multiply ( temp highp float)
+0:159 Convert uint to float ( temp highp float)
+0:159 'bits' ( in highp uint)
+0:159 Constant:
+0:159 2.3283064365387e-10
+0:161 Function Definition: iTDHammersley(u1;u1; ( global highp 2-component vector of float)
+0:161 Function Parameters:
+0:161 'i' ( in highp uint)
+0:161 'N' ( in highp uint)
+0:163 Sequence
+0:163 Branch: Return with expression
+0:163 Construct vec2 ( temp highp 2-component vector of float)
+0:163 divide ( temp highp float)
+0:163 Convert uint to float ( temp highp float)
+0:163 'i' ( in highp uint)
+0:163 Convert uint to float ( temp highp float)
+0:163 'N' ( in highp uint)
+0:163 Function Call: iTDRadicalInverse_VdC(u1; ( global highp float)
+0:163 'i' ( in highp uint)
+0:165 Function Definition: iTDImportanceSampleGGX(vf2;f1;vf3; ( global highp 3-component vector of float)
+0:165 Function Parameters:
+0:165 'Xi' ( in highp 2-component vector of float)
+0:165 'roughness2' ( in highp float)
+0:165 'N' ( in highp 3-component vector of float)
+0:167 Sequence
+0:167 Sequence
+0:167 move second child to first child ( temp highp float)
+0:167 'a' ( temp highp float)
+0:167 'roughness2' ( in highp float)
+0:168 Sequence
+0:168 move second child to first child ( temp highp float)
+0:168 'phi' ( temp highp float)
+0:168 component-wise multiply ( temp highp float)
+0:168 Constant:
+0:168 6.283185
+0:168 direct index ( temp highp float)
+0:168 'Xi' ( in highp 2-component vector of float)
+0:168 Constant:
+0:168 0 (const int)
+0:169 Sequence
+0:169 move second child to first child ( temp highp float)
+0:169 'cosTheta' ( temp highp float)
+0:169 sqrt ( global highp float)
+0:169 divide ( temp highp float)
+0:169 subtract ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 direct index ( temp highp float)
+0:169 'Xi' ( in highp 2-component vector of float)
+0:169 Constant:
+0:169 1 (const int)
+0:169 add ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 component-wise multiply ( temp highp float)
+0:169 subtract ( temp highp float)
+0:169 component-wise multiply ( temp highp float)
+0:169 'a' ( temp highp float)
+0:169 'a' ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 direct index ( temp highp float)
+0:169 'Xi' ( in highp 2-component vector of float)
+0:169 Constant:
+0:169 1 (const int)
+0:170 Sequence
+0:170 move second child to first child ( temp highp float)
+0:170 'sinTheta' ( temp highp float)
+0:170 sqrt ( global highp float)
+0:170 subtract ( temp highp float)
+0:170 Constant:
+0:170 1.000000
+0:170 component-wise multiply ( temp highp float)
+0:170 'cosTheta' ( temp highp float)
+0:170 'cosTheta' ( temp highp float)
+0:173 move second child to first child ( temp highp float)
+0:173 direct index ( temp highp float)
+0:173 'H' ( temp highp 3-component vector of float)
+0:173 Constant:
+0:173 0 (const int)
+0:173 component-wise multiply ( temp highp float)
+0:173 'sinTheta' ( temp highp float)
+0:173 cosine ( global highp float)
+0:173 'phi' ( temp highp float)
+0:174 move second child to first child ( temp highp float)
+0:174 direct index ( temp highp float)
+0:174 'H' ( temp highp 3-component vector of float)
+0:174 Constant:
+0:174 1 (const int)
+0:174 component-wise multiply ( temp highp float)
+0:174 'sinTheta' ( temp highp float)
+0:174 sine ( global highp float)
+0:174 'phi' ( temp highp float)
+0:175 move second child to first child ( temp highp float)
+0:175 direct index ( temp highp float)
+0:175 'H' ( temp highp 3-component vector of float)
+0:175 Constant:
+0:175 2 (const int)
+0:175 'cosTheta' ( temp highp float)
+0:177 Sequence
+0:177 move second child to first child ( temp highp 3-component vector of float)
+0:177 'upVector' ( temp highp 3-component vector of float)
+0:177 Test condition and select ( temp highp 3-component vector of float)
+0:177 Condition
+0:177 Compare Less Than ( temp bool)
+0:177 Absolute value ( global highp float)
+0:177 direct index ( temp highp float)
+0:177 'N' ( in highp 3-component vector of float)
+0:177 Constant:
+0:177 2 (const int)
+0:177 Constant:
+0:177 0.999000
+0:177 true case
+0:177 Constant:
+0:177 0.000000
+0:177 0.000000
+0:177 1.000000
+0:177 false case
+0:177 Constant:
+0:177 1.000000
+0:177 0.000000
+0:177 0.000000
+0:178 Sequence
+0:178 move second child to first child ( temp highp 3-component vector of float)
+0:178 'tangentX' ( temp highp 3-component vector of float)
+0:178 normalize ( global highp 3-component vector of float)
+0:178 cross-product ( global highp 3-component vector of float)
+0:178 'upVector' ( temp highp 3-component vector of float)
+0:178 'N' ( in highp 3-component vector of float)
+0:179 Sequence
+0:179 move second child to first child ( temp highp 3-component vector of float)
+0:179 'tangentY' ( temp highp 3-component vector of float)
+0:179 cross-product ( global highp 3-component vector of float)
+0:179 'N' ( in highp 3-component vector of float)
+0:179 'tangentX' ( temp highp 3-component vector of float)
+0:182 Sequence
+0:182 move second child to first child ( temp highp 3-component vector of float)
+0:182 'worldResult' ( temp highp 3-component vector of float)
+0:182 add ( temp highp 3-component vector of float)
+0:182 add ( temp highp 3-component vector of float)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'tangentX' ( temp highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 0 (const int)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'tangentY' ( temp highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 1 (const int)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'N' ( in highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 2 (const int)
+0:183 Branch: Return with expression
+0:183 'worldResult' ( temp highp 3-component vector of float)
+0:185 Function Definition: iTDDistributionGGX(vf3;vf3;f1; ( global highp float)
+0:185 Function Parameters:
+0:185 'normal' ( in highp 3-component vector of float)
+0:185 'half_vector' ( in highp 3-component vector of float)
+0:185 'roughness2' ( in highp float)
+0:? Sequence
+0:189 Sequence
+0:189 move second child to first child ( temp highp float)
+0:189 'NdotH' ( temp highp float)
+0:189 clamp ( global highp float)
+0:189 dot-product ( global highp float)
+0:189 'normal' ( in highp 3-component vector of float)
+0:189 'half_vector' ( in highp 3-component vector of float)
+0:189 Constant:
+0:189 1.0000000000000e-06
+0:189 Constant:
+0:189 1.000000
+0:191 Sequence
+0:191 move second child to first child ( temp highp float)
+0:191 'alpha2' ( temp highp float)
+0:191 component-wise multiply ( temp highp float)
+0:191 'roughness2' ( in highp float)
+0:191 'roughness2' ( in highp float)
+0:193 Sequence
+0:193 move second child to first child ( temp highp float)
+0:193 'denom' ( temp highp float)
+0:193 add ( temp highp float)
+0:193 component-wise multiply ( temp highp float)
+0:193 component-wise multiply ( temp highp float)
+0:193 'NdotH' ( temp highp float)
+0:193 'NdotH' ( temp highp float)
+0:193 subtract ( temp highp float)
+0:193 'alpha2' ( temp highp float)
+0:193 Constant:
+0:193 1.000000
+0:193 Constant:
+0:193 1.000000
+0:194 move second child to first child ( temp highp float)
+0:194 'denom' ( temp highp float)
+0:194 max ( global highp float)
+0:194 Constant:
+0:194 1.0000000000000e-08
+0:194 'denom' ( temp highp float)
+0:195 Branch: Return with expression
+0:195 divide ( temp highp float)
+0:195 'alpha2' ( temp highp float)
+0:195 component-wise multiply ( temp highp float)
+0:195 component-wise multiply ( temp highp float)
+0:195 Constant:
+0:195 3.141593
+0:195 'denom' ( temp highp float)
+0:195 'denom' ( temp highp float)
+0:197 Function Definition: iTDCalcF(vf3;f1; ( global highp 3-component vector of float)
+0:197 Function Parameters:
+0:197 'F0' ( in highp 3-component vector of float)
+0:197 'VdotH' ( in highp float)
+0:198 Sequence
+0:198 Branch: Return with expression
+0:198 add ( temp highp 3-component vector of float)
+0:198 'F0' ( in highp 3-component vector of float)
+0:198 vector-scale ( temp highp 3-component vector of float)
+0:198 subtract ( temp highp 3-component vector of float)
+0:198 Constant:
+0:198 1.000000
+0:198 1.000000
+0:198 1.000000
+0:198 'F0' ( in highp 3-component vector of float)
+0:198 pow ( global highp float)
+0:198 Constant:
+0:198 2.000000
+0:198 component-wise multiply ( temp highp float)
+0:198 subtract ( temp highp float)
+0:198 component-wise multiply ( temp highp float)
+0:198 Constant:
+0:198 -5.554730
+0:198 'VdotH' ( in highp float)
+0:198 Constant:
+0:198 6.983160
+0:198 'VdotH' ( in highp float)
+0:201 Function Definition: iTDCalcG(f1;f1;f1; ( global highp float)
+0:201 Function Parameters:
+0:201 'NdotL' ( in highp float)
+0:201 'NdotV' ( in highp float)
+0:201 'k' ( in highp float)
+0:202 Sequence
+0:202 Sequence
+0:202 move second child to first child ( temp highp float)
+0:202 'Gl' ( temp highp float)
+0:202 divide ( temp highp float)
+0:202 Constant:
+0:202 1.000000
+0:202 add ( temp highp float)
+0:202 component-wise multiply ( temp highp float)
+0:202 'NdotL' ( in highp float)
+0:202 subtract ( temp highp float)
+0:202 Constant:
+0:202 1.000000
+0:202 'k' ( in highp float)
+0:202 'k' ( in highp float)
+0:203 Sequence
+0:203 move second child to first child ( temp highp float)
+0:203 'Gv' ( temp highp float)
+0:203 divide ( temp highp float)
+0:203 Constant:
+0:203 1.000000
+0:203 add ( temp highp float)
+0:203 component-wise multiply ( temp highp float)
+0:203 'NdotV' ( in highp float)
+0:203 subtract ( temp highp float)
+0:203 Constant:
+0:203 1.000000
+0:203 'k' ( in highp float)
+0:203 'k' ( in highp float)
+0:204 Branch: Return with expression
+0:204 component-wise multiply ( temp highp float)
+0:204 'Gl' ( temp highp float)
+0:204 'Gv' ( temp highp float)
+0:207 Function Definition: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:207 Function Parameters:
+0:207 'index' ( in highp int)
+0:207 'diffuseColor' ( in highp 3-component vector of float)
+0:207 'specularColor' ( in highp 3-component vector of float)
+0:207 'worldSpacePos' ( in highp 3-component vector of float)
+0:207 'normal' ( in highp 3-component vector of float)
+0:207 'shadowStrength' ( in highp float)
+0:207 'shadowColor' ( in highp 3-component vector of float)
+0:207 'camVector' ( in highp 3-component vector of float)
+0:207 'roughness' ( in highp float)
+0:? Sequence
+0:210 Branch: Return with expression
+0:210 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:213 Function Definition: TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:213 Function Parameters:
+0:213 'diffuseContrib' ( inout highp 3-component vector of float)
+0:213 'specularContrib' ( inout highp 3-component vector of float)
+0:213 'shadowStrengthOut' ( inout highp float)
+0:213 'index' ( in highp int)
+0:213 'diffuseColor' ( in highp 3-component vector of float)
+0:213 'specularColor' ( in highp 3-component vector of float)
+0:213 'worldSpacePos' ( in highp 3-component vector of float)
+0:213 'normal' ( in highp 3-component vector of float)
+0:213 'shadowStrength' ( in highp float)
+0:213 'shadowColor' ( in highp 3-component vector of float)
+0:213 'camVector' ( in highp 3-component vector of float)
+0:213 'roughness' ( in highp float)
+0:215 Sequence
+0:215 Sequence
+0:215 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 'index' ( in highp int)
+0:215 'diffuseColor' ( in highp 3-component vector of float)
+0:215 'specularColor' ( in highp 3-component vector of float)
+0:215 'worldSpacePos' ( in highp 3-component vector of float)
+0:215 'normal' ( in highp 3-component vector of float)
+0:215 'shadowStrength' ( in highp float)
+0:215 'shadowColor' ( in highp 3-component vector of float)
+0:215 'camVector' ( in highp 3-component vector of float)
+0:215 'roughness' ( in highp float)
+0:215 move second child to first child ( temp highp 3-component vector of float)
+0:215 'diffuseContrib' ( inout highp 3-component vector of float)
+0:215 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 Constant:
+0:215 0 (const int)
+0:216 move second child to first child ( temp highp 3-component vector of float)
+0:216 'specularContrib' ( inout highp 3-component vector of float)
+0:216 specular: direct index for structure ( global highp 3-component vector of float)
+0:216 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:216 Constant:
+0:216 1 (const int)
+0:217 move second child to first child ( temp highp float)
+0:217 'shadowStrengthOut' ( inout highp float)
+0:217 shadowStrength: direct index for structure ( global highp float)
+0:217 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:217 Constant:
+0:217 2 (const int)
+0:220 Function Definition: TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:220 Function Parameters:
+0:220 'diffuseContrib' ( inout highp 3-component vector of float)
+0:220 'specularContrib' ( inout highp 3-component vector of float)
+0:220 'index' ( in highp int)
+0:220 'diffuseColor' ( in highp 3-component vector of float)
+0:220 'specularColor' ( in highp 3-component vector of float)
+0:220 'worldSpacePos' ( in highp 3-component vector of float)
+0:220 'normal' ( in highp 3-component vector of float)
+0:220 'shadowStrength' ( in highp float)
+0:220 'shadowColor' ( in highp 3-component vector of float)
+0:220 'camVector' ( in highp 3-component vector of float)
+0:220 'roughness' ( in highp float)
+0:222 Sequence
+0:222 Sequence
+0:222 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 'index' ( in highp int)
+0:222 'diffuseColor' ( in highp 3-component vector of float)
+0:222 'specularColor' ( in highp 3-component vector of float)
+0:222 'worldSpacePos' ( in highp 3-component vector of float)
+0:222 'normal' ( in highp 3-component vector of float)
+0:222 'shadowStrength' ( in highp float)
+0:222 'shadowColor' ( in highp 3-component vector of float)
+0:222 'camVector' ( in highp 3-component vector of float)
+0:222 'roughness' ( in highp float)
+0:222 move second child to first child ( temp highp 3-component vector of float)
+0:222 'diffuseContrib' ( inout highp 3-component vector of float)
+0:222 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 Constant:
+0:222 0 (const int)
+0:223 move second child to first child ( temp highp 3-component vector of float)
+0:223 'specularContrib' ( inout highp 3-component vector of float)
+0:223 specular: direct index for structure ( global highp 3-component vector of float)
+0:223 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:223 Constant:
+0:223 1 (const int)
+0:226 Function Definition: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:226 Function Parameters:
+0:226 'index' ( in highp int)
+0:226 'diffuseColor' ( in highp 3-component vector of float)
+0:226 'specularColor' ( in highp 3-component vector of float)
+0:226 'normal' ( in highp 3-component vector of float)
+0:226 'camVector' ( in highp 3-component vector of float)
+0:226 'roughness' ( in highp float)
+0:226 'ambientOcclusion' ( in highp float)
+0:? Sequence
+0:229 Branch: Return with expression
+0:229 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:232 Function Definition: TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1; ( global void)
+0:232 Function Parameters:
+0:232 'diffuseContrib' ( inout highp 3-component vector of float)
+0:232 'specularContrib' ( inout highp 3-component vector of float)
+0:232 'index' ( in highp int)
+0:232 'diffuseColor' ( in highp 3-component vector of float)
+0:232 'specularColor' ( in highp 3-component vector of float)
+0:232 'normal' ( in highp 3-component vector of float)
+0:232 'camVector' ( in highp 3-component vector of float)
+0:232 'roughness' ( in highp float)
+0:232 'ambientOcclusion' ( in highp float)
+0:234 Sequence
+0:234 Sequence
+0:234 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 Function Call: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 'index' ( in highp int)
+0:234 'diffuseColor' ( in highp 3-component vector of float)
+0:234 'specularColor' ( in highp 3-component vector of float)
+0:234 'normal' ( in highp 3-component vector of float)
+0:234 'camVector' ( in highp 3-component vector of float)
+0:234 'roughness' ( in highp float)
+0:234 'ambientOcclusion' ( in highp float)
+0:235 move second child to first child ( temp highp 3-component vector of float)
+0:235 'diffuseContrib' ( inout highp 3-component vector of float)
+0:235 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:235 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:235 Constant:
+0:235 0 (const int)
+0:236 move second child to first child ( temp highp 3-component vector of float)
+0:236 'specularContrib' ( inout highp 3-component vector of float)
+0:236 specular: direct index for structure ( global highp 3-component vector of float)
+0:236 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:236 Constant:
+0:236 1 (const int)
+0:239 Function Definition: TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:239 Function Parameters:
+0:239 'index' ( in highp int)
+0:239 'worldSpacePos' ( in highp 3-component vector of float)
+0:239 'normal' ( in highp 3-component vector of float)
+0:239 'shadowStrength' ( in highp float)
+0:239 'shadowColor' ( in highp 3-component vector of float)
+0:239 'camVector' ( in highp 3-component vector of float)
+0:239 'shininess' ( in highp float)
+0:239 'shininess2' ( in highp float)
+0:? Sequence
+0:242 switch
+0:242 condition
+0:242 'index' ( in highp int)
+0:242 body
+0:242 Sequence
+0:244 default:
+0:? Sequence
+0:245 move second child to first child ( temp highp 3-component vector of float)
+0:245 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:245 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:245 Constant:
+0:245 0 (const int)
+0:245 Constant:
+0:245 0.000000
+0:245 0.000000
+0:245 0.000000
+0:246 move second child to first child ( temp highp 3-component vector of float)
+0:246 specular: direct index for structure ( global highp 3-component vector of float)
+0:246 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:246 Constant:
+0:246 1 (const int)
+0:246 Constant:
+0:246 0.000000
+0:246 0.000000
+0:246 0.000000
+0:247 move second child to first child ( temp highp 3-component vector of float)
+0:247 specular2: direct index for structure ( global highp 3-component vector of float)
+0:247 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:247 Constant:
+0:247 2 (const int)
+0:247 Constant:
+0:247 0.000000
+0:247 0.000000
+0:247 0.000000
+0:248 move second child to first child ( temp highp float)
+0:248 shadowStrength: direct index for structure ( global highp float)
+0:248 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:248 Constant:
+0:248 3 (const int)
+0:248 Constant:
+0:248 0.000000
+0:249 Branch: Break
+0:251 Branch: Return with expression
+0:251 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:254 Function Definition: TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void)
+0:254 Function Parameters:
+0:254 'diffuseContrib' ( inout highp 3-component vector of float)
+0:254 'specularContrib' ( inout highp 3-component vector of float)
+0:254 'specularContrib2' ( inout highp 3-component vector of float)
+0:254 'shadowStrengthOut' ( inout highp float)
+0:254 'index' ( in highp int)
+0:254 'worldSpacePos' ( in highp 3-component vector of float)
+0:254 'normal' ( in highp 3-component vector of float)
+0:254 'shadowStrength' ( in highp float)
+0:254 'shadowColor' ( in highp 3-component vector of float)
+0:254 'camVector' ( in highp 3-component vector of float)
+0:254 'shininess' ( in highp float)
+0:254 'shininess2' ( in highp float)
+0:? Sequence
+0:257 switch
+0:257 condition
+0:257 'index' ( in highp int)
+0:257 body
+0:257 Sequence
+0:259 default:
+0:? Sequence
+0:260 move second child to first child ( temp highp 3-component vector of float)
+0:260 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:260 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:260 Constant:
+0:260 0 (const int)
+0:260 Constant:
+0:260 0.000000
+0:260 0.000000
+0:260 0.000000
+0:261 move second child to first child ( temp highp 3-component vector of float)
+0:261 specular: direct index for structure ( global highp 3-component vector of float)
+0:261 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:261 Constant:
+0:261 1 (const int)
+0:261 Constant:
+0:261 0.000000
+0:261 0.000000
+0:261 0.000000
+0:262 move second child to first child ( temp highp 3-component vector of float)
+0:262 specular2: direct index for structure ( global highp 3-component vector of float)
+0:262 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:262 Constant:
+0:262 2 (const int)
+0:262 Constant:
+0:262 0.000000
+0:262 0.000000
+0:262 0.000000
+0:263 move second child to first child ( temp highp float)
+0:263 shadowStrength: direct index for structure ( global highp float)
+0:263 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:263 Constant:
+0:263 3 (const int)
+0:263 Constant:
+0:263 0.000000
+0:264 Branch: Break
+0:266 move second child to first child ( temp highp 3-component vector of float)
+0:266 'diffuseContrib' ( inout highp 3-component vector of float)
+0:266 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:266 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:266 Constant:
+0:266 0 (const int)
+0:267 move second child to first child ( temp highp 3-component vector of float)
+0:267 'specularContrib' ( inout highp 3-component vector of float)
+0:267 specular: direct index for structure ( global highp 3-component vector of float)
+0:267 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:267 Constant:
+0:267 1 (const int)
+0:268 move second child to first child ( temp highp 3-component vector of float)
+0:268 'specularContrib2' ( inout highp 3-component vector of float)
+0:268 specular2: direct index for structure ( global highp 3-component vector of float)
+0:268 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:268 Constant:
+0:268 2 (const int)
+0:269 move second child to first child ( temp highp float)
+0:269 'shadowStrengthOut' ( inout highp float)
+0:269 shadowStrength: direct index for structure ( global highp float)
+0:269 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:269 Constant:
+0:269 3 (const int)
+0:272 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void)
+0:272 Function Parameters:
+0:272 'diffuseContrib' ( inout highp 3-component vector of float)
+0:272 'specularContrib' ( inout highp 3-component vector of float)
+0:272 'specularContrib2' ( inout highp 3-component vector of float)
+0:272 'index' ( in highp int)
+0:272 'worldSpacePos' ( in highp 3-component vector of float)
+0:272 'normal' ( in highp 3-component vector of float)
+0:272 'shadowStrength' ( in highp float)
+0:272 'shadowColor' ( in highp 3-component vector of float)
+0:272 'camVector' ( in highp 3-component vector of float)
+0:272 'shininess' ( in highp float)
+0:272 'shininess2' ( in highp float)
+0:? Sequence
+0:275 switch
+0:275 condition
+0:275 'index' ( in highp int)
+0:275 body
+0:275 Sequence
+0:277 default:
+0:? Sequence
+0:278 move second child to first child ( temp highp 3-component vector of float)
+0:278 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:278 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:278 Constant:
+0:278 0 (const int)
+0:278 Constant:
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:279 move second child to first child ( temp highp 3-component vector of float)
+0:279 specular: direct index for structure ( global highp 3-component vector of float)
+0:279 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:279 Constant:
+0:279 1 (const int)
+0:279 Constant:
+0:279 0.000000
+0:279 0.000000
+0:279 0.000000
+0:280 move second child to first child ( temp highp 3-component vector of float)
+0:280 specular2: direct index for structure ( global highp 3-component vector of float)
+0:280 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:280 Constant:
+0:280 2 (const int)
+0:280 Constant:
+0:280 0.000000
+0:280 0.000000
+0:280 0.000000
+0:281 move second child to first child ( temp highp float)
+0:281 shadowStrength: direct index for structure ( global highp float)
+0:281 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:281 Constant:
+0:281 3 (const int)
+0:281 Constant:
+0:281 0.000000
+0:282 Branch: Break
+0:284 move second child to first child ( temp highp 3-component vector of float)
+0:284 'diffuseContrib' ( inout highp 3-component vector of float)
+0:284 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:284 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:284 Constant:
+0:284 0 (const int)
+0:285 move second child to first child ( temp highp 3-component vector of float)
+0:285 'specularContrib' ( inout highp 3-component vector of float)
+0:285 specular: direct index for structure ( global highp 3-component vector of float)
+0:285 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:285 Constant:
+0:285 1 (const int)
+0:286 move second child to first child ( temp highp 3-component vector of float)
+0:286 'specularContrib2' ( inout highp 3-component vector of float)
+0:286 specular2: direct index for structure ( global highp 3-component vector of float)
+0:286 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:286 Constant:
+0:286 2 (const int)
+0:289 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:289 Function Parameters:
+0:289 'diffuseContrib' ( inout highp 3-component vector of float)
+0:289 'specularContrib' ( inout highp 3-component vector of float)
+0:289 'index' ( in highp int)
+0:289 'worldSpacePos' ( in highp 3-component vector of float)
+0:289 'normal' ( in highp 3-component vector of float)
+0:289 'shadowStrength' ( in highp float)
+0:289 'shadowColor' ( in highp 3-component vector of float)
+0:289 'camVector' ( in highp 3-component vector of float)
+0:289 'shininess' ( in highp float)
+0:? Sequence
+0:292 switch
+0:292 condition
+0:292 'index' ( in highp int)
+0:292 body
+0:292 Sequence
+0:294 default:
+0:? Sequence
+0:295 move second child to first child ( temp highp 3-component vector of float)
+0:295 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:295 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:295 Constant:
+0:295 0 (const int)
+0:295 Constant:
+0:295 0.000000
+0:295 0.000000
+0:295 0.000000
+0:296 move second child to first child ( temp highp 3-component vector of float)
+0:296 specular: direct index for structure ( global highp 3-component vector of float)
+0:296 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:296 Constant:
+0:296 1 (const int)
+0:296 Constant:
+0:296 0.000000
+0:296 0.000000
+0:296 0.000000
+0:297 move second child to first child ( temp highp 3-component vector of float)
+0:297 specular2: direct index for structure ( global highp 3-component vector of float)
+0:297 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:297 Constant:
+0:297 2 (const int)
+0:297 Constant:
+0:297 0.000000
+0:297 0.000000
+0:297 0.000000
+0:298 move second child to first child ( temp highp float)
+0:298 shadowStrength: direct index for structure ( global highp float)
+0:298 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:298 Constant:
+0:298 3 (const int)
+0:298 Constant:
+0:298 0.000000
+0:299 Branch: Break
+0:301 move second child to first child ( temp highp 3-component vector of float)
+0:301 'diffuseContrib' ( inout highp 3-component vector of float)
+0:301 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:301 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:301 Constant:
+0:301 0 (const int)
+0:302 move second child to first child ( temp highp 3-component vector of float)
+0:302 'specularContrib' ( inout highp 3-component vector of float)
+0:302 specular: direct index for structure ( global highp 3-component vector of float)
+0:302 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:302 Constant:
+0:302 1 (const int)
+0:305 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1; ( global void)
+0:305 Function Parameters:
+0:305 'diffuseContrib' ( inout highp 3-component vector of float)
+0:305 'specularContrib' ( inout highp 3-component vector of float)
+0:305 'specularContrib2' ( inout highp 3-component vector of float)
+0:305 'index' ( in highp int)
+0:305 'worldSpacePos' ( in highp 3-component vector of float)
+0:305 'normal' ( in highp 3-component vector of float)
+0:305 'camVector' ( in highp 3-component vector of float)
+0:305 'shininess' ( in highp float)
+0:305 'shininess2' ( in highp float)
+0:? Sequence
+0:308 switch
+0:308 condition
+0:308 'index' ( in highp int)
+0:308 body
+0:308 Sequence
+0:310 default:
+0:? Sequence
+0:311 move second child to first child ( temp highp 3-component vector of float)
+0:311 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:311 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:311 Constant:
+0:311 0 (const int)
+0:311 Constant:
+0:311 0.000000
+0:311 0.000000
+0:311 0.000000
+0:312 move second child to first child ( temp highp 3-component vector of float)
+0:312 specular: direct index for structure ( global highp 3-component vector of float)
+0:312 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:312 Constant:
+0:312 1 (const int)
+0:312 Constant:
+0:312 0.000000
+0:312 0.000000
+0:312 0.000000
+0:313 move second child to first child ( temp highp 3-component vector of float)
+0:313 specular2: direct index for structure ( global highp 3-component vector of float)
+0:313 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:313 Constant:
+0:313 2 (const int)
+0:313 Constant:
+0:313 0.000000
+0:313 0.000000
+0:313 0.000000
+0:314 move second child to first child ( temp highp float)
+0:314 shadowStrength: direct index for structure ( global highp float)
+0:314 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:314 Constant:
+0:314 3 (const int)
+0:314 Constant:
+0:314 0.000000
+0:315 Branch: Break
+0:317 move second child to first child ( temp highp 3-component vector of float)
+0:317 'diffuseContrib' ( inout highp 3-component vector of float)
+0:317 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:317 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:317 Constant:
+0:317 0 (const int)
+0:318 move second child to first child ( temp highp 3-component vector of float)
+0:318 'specularContrib' ( inout highp 3-component vector of float)
+0:318 specular: direct index for structure ( global highp 3-component vector of float)
+0:318 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:318 Constant:
+0:318 1 (const int)
+0:319 move second child to first child ( temp highp 3-component vector of float)
+0:319 'specularContrib2' ( inout highp 3-component vector of float)
+0:319 specular2: direct index for structure ( global highp 3-component vector of float)
+0:319 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:319 Constant:
+0:319 2 (const int)
+0:322 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1; ( global void)
+0:322 Function Parameters:
+0:322 'diffuseContrib' ( inout highp 3-component vector of float)
+0:322 'specularContrib' ( inout highp 3-component vector of float)
+0:322 'index' ( in highp int)
+0:322 'worldSpacePos' ( in highp 3-component vector of float)
+0:322 'normal' ( in highp 3-component vector of float)
+0:322 'camVector' ( in highp 3-component vector of float)
+0:322 'shininess' ( in highp float)
+0:? Sequence
+0:325 switch
+0:325 condition
+0:325 'index' ( in highp int)
+0:325 body
+0:325 Sequence
+0:327 default:
+0:? Sequence
+0:328 move second child to first child ( temp highp 3-component vector of float)
+0:328 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:328 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:328 Constant:
+0:328 0 (const int)
+0:328 Constant:
+0:328 0.000000
+0:328 0.000000
+0:328 0.000000
+0:329 move second child to first child ( temp highp 3-component vector of float)
+0:329 specular: direct index for structure ( global highp 3-component vector of float)
+0:329 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:329 Constant:
+0:329 1 (const int)
+0:329 Constant:
+0:329 0.000000
+0:329 0.000000
+0:329 0.000000
+0:330 move second child to first child ( temp highp 3-component vector of float)
+0:330 specular2: direct index for structure ( global highp 3-component vector of float)
+0:330 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:330 Constant:
+0:330 2 (const int)
+0:330 Constant:
+0:330 0.000000
+0:330 0.000000
+0:330 0.000000
+0:331 move second child to first child ( temp highp float)
+0:331 shadowStrength: direct index for structure ( global highp float)
+0:331 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:331 Constant:
+0:331 3 (const int)
+0:331 Constant:
+0:331 0.000000
+0:332 Branch: Break
+0:334 move second child to first child ( temp highp 3-component vector of float)
+0:334 'diffuseContrib' ( inout highp 3-component vector of float)
+0:334 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:334 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:334 Constant:
+0:334 0 (const int)
+0:335 move second child to first child ( temp highp 3-component vector of float)
+0:335 'specularContrib' ( inout highp 3-component vector of float)
+0:335 specular: direct index for structure ( global highp 3-component vector of float)
+0:335 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:335 Constant:
+0:335 1 (const int)
+0:338 Function Definition: TDLighting(vf3;i1;vf3;vf3; ( global void)
+0:338 Function Parameters:
+0:338 'diffuseContrib' ( inout highp 3-component vector of float)
+0:338 'index' ( in highp int)
+0:338 'worldSpacePos' ( in highp 3-component vector of float)
+0:338 'normal' ( in highp 3-component vector of float)
+0:? Sequence
+0:341 switch
+0:341 condition
+0:341 'index' ( in highp int)
+0:341 body
+0:341 Sequence
+0:343 default:
+0:? Sequence
+0:344 move second child to first child ( temp highp 3-component vector of float)
+0:344 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:344 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:344 Constant:
+0:344 0 (const int)
+0:344 Constant:
+0:344 0.000000
+0:344 0.000000
+0:344 0.000000
+0:345 move second child to first child ( temp highp 3-component vector of float)
+0:345 specular: direct index for structure ( global highp 3-component vector of float)
+0:345 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:345 Constant:
+0:345 1 (const int)
+0:345 Constant:
+0:345 0.000000
+0:345 0.000000
+0:345 0.000000
+0:346 move second child to first child ( temp highp 3-component vector of float)
+0:346 specular2: direct index for structure ( global highp 3-component vector of float)
+0:346 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:346 Constant:
+0:346 2 (const int)
+0:346 Constant:
+0:346 0.000000
+0:346 0.000000
+0:346 0.000000
+0:347 move second child to first child ( temp highp float)
+0:347 shadowStrength: direct index for structure ( global highp float)
+0:347 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:347 Constant:
+0:347 3 (const int)
+0:347 Constant:
+0:347 0.000000
+0:348 Branch: Break
+0:350 move second child to first child ( temp highp 3-component vector of float)
+0:350 'diffuseContrib' ( inout highp 3-component vector of float)
+0:350 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:350 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:350 Constant:
+0:350 0 (const int)
+0:353 Function Definition: TDLighting(vf3;i1;vf3;vf3;f1;vf3; ( global void)
+0:353 Function Parameters:
+0:353 'diffuseContrib' ( inout highp 3-component vector of float)
+0:353 'index' ( in highp int)
+0:353 'worldSpacePos' ( in highp 3-component vector of float)
+0:353 'normal' ( in highp 3-component vector of float)
+0:353 'shadowStrength' ( in highp float)
+0:353 'shadowColor' ( in highp 3-component vector of float)
+0:? Sequence
+0:356 switch
+0:356 condition
+0:356 'index' ( in highp int)
+0:356 body
+0:356 Sequence
+0:358 default:
+0:? Sequence
+0:359 move second child to first child ( temp highp 3-component vector of float)
+0:359 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:359 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:359 Constant:
+0:359 0 (const int)
+0:359 Constant:
+0:359 0.000000
+0:359 0.000000
+0:359 0.000000
+0:360 move second child to first child ( temp highp 3-component vector of float)
+0:360 specular: direct index for structure ( global highp 3-component vector of float)
+0:360 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:360 Constant:
+0:360 1 (const int)
+0:360 Constant:
+0:360 0.000000
+0:360 0.000000
+0:360 0.000000
+0:361 move second child to first child ( temp highp 3-component vector of float)
+0:361 specular2: direct index for structure ( global highp 3-component vector of float)
+0:361 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:361 Constant:
+0:361 2 (const int)
+0:361 Constant:
+0:361 0.000000
+0:361 0.000000
+0:361 0.000000
+0:362 move second child to first child ( temp highp float)
+0:362 shadowStrength: direct index for structure ( global highp float)
+0:362 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:362 Constant:
+0:362 3 (const int)
+0:362 Constant:
+0:362 0.000000
+0:363 Branch: Break
+0:365 move second child to first child ( temp highp 3-component vector of float)
+0:365 'diffuseContrib' ( inout highp 3-component vector of float)
+0:365 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:365 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:365 Constant:
+0:365 0 (const int)
+0:367 Function Definition: TDProjMap(i1;vf3;vf4; ( global highp 4-component vector of float)
+0:367 Function Parameters:
+0:367 'index' ( in highp int)
+0:367 'worldSpacePos' ( in highp 3-component vector of float)
+0:367 'defaultColor' ( in highp 4-component vector of float)
+0:368 Sequence
+0:368 switch
+0:368 condition
+0:368 'index' ( in highp int)
+0:368 body
+0:368 Sequence
+0:370 default:
+0:? Sequence
+0:370 Branch: Return with expression
+0:370 'defaultColor' ( in highp 4-component vector of float)
+0:373 Function Definition: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float)
+0:373 Function Parameters:
+0:373 'color' ( in highp 4-component vector of float)
+0:373 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:373 'cameraIndex' ( in highp int)
+0:374 Sequence
+0:374 switch
+0:374 condition
+0:374 'cameraIndex' ( in highp int)
+0:374 body
+0:374 Sequence
+0:375 default:
+0:376 case: with expression
+0:376 Constant:
+0:376 0 (const int)
+0:? Sequence
+0:378 Sequence
+0:378 Branch: Return with expression
+0:378 'color' ( in highp 4-component vector of float)
+0:382 Function Definition: TDFog(vf4;vf3; ( global highp 4-component vector of float)
+0:382 Function Parameters:
+0:382 'color' ( in highp 4-component vector of float)
+0:382 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:384 Sequence
+0:384 Branch: Return with expression
+0:384 Function Call: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float)
+0:384 'color' ( in highp 4-component vector of float)
+0:384 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:384 Constant:
+0:384 0 (const int)
+0:386 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:386 Function Parameters:
+0:386 'index' ( in highp int)
+0:386 't' ( in highp 3-component vector of float)
+0:? Sequence
+0:388 Sequence
+0:388 move second child to first child ( temp highp int)
+0:388 'coord' ( temp highp int)
+0:388 'index' ( in highp int)
+0:389 Sequence
+0:389 move second child to first child ( temp highp 4-component vector of float)
+0:389 'samp' ( temp highp 4-component vector of float)
+0:389 textureFetch ( global highp 4-component vector of float)
+0:389 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:389 'coord' ( temp highp int)
+0:390 move second child to first child ( temp highp float)
+0:390 direct index ( temp highp float)
+0:390 'v' ( temp highp 3-component vector of float)
+0:390 Constant:
+0:390 0 (const int)
+0:390 direct index ( temp highp float)
+0:390 't' ( in highp 3-component vector of float)
+0:390 Constant:
+0:390 0 (const int)
+0:391 move second child to first child ( temp highp float)
+0:391 direct index ( temp highp float)
+0:391 'v' ( temp highp 3-component vector of float)
+0:391 Constant:
+0:391 1 (const int)
+0:391 direct index ( temp highp float)
+0:391 't' ( in highp 3-component vector of float)
+0:391 Constant:
+0:391 1 (const int)
+0:392 move second child to first child ( temp highp float)
+0:392 direct index ( temp highp float)
+0:392 'v' ( temp highp 3-component vector of float)
+0:392 Constant:
+0:392 2 (const int)
+0:392 direct index ( temp highp float)
+0:392 'samp' ( temp highp 4-component vector of float)
+0:392 Constant:
+0:392 0 (const int)
+0:393 move second child to first child ( temp highp 3-component vector of float)
+0:393 vector swizzle ( temp highp 3-component vector of float)
+0:393 't' ( in highp 3-component vector of float)
+0:393 Sequence
+0:393 Constant:
+0:393 0 (const int)
+0:393 Constant:
+0:393 1 (const int)
+0:393 Constant:
+0:393 2 (const int)
+0:393 vector swizzle ( temp highp 3-component vector of float)
+0:393 'v' ( temp highp 3-component vector of float)
+0:393 Sequence
+0:393 Constant:
+0:393 0 (const int)
+0:393 Constant:
+0:393 1 (const int)
+0:393 Constant:
+0:393 2 (const int)
+0:394 Branch: Return with expression
+0:394 't' ( in highp 3-component vector of float)
+0:396 Function Definition: TDInstanceActive(i1; ( global bool)
+0:396 Function Parameters:
+0:396 'index' ( in highp int)
+0:397 Sequence
+0:397 subtract second child into first child ( temp highp int)
+0:397 'index' ( in highp int)
+0:397 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:397 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:397 Constant:
+0:397 0 (const uint)
+0:399 Sequence
+0:399 move second child to first child ( temp highp int)
+0:399 'coord' ( temp highp int)
+0:399 'index' ( in highp int)
+0:400 Sequence
+0:400 move second child to first child ( temp highp 4-component vector of float)
+0:400 'samp' ( temp highp 4-component vector of float)
+0:400 textureFetch ( global highp 4-component vector of float)
+0:400 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:400 'coord' ( temp highp int)
+0:401 move second child to first child ( temp highp float)
+0:401 'v' ( temp highp float)
+0:401 direct index ( temp highp float)
+0:401 'samp' ( temp highp 4-component vector of float)
+0:401 Constant:
+0:401 0 (const int)
+0:402 Branch: Return with expression
+0:402 Compare Not Equal ( temp bool)
+0:402 'v' ( temp highp float)
+0:402 Constant:
+0:402 0.000000
+0:404 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:404 Function Parameters:
+0:404 'index' ( in highp int)
+0:404 'instanceActive' ( out bool)
+0:405 Sequence
+0:405 Sequence
+0:405 move second child to first child ( temp highp int)
+0:405 'origIndex' ( temp highp int)
+0:405 'index' ( in highp int)
+0:406 subtract second child into first child ( temp highp int)
+0:406 'index' ( in highp int)
+0:406 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:406 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:406 Constant:
+0:406 0 (const uint)
+0:408 Sequence
+0:408 move second child to first child ( temp highp int)
+0:408 'coord' ( temp highp int)
+0:408 'index' ( in highp int)
+0:409 Sequence
+0:409 move second child to first child ( temp highp 4-component vector of float)
+0:409 'samp' ( temp highp 4-component vector of float)
+0:409 textureFetch ( global highp 4-component vector of float)
+0:409 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:409 'coord' ( temp highp int)
+0:410 move second child to first child ( temp highp float)
+0:410 direct index ( temp highp float)
+0:410 'v' ( temp highp 3-component vector of float)
+0:410 Constant:
+0:410 0 (const int)
+0:410 direct index ( temp highp float)
+0:410 'samp' ( temp highp 4-component vector of float)
+0:410 Constant:
+0:410 1 (const int)
+0:411 move second child to first child ( temp highp float)
+0:411 direct index ( temp highp float)
+0:411 'v' ( temp highp 3-component vector of float)
+0:411 Constant:
+0:411 1 (const int)
+0:411 direct index ( temp highp float)
+0:411 'samp' ( temp highp 4-component vector of float)
+0:411 Constant:
+0:411 2 (const int)
+0:412 move second child to first child ( temp highp float)
+0:412 direct index ( temp highp float)
+0:412 'v' ( temp highp 3-component vector of float)
+0:412 Constant:
+0:412 2 (const int)
+0:412 direct index ( temp highp float)
+0:412 'samp' ( temp highp 4-component vector of float)
+0:412 Constant:
+0:412 3 (const int)
+0:413 move second child to first child ( temp bool)
+0:413 'instanceActive' ( out bool)
+0:413 Compare Not Equal ( temp bool)
+0:413 direct index ( temp highp float)
+0:413 'samp' ( temp highp 4-component vector of float)
+0:413 Constant:
+0:413 0 (const int)
+0:413 Constant:
+0:413 0.000000
+0:414 Branch: Return with expression
+0:414 'v' ( temp highp 3-component vector of float)
+0:416 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:416 Function Parameters:
+0:416 'index' ( in highp int)
+0:417 Sequence
+0:417 subtract second child into first child ( temp highp int)
+0:417 'index' ( in highp int)
+0:417 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:417 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:417 Constant:
+0:417 0 (const uint)
+0:419 Sequence
+0:419 move second child to first child ( temp highp int)
+0:419 'coord' ( temp highp int)
+0:419 'index' ( in highp int)
+0:420 Sequence
+0:420 move second child to first child ( temp highp 4-component vector of float)
+0:420 'samp' ( temp highp 4-component vector of float)
+0:420 textureFetch ( global highp 4-component vector of float)
+0:420 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:420 'coord' ( temp highp int)
+0:421 move second child to first child ( temp highp float)
+0:421 direct index ( temp highp float)
+0:421 'v' ( temp highp 3-component vector of float)
+0:421 Constant:
+0:421 0 (const int)
+0:421 direct index ( temp highp float)
+0:421 'samp' ( temp highp 4-component vector of float)
+0:421 Constant:
+0:421 1 (const int)
+0:422 move second child to first child ( temp highp float)
+0:422 direct index ( temp highp float)
+0:422 'v' ( temp highp 3-component vector of float)
+0:422 Constant:
+0:422 1 (const int)
+0:422 direct index ( temp highp float)
+0:422 'samp' ( temp highp 4-component vector of float)
+0:422 Constant:
+0:422 2 (const int)
+0:423 move second child to first child ( temp highp float)
+0:423 direct index ( temp highp float)
+0:423 'v' ( temp highp 3-component vector of float)
+0:423 Constant:
+0:423 2 (const int)
+0:423 direct index ( temp highp float)
+0:423 'samp' ( temp highp 4-component vector of float)
+0:423 Constant:
+0:423 3 (const int)
+0:424 Branch: Return with expression
+0:424 'v' ( temp highp 3-component vector of float)
+0:426 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:426 Function Parameters:
+0:426 'index' ( in highp int)
+0:427 Sequence
+0:427 subtract second child into first child ( temp highp int)
+0:427 'index' ( in highp int)
+0:427 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:427 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:427 Constant:
+0:427 0 (const uint)
+0:428 Sequence
+0:428 move second child to first child ( temp highp 3-component vector of float)
+0:428 'v' ( temp highp 3-component vector of float)
+0:428 Constant:
+0:428 0.000000
+0:428 0.000000
+0:428 0.000000
+0:429 Sequence
+0:429 move second child to first child ( temp highp 3X3 matrix of float)
+0:429 'm' ( temp highp 3X3 matrix of float)
+0:429 Constant:
+0:429 1.000000
+0:429 0.000000
+0:429 0.000000
+0:429 0.000000
+0:429 1.000000
+0:429 0.000000
+0:429 0.000000
+0:429 0.000000
+0:429 1.000000
+0:433 Branch: Return with expression
+0:433 'm' ( temp highp 3X3 matrix of float)
+0:435 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:435 Function Parameters:
+0:435 'index' ( in highp int)
+0:436 Sequence
+0:436 subtract second child into first child ( temp highp int)
+0:436 'index' ( in highp int)
+0:436 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:436 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:436 Constant:
+0:436 0 (const uint)
+0:437 Sequence
+0:437 move second child to first child ( temp highp 3-component vector of float)
+0:437 'v' ( temp highp 3-component vector of float)
+0:437 Constant:
+0:437 1.000000
+0:437 1.000000
+0:437 1.000000
+0:438 Branch: Return with expression
+0:438 'v' ( temp highp 3-component vector of float)
+0:440 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float)
+0:440 Function Parameters:
+0:440 'index' ( in highp int)
+0:441 Sequence
+0:441 subtract second child into first child ( temp highp int)
+0:441 'index' ( in highp int)
+0:441 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:441 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:441 Constant:
+0:441 0 (const uint)
+0:442 Sequence
+0:442 move second child to first child ( temp highp 3-component vector of float)
+0:442 'v' ( temp highp 3-component vector of float)
+0:442 Constant:
+0:442 0.000000
+0:442 0.000000
+0:442 0.000000
+0:443 Branch: Return with expression
+0:443 'v' ( temp highp 3-component vector of float)
+0:445 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float)
+0:445 Function Parameters:
+0:445 'index' ( in highp int)
+0:446 Sequence
+0:446 subtract second child into first child ( temp highp int)
+0:446 'index' ( in highp int)
+0:446 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:446 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:446 Constant:
+0:446 0 (const uint)
+0:447 Sequence
+0:447 move second child to first child ( temp highp 3-component vector of float)
+0:447 'v' ( temp highp 3-component vector of float)
+0:447 Constant:
+0:447 0.000000
+0:447 0.000000
+0:447 1.000000
+0:448 Branch: Return with expression
+0:448 'v' ( temp highp 3-component vector of float)
+0:450 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float)
+0:450 Function Parameters:
+0:450 'index' ( in highp int)
+0:451 Sequence
+0:451 subtract second child into first child ( temp highp int)
+0:451 'index' ( in highp int)
+0:451 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:451 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:451 Constant:
+0:451 0 (const uint)
+0:452 Sequence
+0:452 move second child to first child ( temp highp 3-component vector of float)
+0:452 'v' ( temp highp 3-component vector of float)
+0:452 Constant:
+0:452 0.000000
+0:452 1.000000
+0:452 0.000000
+0:453 Branch: Return with expression
+0:453 'v' ( temp highp 3-component vector of float)
+0:455 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:455 Function Parameters:
+0:455 'id' ( in highp int)
+0:456 Sequence
+0:456 Sequence
+0:456 move second child to first child ( temp bool)
+0:456 'instanceActive' ( temp bool)
+0:456 Constant:
+0:456 true (const bool)
+0:457 Sequence
+0:457 move second child to first child ( temp highp 3-component vector of float)
+0:457 't' ( temp highp 3-component vector of float)
+0:457 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:457 'id' ( in highp int)
+0:457 'instanceActive' ( temp bool)
+0:458 Test condition and select ( temp void)
+0:458 Condition
+0:458 Negate conditional ( temp bool)
+0:458 'instanceActive' ( temp bool)
+0:458 true case
+0:460 Sequence
+0:460 Branch: Return with expression
+0:460 Constant:
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:462 Sequence
+0:462 move second child to first child ( temp highp 4X4 matrix of float)
+0:462 'm' ( temp highp 4X4 matrix of float)
+0:462 Constant:
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:464 Sequence
+0:464 Sequence
+0:464 move second child to first child ( temp highp 3-component vector of float)
+0:464 'tt' ( temp highp 3-component vector of float)
+0:464 't' ( temp highp 3-component vector of float)
+0:465 add second child into first child ( temp highp float)
+0:465 direct index ( temp highp float)
+0:465 direct index ( temp highp 4-component vector of float)
+0:465 'm' ( temp highp 4X4 matrix of float)
+0:465 Constant:
+0:465 3 (const int)
+0:465 Constant:
+0:465 0 (const int)
+0:465 component-wise multiply ( temp highp float)
+0:465 direct index ( temp highp float)
+0:465 direct index ( temp highp 4-component vector of float)
+0:465 'm' ( temp highp 4X4 matrix of float)
+0:465 Constant:
+0:465 0 (const int)
+0:465 Constant:
+0:465 0 (const int)
+0:465 direct index ( temp highp float)
+0:465 'tt' ( temp highp 3-component vector of float)
+0:465 Constant:
+0:465 0 (const int)
+0:466 add second child into first child ( temp highp float)
+0:466 direct index ( temp highp float)
+0:466 direct index ( temp highp 4-component vector of float)
+0:466 'm' ( temp highp 4X4 matrix of float)
+0:466 Constant:
+0:466 3 (const int)
+0:466 Constant:
+0:466 1 (const int)
+0:466 component-wise multiply ( temp highp float)
+0:466 direct index ( temp highp float)
+0:466 direct index ( temp highp 4-component vector of float)
+0:466 'm' ( temp highp 4X4 matrix of float)
+0:466 Constant:
+0:466 0 (const int)
+0:466 Constant:
+0:466 1 (const int)
+0:466 direct index ( temp highp float)
+0:466 'tt' ( temp highp 3-component vector of float)
+0:466 Constant:
+0:466 0 (const int)
+0:467 add second child into first child ( temp highp float)
+0:467 direct index ( temp highp float)
+0:467 direct index ( temp highp 4-component vector of float)
+0:467 'm' ( temp highp 4X4 matrix of float)
+0:467 Constant:
+0:467 3 (const int)
+0:467 Constant:
+0:467 2 (const int)
+0:467 component-wise multiply ( temp highp float)
+0:467 direct index ( temp highp float)
+0:467 direct index ( temp highp 4-component vector of float)
+0:467 'm' ( temp highp 4X4 matrix of float)
+0:467 Constant:
+0:467 0 (const int)
+0:467 Constant:
+0:467 2 (const int)
+0:467 direct index ( temp highp float)
+0:467 'tt' ( temp highp 3-component vector of float)
+0:467 Constant:
+0:467 0 (const int)
+0:468 add second child into first child ( temp highp float)
+0:468 direct index ( temp highp float)
+0:468 direct index ( temp highp 4-component vector of float)
+0:468 'm' ( temp highp 4X4 matrix of float)
+0:468 Constant:
+0:468 3 (const int)
+0:468 Constant:
+0:468 3 (const int)
+0:468 component-wise multiply ( temp highp float)
+0:468 direct index ( temp highp float)
+0:468 direct index ( temp highp 4-component vector of float)
+0:468 'm' ( temp highp 4X4 matrix of float)
+0:468 Constant:
+0:468 0 (const int)
+0:468 Constant:
+0:468 3 (const int)
+0:468 direct index ( temp highp float)
+0:468 'tt' ( temp highp 3-component vector of float)
+0:468 Constant:
+0:468 0 (const int)
+0:469 add second child into first child ( temp highp float)
+0:469 direct index ( temp highp float)
+0:469 direct index ( temp highp 4-component vector of float)
+0:469 'm' ( temp highp 4X4 matrix of float)
+0:469 Constant:
+0:469 3 (const int)
+0:469 Constant:
+0:469 0 (const int)
+0:469 component-wise multiply ( temp highp float)
+0:469 direct index ( temp highp float)
+0:469 direct index ( temp highp 4-component vector of float)
+0:469 'm' ( temp highp 4X4 matrix of float)
+0:469 Constant:
+0:469 1 (const int)
+0:469 Constant:
+0:469 0 (const int)
+0:469 direct index ( temp highp float)
+0:469 'tt' ( temp highp 3-component vector of float)
+0:469 Constant:
+0:469 1 (const int)
+0:470 add second child into first child ( temp highp float)
+0:470 direct index ( temp highp float)
+0:470 direct index ( temp highp 4-component vector of float)
+0:470 'm' ( temp highp 4X4 matrix of float)
+0:470 Constant:
+0:470 3 (const int)
+0:470 Constant:
+0:470 1 (const int)
+0:470 component-wise multiply ( temp highp float)
+0:470 direct index ( temp highp float)
+0:470 direct index ( temp highp 4-component vector of float)
+0:470 'm' ( temp highp 4X4 matrix of float)
+0:470 Constant:
+0:470 1 (const int)
+0:470 Constant:
+0:470 1 (const int)
+0:470 direct index ( temp highp float)
+0:470 'tt' ( temp highp 3-component vector of float)
+0:470 Constant:
+0:470 1 (const int)
+0:471 add second child into first child ( temp highp float)
+0:471 direct index ( temp highp float)
+0:471 direct index ( temp highp 4-component vector of float)
+0:471 'm' ( temp highp 4X4 matrix of float)
+0:471 Constant:
+0:471 3 (const int)
+0:471 Constant:
+0:471 2 (const int)
+0:471 component-wise multiply ( temp highp float)
+0:471 direct index ( temp highp float)
+0:471 direct index ( temp highp 4-component vector of float)
+0:471 'm' ( temp highp 4X4 matrix of float)
+0:471 Constant:
+0:471 1 (const int)
+0:471 Constant:
+0:471 2 (const int)
+0:471 direct index ( temp highp float)
+0:471 'tt' ( temp highp 3-component vector of float)
+0:471 Constant:
+0:471 1 (const int)
+0:472 add second child into first child ( temp highp float)
+0:472 direct index ( temp highp float)
+0:472 direct index ( temp highp 4-component vector of float)
+0:472 'm' ( temp highp 4X4 matrix of float)
+0:472 Constant:
+0:472 3 (const int)
+0:472 Constant:
+0:472 3 (const int)
+0:472 component-wise multiply ( temp highp float)
+0:472 direct index ( temp highp float)
+0:472 direct index ( temp highp 4-component vector of float)
+0:472 'm' ( temp highp 4X4 matrix of float)
+0:472 Constant:
+0:472 1 (const int)
+0:472 Constant:
+0:472 3 (const int)
+0:472 direct index ( temp highp float)
+0:472 'tt' ( temp highp 3-component vector of float)
+0:472 Constant:
+0:472 1 (const int)
+0:473 add second child into first child ( temp highp float)
+0:473 direct index ( temp highp float)
+0:473 direct index ( temp highp 4-component vector of float)
+0:473 'm' ( temp highp 4X4 matrix of float)
+0:473 Constant:
+0:473 3 (const int)
+0:473 Constant:
+0:473 0 (const int)
+0:473 component-wise multiply ( temp highp float)
+0:473 direct index ( temp highp float)
+0:473 direct index ( temp highp 4-component vector of float)
+0:473 'm' ( temp highp 4X4 matrix of float)
+0:473 Constant:
+0:473 2 (const int)
+0:473 Constant:
+0:473 0 (const int)
+0:473 direct index ( temp highp float)
+0:473 'tt' ( temp highp 3-component vector of float)
+0:473 Constant:
+0:473 2 (const int)
+0:474 add second child into first child ( temp highp float)
+0:474 direct index ( temp highp float)
+0:474 direct index ( temp highp 4-component vector of float)
+0:474 'm' ( temp highp 4X4 matrix of float)
+0:474 Constant:
+0:474 3 (const int)
+0:474 Constant:
+0:474 1 (const int)
+0:474 component-wise multiply ( temp highp float)
+0:474 direct index ( temp highp float)
+0:474 direct index ( temp highp 4-component vector of float)
+0:474 'm' ( temp highp 4X4 matrix of float)
+0:474 Constant:
+0:474 2 (const int)
+0:474 Constant:
+0:474 1 (const int)
+0:474 direct index ( temp highp float)
+0:474 'tt' ( temp highp 3-component vector of float)
+0:474 Constant:
+0:474 2 (const int)
+0:475 add second child into first child ( temp highp float)
+0:475 direct index ( temp highp float)
+0:475 direct index ( temp highp 4-component vector of float)
+0:475 'm' ( temp highp 4X4 matrix of float)
+0:475 Constant:
+0:475 3 (const int)
+0:475 Constant:
+0:475 2 (const int)
+0:475 component-wise multiply ( temp highp float)
+0:475 direct index ( temp highp float)
+0:475 direct index ( temp highp 4-component vector of float)
+0:475 'm' ( temp highp 4X4 matrix of float)
+0:475 Constant:
+0:475 2 (const int)
+0:475 Constant:
+0:475 2 (const int)
+0:475 direct index ( temp highp float)
+0:475 'tt' ( temp highp 3-component vector of float)
+0:475 Constant:
+0:475 2 (const int)
+0:476 add second child into first child ( temp highp float)
+0:476 direct index ( temp highp float)
+0:476 direct index ( temp highp 4-component vector of float)
+0:476 'm' ( temp highp 4X4 matrix of float)
+0:476 Constant:
+0:476 3 (const int)
+0:476 Constant:
+0:476 3 (const int)
+0:476 component-wise multiply ( temp highp float)
+0:476 direct index ( temp highp float)
+0:476 direct index ( temp highp 4-component vector of float)
+0:476 'm' ( temp highp 4X4 matrix of float)
+0:476 Constant:
+0:476 2 (const int)
+0:476 Constant:
+0:476 3 (const int)
+0:476 direct index ( temp highp float)
+0:476 'tt' ( temp highp 3-component vector of float)
+0:476 Constant:
+0:476 2 (const int)
+0:478 Branch: Return with expression
+0:478 'm' ( temp highp 4X4 matrix of float)
+0:480 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:480 Function Parameters:
+0:480 'id' ( in highp int)
+0:481 Sequence
+0:481 Sequence
+0:481 move second child to first child ( temp highp 3X3 matrix of float)
+0:481 'm' ( temp highp 3X3 matrix of float)
+0:481 Constant:
+0:481 1.000000
+0:481 0.000000
+0:481 0.000000
+0:481 0.000000
+0:481 1.000000
+0:481 0.000000
+0:481 0.000000
+0:481 0.000000
+0:481 1.000000
+0:482 Branch: Return with expression
+0:482 'm' ( temp highp 3X3 matrix of float)
+0:484 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:484 Function Parameters:
+0:484 'id' ( in highp int)
+0:485 Sequence
+0:485 Sequence
+0:485 move second child to first child ( temp highp 3X3 matrix of float)
+0:485 'm' ( temp highp 3X3 matrix of float)
+0:485 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:485 'id' ( in highp int)
+0:486 Branch: Return with expression
+0:486 'm' ( temp highp 3X3 matrix of float)
+0:488 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:488 Function Parameters:
+0:488 'index' ( in highp int)
+0:488 'curColor' ( in highp 4-component vector of float)
+0:489 Sequence
+0:489 subtract second child into first child ( temp highp int)
+0:489 'index' ( in highp int)
+0:489 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:489 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:489 Constant:
+0:489 0 (const uint)
+0:491 Sequence
+0:491 move second child to first child ( temp highp int)
+0:491 'coord' ( temp highp int)
+0:491 'index' ( in highp int)
+0:492 Sequence
+0:492 move second child to first child ( temp highp 4-component vector of float)
+0:492 'samp' ( temp highp 4-component vector of float)
+0:492 textureFetch ( global highp 4-component vector of float)
+0:492 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:492 'coord' ( temp highp int)
+0:493 move second child to first child ( temp highp float)
+0:493 direct index ( temp highp float)
+0:493 'v' ( temp highp 4-component vector of float)
+0:493 Constant:
+0:493 0 (const int)
+0:493 direct index ( temp highp float)
+0:493 'samp' ( temp highp 4-component vector of float)
+0:493 Constant:
+0:493 0 (const int)
+0:494 move second child to first child ( temp highp float)
+0:494 direct index ( temp highp float)
+0:494 'v' ( temp highp 4-component vector of float)
+0:494 Constant:
+0:494 1 (const int)
+0:494 direct index ( temp highp float)
+0:494 'samp' ( temp highp 4-component vector of float)
+0:494 Constant:
+0:494 1 (const int)
+0:495 move second child to first child ( temp highp float)
+0:495 direct index ( temp highp float)
+0:495 'v' ( temp highp 4-component vector of float)
+0:495 Constant:
+0:495 2 (const int)
+0:495 direct index ( temp highp float)
+0:495 'samp' ( temp highp 4-component vector of float)
+0:495 Constant:
+0:495 2 (const int)
+0:496 move second child to first child ( temp highp float)
+0:496 direct index ( temp highp float)
+0:496 'v' ( temp highp 4-component vector of float)
+0:496 Constant:
+0:496 3 (const int)
+0:496 Constant:
+0:496 1.000000
+0:497 move second child to first child ( temp highp float)
+0:497 direct index ( temp highp float)
+0:497 'curColor' ( in highp 4-component vector of float)
+0:497 Constant:
+0:497 0 (const int)
+0:497 direct index ( temp highp float)
+0:497 'v' ( temp highp 4-component vector of float)
+0:497 Constant:
+0:497 0 (const int)
+0:499 move second child to first child ( temp highp float)
+0:499 direct index ( temp highp float)
+0:499 'curColor' ( in highp 4-component vector of float)
+0:499 Constant:
+0:499 1 (const int)
+0:499 direct index ( temp highp float)
+0:499 'v' ( temp highp 4-component vector of float)
+0:499 Constant:
+0:499 1 (const int)
+0:501 move second child to first child ( temp highp float)
+0:501 direct index ( temp highp float)
+0:501 'curColor' ( in highp 4-component vector of float)
+0:501 Constant:
+0:501 2 (const int)
+0:501 direct index ( temp highp float)
+0:501 'v' ( temp highp 4-component vector of float)
+0:501 Constant:
+0:501 2 (const int)
+0:503 Branch: Return with expression
+0:503 'curColor' ( in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'sTDNoiseMap' ( uniform highp sampler2D)
+0:? 'sTDSineLookup' ( uniform highp sampler1D)
+0:? 'sTDWhite2D' ( uniform highp sampler2D)
+0:? 'sTDWhite3D' ( uniform highp sampler3D)
+0:? 'sTDWhite2DArray' ( uniform highp sampler2DArray)
+0:? 'sTDWhiteCube' ( uniform highp samplerCube)
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+
+vk.relaxed.stagelink.0.2.frag
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:2 Function Definition: TDOutputSwizzle(vf4; ( global highp 4-component vector of float)
+0:2 Function Parameters:
+0:2 'c' ( in highp 4-component vector of float)
+0:4 Sequence
+0:4 Branch: Return with expression
+0:4 vector swizzle ( temp highp 4-component vector of float)
+0:4 'c' ( in highp 4-component vector of float)
+0:4 Sequence
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 2 (const int)
+0:4 Constant:
+0:4 3 (const int)
+0:6 Function Definition: TDOutputSwizzle(vu4; ( global highp 4-component vector of uint)
+0:6 Function Parameters:
+0:6 'c' ( in highp 4-component vector of uint)
+0:8 Sequence
+0:8 Branch: Return with expression
+0:8 vector swizzle ( temp highp 4-component vector of uint)
+0:8 'c' ( in highp 4-component vector of uint)
+0:8 Sequence
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Linker Objects
+
+
+Linked vertex stage:
+
+
+Linked fragment stage:
+
+
+Shader version: 460
+0:? Sequence
+0:11 Function Definition: main( ( global void)
+0:11 Function Parameters:
+0:15 Sequence
+0:15 Sequence
+0:15 Sequence
+0:15 move second child to first child ( temp highp 3-component vector of float)
+0:15 'texcoord' ( temp highp 3-component vector of float)
+0:15 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:15 direct index (layout( location=3) temp highp 3-component vector of float)
+0:15 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:15 Constant:
+0:15 0 (const int)
+0:16 move second child to first child ( temp highp 3-component vector of float)
+0:16 vector swizzle ( temp highp 3-component vector of float)
+0:16 texCoord0: direct index for structure ( out highp 3-component vector of float)
+0:16 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:16 Constant:
+0:16 2 (const int)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2 (const int)
+0:16 vector swizzle ( temp highp 3-component vector of float)
+0:16 'texcoord' ( temp highp 3-component vector of float)
+0:16 Sequence
+0:16 Constant:
+0:16 0 (const int)
+0:16 Constant:
+0:16 1 (const int)
+0:16 Constant:
+0:16 2 (const int)
+0:20 move second child to first child ( temp highp int)
+0:20 instance: direct index for structure ( flat out highp int)
+0:20 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:20 Constant:
+0:20 4 (const int)
+0:20 Function Call: TDInstanceID( ( global highp int)
+0:21 Sequence
+0:21 move second child to first child ( temp highp 4-component vector of float)
+0:21 'worldSpacePos' ( temp highp 4-component vector of float)
+0:21 Function Call: TDDeform(vf3; ( global highp 4-component vector of float)
+0:21 'P' (layout( location=0) in highp 3-component vector of float)
+0:22 Sequence
+0:22 move second child to first child ( temp highp 3-component vector of float)
+0:22 'uvUnwrapCoord' ( temp highp 3-component vector of float)
+0:22 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:22 Function Call: TDUVUnwrapCoord( ( global highp 3-component vector of float)
+0:23 move second child to first child ( temp highp 4-component vector of float)
+0:23 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position)
+0:23 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance})
+0:23 Constant:
+0:23 0 (const uint)
+0:23 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:23 'worldSpacePos' ( temp highp 4-component vector of float)
+0:23 'uvUnwrapCoord' ( temp highp 3-component vector of float)
+0:32 Sequence
+0:32 move second child to first child ( temp highp int)
+0:32 'cameraIndex' ( temp highp int)
+0:32 Function Call: TDCameraIndex( ( global highp int)
+0:33 move second child to first child ( temp highp int)
+0:33 cameraIndex: direct index for structure ( flat out highp int)
+0:33 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:33 Constant:
+0:33 3 (const int)
+0:33 'cameraIndex' ( temp highp int)
+0:34 move second child to first child ( temp highp 3-component vector of float)
+0:34 vector swizzle ( temp highp 3-component vector of float)
+0:34 worldSpacePos: direct index for structure ( out highp 3-component vector of float)
+0:34 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:34 Constant:
+0:34 1 (const int)
+0:34 Sequence
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const int)
+0:34 Constant:
+0:34 2 (const int)
+0:34 vector swizzle ( temp highp 3-component vector of float)
+0:34 'worldSpacePos' ( temp highp 4-component vector of float)
+0:34 Sequence
+0:34 Constant:
+0:34 0 (const int)
+0:34 Constant:
+0:34 1 (const int)
+0:34 Constant:
+0:34 2 (const int)
+0:35 move second child to first child ( temp highp 4-component vector of float)
+0:35 color: direct index for structure ( out highp 4-component vector of float)
+0:35 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:35 Constant:
+0:35 0 (const int)
+0:35 Function Call: TDInstanceColor(vf4; ( global highp 4-component vector of float)
+0:35 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:176 Function Definition: iTDCamToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:176 Function Parameters:
+0:176 'v' ( in highp 4-component vector of float)
+0:176 'uv' ( in highp 3-component vector of float)
+0:176 'cameraIndex' ( in highp int)
+0:176 'applyPickMod' ( in bool)
+0:178 Sequence
+0:178 Test condition and select ( temp void)
+0:178 Condition
+0:178 Negate conditional ( temp bool)
+0:178 Function Call: TDInstanceActive( ( global bool)
+0:178 true case
+0:179 Branch: Return with expression
+0:179 Constant:
+0:179 2.000000
+0:179 2.000000
+0:179 2.000000
+0:179 0.000000
+0:180 move second child to first child ( temp highp 4-component vector of float)
+0:180 'v' ( in highp 4-component vector of float)
+0:180 matrix-times-vector ( temp highp 4-component vector of float)
+0:180 proj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:180 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:180 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:180 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:180 Constant:
+0:180 0 (const uint)
+0:180 Constant:
+0:180 0 (const int)
+0:180 Constant:
+0:180 8 (const int)
+0:180 'v' ( in highp 4-component vector of float)
+0:181 Branch: Return with expression
+0:181 'v' ( in highp 4-component vector of float)
+0:183 Function Definition: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:183 Function Parameters:
+0:183 'v' ( in highp 4-component vector of float)
+0:183 'uv' ( in highp 3-component vector of float)
+0:183 'cameraIndex' ( in highp int)
+0:183 'applyPickMod' ( in bool)
+0:184 Sequence
+0:184 Test condition and select ( temp void)
+0:184 Condition
+0:184 Negate conditional ( temp bool)
+0:184 Function Call: TDInstanceActive( ( global bool)
+0:184 true case
+0:185 Branch: Return with expression
+0:185 Constant:
+0:185 2.000000
+0:185 2.000000
+0:185 2.000000
+0:185 0.000000
+0:186 move second child to first child ( temp highp 4-component vector of float)
+0:186 'v' ( in highp 4-component vector of float)
+0:186 matrix-times-vector ( temp highp 4-component vector of float)
+0:186 camProj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:186 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:186 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:186 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:186 Constant:
+0:186 0 (const uint)
+0:186 Constant:
+0:186 0 (const int)
+0:186 Constant:
+0:186 6 (const int)
+0:186 'v' ( in highp 4-component vector of float)
+0:187 Branch: Return with expression
+0:187 'v' ( in highp 4-component vector of float)
+0:193 Function Definition: TDInstanceID( ( global highp int)
+0:193 Function Parameters:
+0:194 Sequence
+0:194 Branch: Return with expression
+0:194 add ( temp highp int)
+0:194 'gl_InstanceIndex' ( in highp int InstanceIndex)
+0:194 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:194 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:194 Constant:
+0:194 0 (const uint)
+0:196 Function Definition: TDCameraIndex( ( global highp int)
+0:196 Function Parameters:
+0:197 Sequence
+0:197 Branch: Return with expression
+0:197 Constant:
+0:197 0 (const int)
+0:199 Function Definition: TDUVUnwrapCoord( ( global highp 3-component vector of float)
+0:199 Function Parameters:
+0:200 Sequence
+0:200 Branch: Return with expression
+0:200 direct index (layout( location=3) temp highp 3-component vector of float)
+0:200 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:200 Constant:
+0:200 0 (const int)
+0:205 Function Definition: TDPickID( ( global highp int)
+0:205 Function Parameters:
+0:209 Sequence
+0:209 Branch: Return with expression
+0:209 Constant:
+0:209 0 (const int)
+0:212 Function Definition: iTDConvertPickId(i1; ( global highp float)
+0:212 Function Parameters:
+0:212 'id' ( in highp int)
+0:213 Sequence
+0:213 or second child into first child ( temp highp int)
+0:213 'id' ( in highp int)
+0:213 Constant:
+0:213 1073741824 (const int)
+0:214 Branch: Return with expression
+0:214 intBitsToFloat ( global highp float)
+0:214 'id' ( in highp int)
+0:217 Function Definition: TDWritePickingValues( ( global void)
+0:217 Function Parameters:
+0:224 Function Definition: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:224 Function Parameters:
+0:224 'v' ( in highp 4-component vector of float)
+0:224 'uv' ( in highp 3-component vector of float)
+0:226 Sequence
+0:226 Branch: Return with expression
+0:226 Function Call: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float)
+0:226 'v' ( in highp 4-component vector of float)
+0:226 'uv' ( in highp 3-component vector of float)
+0:226 Function Call: TDCameraIndex( ( global highp int)
+0:226 Constant:
+0:226 true (const bool)
+0:228 Function Definition: TDWorldToProj(vf3;vf3; ( global highp 4-component vector of float)
+0:228 Function Parameters:
+0:228 'v' ( in highp 3-component vector of float)
+0:228 'uv' ( in highp 3-component vector of float)
+0:230 Sequence
+0:230 Branch: Return with expression
+0:230 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:230 Construct vec4 ( temp highp 4-component vector of float)
+0:230 'v' ( in highp 3-component vector of float)
+0:230 Constant:
+0:230 1.000000
+0:230 'uv' ( in highp 3-component vector of float)
+0:232 Function Definition: TDWorldToProj(vf4; ( global highp 4-component vector of float)
+0:232 Function Parameters:
+0:232 'v' ( in highp 4-component vector of float)
+0:234 Sequence
+0:234 Branch: Return with expression
+0:234 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float)
+0:234 'v' ( in highp 4-component vector of float)
+0:234 Constant:
+0:234 0.000000
+0:234 0.000000
+0:234 0.000000
+0:236 Function Definition: TDWorldToProj(vf3; ( global highp 4-component vector of float)
+0:236 Function Parameters:
+0:236 'v' ( in highp 3-component vector of float)
+0:238 Sequence
+0:238 Branch: Return with expression
+0:238 Function Call: TDWorldToProj(vf4; ( global highp 4-component vector of float)
+0:238 Construct vec4 ( temp highp 4-component vector of float)
+0:238 'v' ( in highp 3-component vector of float)
+0:238 Constant:
+0:238 1.000000
+0:240 Function Definition: TDPointColor( ( global highp 4-component vector of float)
+0:240 Function Parameters:
+0:241 Sequence
+0:241 Branch: Return with expression
+0:241 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:114 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:114 Function Parameters:
+0:114 'index' ( in highp int)
+0:114 't' ( in highp 3-component vector of float)
+0:? Sequence
+0:116 Sequence
+0:116 move second child to first child ( temp highp int)
+0:116 'coord' ( temp highp int)
+0:116 'index' ( in highp int)
+0:117 Sequence
+0:117 move second child to first child ( temp highp 4-component vector of float)
+0:117 'samp' ( temp highp 4-component vector of float)
+0:117 textureFetch ( global highp 4-component vector of float)
+0:117 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:117 'coord' ( temp highp int)
+0:118 move second child to first child ( temp highp float)
+0:118 direct index ( temp highp float)
+0:118 'v' ( temp highp 3-component vector of float)
+0:118 Constant:
+0:118 0 (const int)
+0:118 direct index ( temp highp float)
+0:118 't' ( in highp 3-component vector of float)
+0:118 Constant:
+0:118 0 (const int)
+0:119 move second child to first child ( temp highp float)
+0:119 direct index ( temp highp float)
+0:119 'v' ( temp highp 3-component vector of float)
+0:119 Constant:
+0:119 1 (const int)
+0:119 direct index ( temp highp float)
+0:119 't' ( in highp 3-component vector of float)
+0:119 Constant:
+0:119 1 (const int)
+0:120 move second child to first child ( temp highp float)
+0:120 direct index ( temp highp float)
+0:120 'v' ( temp highp 3-component vector of float)
+0:120 Constant:
+0:120 2 (const int)
+0:120 direct index ( temp highp float)
+0:120 'samp' ( temp highp 4-component vector of float)
+0:120 Constant:
+0:120 0 (const int)
+0:121 move second child to first child ( temp highp 3-component vector of float)
+0:121 vector swizzle ( temp highp 3-component vector of float)
+0:121 't' ( in highp 3-component vector of float)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:121 vector swizzle ( temp highp 3-component vector of float)
+0:121 'v' ( temp highp 3-component vector of float)
+0:121 Sequence
+0:121 Constant:
+0:121 0 (const int)
+0:121 Constant:
+0:121 1 (const int)
+0:121 Constant:
+0:121 2 (const int)
+0:122 Branch: Return with expression
+0:122 't' ( in highp 3-component vector of float)
+0:124 Function Definition: TDInstanceActive(i1; ( global bool)
+0:124 Function Parameters:
+0:124 'index' ( in highp int)
+0:125 Sequence
+0:125 subtract second child into first child ( temp highp int)
+0:125 'index' ( in highp int)
+0:125 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:125 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:125 Constant:
+0:125 0 (const uint)
+0:127 Sequence
+0:127 move second child to first child ( temp highp int)
+0:127 'coord' ( temp highp int)
+0:127 'index' ( in highp int)
+0:128 Sequence
+0:128 move second child to first child ( temp highp 4-component vector of float)
+0:128 'samp' ( temp highp 4-component vector of float)
+0:128 textureFetch ( global highp 4-component vector of float)
+0:128 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:128 'coord' ( temp highp int)
+0:129 move second child to first child ( temp highp float)
+0:129 'v' ( temp highp float)
+0:129 direct index ( temp highp float)
+0:129 'samp' ( temp highp 4-component vector of float)
+0:129 Constant:
+0:129 0 (const int)
+0:130 Branch: Return with expression
+0:130 Compare Not Equal ( temp bool)
+0:130 'v' ( temp highp float)
+0:130 Constant:
+0:130 0.000000
+0:132 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:132 Function Parameters:
+0:132 'index' ( in highp int)
+0:132 'instanceActive' ( out bool)
+0:133 Sequence
+0:133 Sequence
+0:133 move second child to first child ( temp highp int)
+0:133 'origIndex' ( temp highp int)
+0:133 'index' ( in highp int)
+0:134 subtract second child into first child ( temp highp int)
+0:134 'index' ( in highp int)
+0:134 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:134 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:134 Constant:
+0:134 0 (const uint)
+0:136 Sequence
+0:136 move second child to first child ( temp highp int)
+0:136 'coord' ( temp highp int)
+0:136 'index' ( in highp int)
+0:137 Sequence
+0:137 move second child to first child ( temp highp 4-component vector of float)
+0:137 'samp' ( temp highp 4-component vector of float)
+0:137 textureFetch ( global highp 4-component vector of float)
+0:137 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:137 'coord' ( temp highp int)
+0:138 move second child to first child ( temp highp float)
+0:138 direct index ( temp highp float)
+0:138 'v' ( temp highp 3-component vector of float)
+0:138 Constant:
+0:138 0 (const int)
+0:138 direct index ( temp highp float)
+0:138 'samp' ( temp highp 4-component vector of float)
+0:138 Constant:
+0:138 1 (const int)
+0:139 move second child to first child ( temp highp float)
+0:139 direct index ( temp highp float)
+0:139 'v' ( temp highp 3-component vector of float)
+0:139 Constant:
+0:139 1 (const int)
+0:139 direct index ( temp highp float)
+0:139 'samp' ( temp highp 4-component vector of float)
+0:139 Constant:
+0:139 2 (const int)
+0:140 move second child to first child ( temp highp float)
+0:140 direct index ( temp highp float)
+0:140 'v' ( temp highp 3-component vector of float)
+0:140 Constant:
+0:140 2 (const int)
+0:140 direct index ( temp highp float)
+0:140 'samp' ( temp highp 4-component vector of float)
+0:140 Constant:
+0:140 3 (const int)
+0:141 move second child to first child ( temp bool)
+0:141 'instanceActive' ( out bool)
+0:141 Compare Not Equal ( temp bool)
+0:141 direct index ( temp highp float)
+0:141 'samp' ( temp highp 4-component vector of float)
+0:141 Constant:
+0:141 0 (const int)
+0:141 Constant:
+0:141 0.000000
+0:142 Branch: Return with expression
+0:142 'v' ( temp highp 3-component vector of float)
+0:144 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:144 Function Parameters:
+0:144 'index' ( in highp int)
+0:145 Sequence
+0:145 subtract second child into first child ( temp highp int)
+0:145 'index' ( in highp int)
+0:145 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:145 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:145 Constant:
+0:145 0 (const uint)
+0:147 Sequence
+0:147 move second child to first child ( temp highp int)
+0:147 'coord' ( temp highp int)
+0:147 'index' ( in highp int)
+0:148 Sequence
+0:148 move second child to first child ( temp highp 4-component vector of float)
+0:148 'samp' ( temp highp 4-component vector of float)
+0:148 textureFetch ( global highp 4-component vector of float)
+0:148 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:148 'coord' ( temp highp int)
+0:149 move second child to first child ( temp highp float)
+0:149 direct index ( temp highp float)
+0:149 'v' ( temp highp 3-component vector of float)
+0:149 Constant:
+0:149 0 (const int)
+0:149 direct index ( temp highp float)
+0:149 'samp' ( temp highp 4-component vector of float)
+0:149 Constant:
+0:149 1 (const int)
+0:150 move second child to first child ( temp highp float)
+0:150 direct index ( temp highp float)
+0:150 'v' ( temp highp 3-component vector of float)
+0:150 Constant:
+0:150 1 (const int)
+0:150 direct index ( temp highp float)
+0:150 'samp' ( temp highp 4-component vector of float)
+0:150 Constant:
+0:150 2 (const int)
+0:151 move second child to first child ( temp highp float)
+0:151 direct index ( temp highp float)
+0:151 'v' ( temp highp 3-component vector of float)
+0:151 Constant:
+0:151 2 (const int)
+0:151 direct index ( temp highp float)
+0:151 'samp' ( temp highp 4-component vector of float)
+0:151 Constant:
+0:151 3 (const int)
+0:152 Branch: Return with expression
+0:152 'v' ( temp highp 3-component vector of float)
+0:154 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:154 Function Parameters:
+0:154 'index' ( in highp int)
+0:155 Sequence
+0:155 subtract second child into first child ( temp highp int)
+0:155 'index' ( in highp int)
+0:155 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:155 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:155 Constant:
+0:155 0 (const uint)
+0:156 Sequence
+0:156 move second child to first child ( temp highp 3-component vector of float)
+0:156 'v' ( temp highp 3-component vector of float)
+0:156 Constant:
+0:156 0.000000
+0:156 0.000000
+0:156 0.000000
+0:157 Sequence
+0:157 move second child to first child ( temp highp 3X3 matrix of float)
+0:157 'm' ( temp highp 3X3 matrix of float)
+0:157 Constant:
+0:157 1.000000
+0:157 0.000000
+0:157 0.000000
+0:157 0.000000
+0:157 1.000000
+0:157 0.000000
+0:157 0.000000
+0:157 0.000000
+0:157 1.000000
+0:161 Branch: Return with expression
+0:161 'm' ( temp highp 3X3 matrix of float)
+0:163 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:163 Function Parameters:
+0:163 'index' ( in highp int)
+0:164 Sequence
+0:164 subtract second child into first child ( temp highp int)
+0:164 'index' ( in highp int)
+0:164 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:164 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:164 Constant:
+0:164 0 (const uint)
+0:165 Sequence
+0:165 move second child to first child ( temp highp 3-component vector of float)
+0:165 'v' ( temp highp 3-component vector of float)
+0:165 Constant:
+0:165 1.000000
+0:165 1.000000
+0:165 1.000000
+0:166 Branch: Return with expression
+0:166 'v' ( temp highp 3-component vector of float)
+0:168 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float)
+0:168 Function Parameters:
+0:168 'index' ( in highp int)
+0:169 Sequence
+0:169 subtract second child into first child ( temp highp int)
+0:169 'index' ( in highp int)
+0:169 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:169 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:169 Constant:
+0:169 0 (const uint)
+0:170 Sequence
+0:170 move second child to first child ( temp highp 3-component vector of float)
+0:170 'v' ( temp highp 3-component vector of float)
+0:170 Constant:
+0:170 0.000000
+0:170 0.000000
+0:170 0.000000
+0:171 Branch: Return with expression
+0:171 'v' ( temp highp 3-component vector of float)
+0:173 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float)
+0:173 Function Parameters:
+0:173 'index' ( in highp int)
+0:174 Sequence
+0:174 subtract second child into first child ( temp highp int)
+0:174 'index' ( in highp int)
+0:174 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:174 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:174 Constant:
+0:174 0 (const uint)
+0:175 Sequence
+0:175 move second child to first child ( temp highp 3-component vector of float)
+0:175 'v' ( temp highp 3-component vector of float)
+0:175 Constant:
+0:175 0.000000
+0:175 0.000000
+0:175 1.000000
+0:176 Branch: Return with expression
+0:176 'v' ( temp highp 3-component vector of float)
+0:178 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float)
+0:178 Function Parameters:
+0:178 'index' ( in highp int)
+0:179 Sequence
+0:179 subtract second child into first child ( temp highp int)
+0:179 'index' ( in highp int)
+0:179 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:179 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:179 Constant:
+0:179 0 (const uint)
+0:180 Sequence
+0:180 move second child to first child ( temp highp 3-component vector of float)
+0:180 'v' ( temp highp 3-component vector of float)
+0:180 Constant:
+0:180 0.000000
+0:180 1.000000
+0:180 0.000000
+0:181 Branch: Return with expression
+0:181 'v' ( temp highp 3-component vector of float)
+0:183 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:183 Function Parameters:
+0:183 'id' ( in highp int)
+0:184 Sequence
+0:184 Sequence
+0:184 move second child to first child ( temp bool)
+0:184 'instanceActive' ( temp bool)
+0:184 Constant:
+0:184 true (const bool)
+0:185 Sequence
+0:185 move second child to first child ( temp highp 3-component vector of float)
+0:185 't' ( temp highp 3-component vector of float)
+0:185 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:185 'id' ( in highp int)
+0:185 'instanceActive' ( temp bool)
+0:186 Test condition and select ( temp void)
+0:186 Condition
+0:186 Negate conditional ( temp bool)
+0:186 'instanceActive' ( temp bool)
+0:186 true case
+0:188 Sequence
+0:188 Branch: Return with expression
+0:188 Constant:
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:188 0.000000
+0:190 Sequence
+0:190 move second child to first child ( temp highp 4X4 matrix of float)
+0:190 'm' ( temp highp 4X4 matrix of float)
+0:190 Constant:
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 0.000000
+0:190 1.000000
+0:192 Sequence
+0:192 Sequence
+0:192 move second child to first child ( temp highp 3-component vector of float)
+0:192 'tt' ( temp highp 3-component vector of float)
+0:192 't' ( temp highp 3-component vector of float)
+0:193 add second child into first child ( temp highp float)
+0:193 direct index ( temp highp float)
+0:193 direct index ( temp highp 4-component vector of float)
+0:193 'm' ( temp highp 4X4 matrix of float)
+0:193 Constant:
+0:193 3 (const int)
+0:193 Constant:
+0:193 0 (const int)
+0:193 component-wise multiply ( temp highp float)
+0:193 direct index ( temp highp float)
+0:193 direct index ( temp highp 4-component vector of float)
+0:193 'm' ( temp highp 4X4 matrix of float)
+0:193 Constant:
+0:193 0 (const int)
+0:193 Constant:
+0:193 0 (const int)
+0:193 direct index ( temp highp float)
+0:193 'tt' ( temp highp 3-component vector of float)
+0:193 Constant:
+0:193 0 (const int)
+0:194 add second child into first child ( temp highp float)
+0:194 direct index ( temp highp float)
+0:194 direct index ( temp highp 4-component vector of float)
+0:194 'm' ( temp highp 4X4 matrix of float)
+0:194 Constant:
+0:194 3 (const int)
+0:194 Constant:
+0:194 1 (const int)
+0:194 component-wise multiply ( temp highp float)
+0:194 direct index ( temp highp float)
+0:194 direct index ( temp highp 4-component vector of float)
+0:194 'm' ( temp highp 4X4 matrix of float)
+0:194 Constant:
+0:194 0 (const int)
+0:194 Constant:
+0:194 1 (const int)
+0:194 direct index ( temp highp float)
+0:194 'tt' ( temp highp 3-component vector of float)
+0:194 Constant:
+0:194 0 (const int)
+0:195 add second child into first child ( temp highp float)
+0:195 direct index ( temp highp float)
+0:195 direct index ( temp highp 4-component vector of float)
+0:195 'm' ( temp highp 4X4 matrix of float)
+0:195 Constant:
+0:195 3 (const int)
+0:195 Constant:
+0:195 2 (const int)
+0:195 component-wise multiply ( temp highp float)
+0:195 direct index ( temp highp float)
+0:195 direct index ( temp highp 4-component vector of float)
+0:195 'm' ( temp highp 4X4 matrix of float)
+0:195 Constant:
+0:195 0 (const int)
+0:195 Constant:
+0:195 2 (const int)
+0:195 direct index ( temp highp float)
+0:195 'tt' ( temp highp 3-component vector of float)
+0:195 Constant:
+0:195 0 (const int)
+0:196 add second child into first child ( temp highp float)
+0:196 direct index ( temp highp float)
+0:196 direct index ( temp highp 4-component vector of float)
+0:196 'm' ( temp highp 4X4 matrix of float)
+0:196 Constant:
+0:196 3 (const int)
+0:196 Constant:
+0:196 3 (const int)
+0:196 component-wise multiply ( temp highp float)
+0:196 direct index ( temp highp float)
+0:196 direct index ( temp highp 4-component vector of float)
+0:196 'm' ( temp highp 4X4 matrix of float)
+0:196 Constant:
+0:196 0 (const int)
+0:196 Constant:
+0:196 3 (const int)
+0:196 direct index ( temp highp float)
+0:196 'tt' ( temp highp 3-component vector of float)
+0:196 Constant:
+0:196 0 (const int)
+0:197 add second child into first child ( temp highp float)
+0:197 direct index ( temp highp float)
+0:197 direct index ( temp highp 4-component vector of float)
+0:197 'm' ( temp highp 4X4 matrix of float)
+0:197 Constant:
+0:197 3 (const int)
+0:197 Constant:
+0:197 0 (const int)
+0:197 component-wise multiply ( temp highp float)
+0:197 direct index ( temp highp float)
+0:197 direct index ( temp highp 4-component vector of float)
+0:197 'm' ( temp highp 4X4 matrix of float)
+0:197 Constant:
+0:197 1 (const int)
+0:197 Constant:
+0:197 0 (const int)
+0:197 direct index ( temp highp float)
+0:197 'tt' ( temp highp 3-component vector of float)
+0:197 Constant:
+0:197 1 (const int)
+0:198 add second child into first child ( temp highp float)
+0:198 direct index ( temp highp float)
+0:198 direct index ( temp highp 4-component vector of float)
+0:198 'm' ( temp highp 4X4 matrix of float)
+0:198 Constant:
+0:198 3 (const int)
+0:198 Constant:
+0:198 1 (const int)
+0:198 component-wise multiply ( temp highp float)
+0:198 direct index ( temp highp float)
+0:198 direct index ( temp highp 4-component vector of float)
+0:198 'm' ( temp highp 4X4 matrix of float)
+0:198 Constant:
+0:198 1 (const int)
+0:198 Constant:
+0:198 1 (const int)
+0:198 direct index ( temp highp float)
+0:198 'tt' ( temp highp 3-component vector of float)
+0:198 Constant:
+0:198 1 (const int)
+0:199 add second child into first child ( temp highp float)
+0:199 direct index ( temp highp float)
+0:199 direct index ( temp highp 4-component vector of float)
+0:199 'm' ( temp highp 4X4 matrix of float)
+0:199 Constant:
+0:199 3 (const int)
+0:199 Constant:
+0:199 2 (const int)
+0:199 component-wise multiply ( temp highp float)
+0:199 direct index ( temp highp float)
+0:199 direct index ( temp highp 4-component vector of float)
+0:199 'm' ( temp highp 4X4 matrix of float)
+0:199 Constant:
+0:199 1 (const int)
+0:199 Constant:
+0:199 2 (const int)
+0:199 direct index ( temp highp float)
+0:199 'tt' ( temp highp 3-component vector of float)
+0:199 Constant:
+0:199 1 (const int)
+0:200 add second child into first child ( temp highp float)
+0:200 direct index ( temp highp float)
+0:200 direct index ( temp highp 4-component vector of float)
+0:200 'm' ( temp highp 4X4 matrix of float)
+0:200 Constant:
+0:200 3 (const int)
+0:200 Constant:
+0:200 3 (const int)
+0:200 component-wise multiply ( temp highp float)
+0:200 direct index ( temp highp float)
+0:200 direct index ( temp highp 4-component vector of float)
+0:200 'm' ( temp highp 4X4 matrix of float)
+0:200 Constant:
+0:200 1 (const int)
+0:200 Constant:
+0:200 3 (const int)
+0:200 direct index ( temp highp float)
+0:200 'tt' ( temp highp 3-component vector of float)
+0:200 Constant:
+0:200 1 (const int)
+0:201 add second child into first child ( temp highp float)
+0:201 direct index ( temp highp float)
+0:201 direct index ( temp highp 4-component vector of float)
+0:201 'm' ( temp highp 4X4 matrix of float)
+0:201 Constant:
+0:201 3 (const int)
+0:201 Constant:
+0:201 0 (const int)
+0:201 component-wise multiply ( temp highp float)
+0:201 direct index ( temp highp float)
+0:201 direct index ( temp highp 4-component vector of float)
+0:201 'm' ( temp highp 4X4 matrix of float)
+0:201 Constant:
+0:201 2 (const int)
+0:201 Constant:
+0:201 0 (const int)
+0:201 direct index ( temp highp float)
+0:201 'tt' ( temp highp 3-component vector of float)
+0:201 Constant:
+0:201 2 (const int)
+0:202 add second child into first child ( temp highp float)
+0:202 direct index ( temp highp float)
+0:202 direct index ( temp highp 4-component vector of float)
+0:202 'm' ( temp highp 4X4 matrix of float)
+0:202 Constant:
+0:202 3 (const int)
+0:202 Constant:
+0:202 1 (const int)
+0:202 component-wise multiply ( temp highp float)
+0:202 direct index ( temp highp float)
+0:202 direct index ( temp highp 4-component vector of float)
+0:202 'm' ( temp highp 4X4 matrix of float)
+0:202 Constant:
+0:202 2 (const int)
+0:202 Constant:
+0:202 1 (const int)
+0:202 direct index ( temp highp float)
+0:202 'tt' ( temp highp 3-component vector of float)
+0:202 Constant:
+0:202 2 (const int)
+0:203 add second child into first child ( temp highp float)
+0:203 direct index ( temp highp float)
+0:203 direct index ( temp highp 4-component vector of float)
+0:203 'm' ( temp highp 4X4 matrix of float)
+0:203 Constant:
+0:203 3 (const int)
+0:203 Constant:
+0:203 2 (const int)
+0:203 component-wise multiply ( temp highp float)
+0:203 direct index ( temp highp float)
+0:203 direct index ( temp highp 4-component vector of float)
+0:203 'm' ( temp highp 4X4 matrix of float)
+0:203 Constant:
+0:203 2 (const int)
+0:203 Constant:
+0:203 2 (const int)
+0:203 direct index ( temp highp float)
+0:203 'tt' ( temp highp 3-component vector of float)
+0:203 Constant:
+0:203 2 (const int)
+0:204 add second child into first child ( temp highp float)
+0:204 direct index ( temp highp float)
+0:204 direct index ( temp highp 4-component vector of float)
+0:204 'm' ( temp highp 4X4 matrix of float)
+0:204 Constant:
+0:204 3 (const int)
+0:204 Constant:
+0:204 3 (const int)
+0:204 component-wise multiply ( temp highp float)
+0:204 direct index ( temp highp float)
+0:204 direct index ( temp highp 4-component vector of float)
+0:204 'm' ( temp highp 4X4 matrix of float)
+0:204 Constant:
+0:204 2 (const int)
+0:204 Constant:
+0:204 3 (const int)
+0:204 direct index ( temp highp float)
+0:204 'tt' ( temp highp 3-component vector of float)
+0:204 Constant:
+0:204 2 (const int)
+0:206 Branch: Return with expression
+0:206 'm' ( temp highp 4X4 matrix of float)
+0:208 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:208 Function Parameters:
+0:208 'id' ( in highp int)
+0:209 Sequence
+0:209 Sequence
+0:209 move second child to first child ( temp highp 3X3 matrix of float)
+0:209 'm' ( temp highp 3X3 matrix of float)
+0:209 Constant:
+0:209 1.000000
+0:209 0.000000
+0:209 0.000000
+0:209 0.000000
+0:209 1.000000
+0:209 0.000000
+0:209 0.000000
+0:209 0.000000
+0:209 1.000000
+0:210 Branch: Return with expression
+0:210 'm' ( temp highp 3X3 matrix of float)
+0:212 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:212 Function Parameters:
+0:212 'id' ( in highp int)
+0:213 Sequence
+0:213 Sequence
+0:213 move second child to first child ( temp highp 3X3 matrix of float)
+0:213 'm' ( temp highp 3X3 matrix of float)
+0:213 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:213 'id' ( in highp int)
+0:214 Branch: Return with expression
+0:214 'm' ( temp highp 3X3 matrix of float)
+0:216 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:216 Function Parameters:
+0:216 'index' ( in highp int)
+0:216 'curColor' ( in highp 4-component vector of float)
+0:217 Sequence
+0:217 subtract second child into first child ( temp highp int)
+0:217 'index' ( in highp int)
+0:217 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:217 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:217 Constant:
+0:217 0 (const uint)
+0:219 Sequence
+0:219 move second child to first child ( temp highp int)
+0:219 'coord' ( temp highp int)
+0:219 'index' ( in highp int)
+0:220 Sequence
+0:220 move second child to first child ( temp highp 4-component vector of float)
+0:220 'samp' ( temp highp 4-component vector of float)
+0:220 textureFetch ( global highp 4-component vector of float)
+0:220 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:220 'coord' ( temp highp int)
+0:221 move second child to first child ( temp highp float)
+0:221 direct index ( temp highp float)
+0:221 'v' ( temp highp 4-component vector of float)
+0:221 Constant:
+0:221 0 (const int)
+0:221 direct index ( temp highp float)
+0:221 'samp' ( temp highp 4-component vector of float)
+0:221 Constant:
+0:221 0 (const int)
+0:222 move second child to first child ( temp highp float)
+0:222 direct index ( temp highp float)
+0:222 'v' ( temp highp 4-component vector of float)
+0:222 Constant:
+0:222 1 (const int)
+0:222 direct index ( temp highp float)
+0:222 'samp' ( temp highp 4-component vector of float)
+0:222 Constant:
+0:222 1 (const int)
+0:223 move second child to first child ( temp highp float)
+0:223 direct index ( temp highp float)
+0:223 'v' ( temp highp 4-component vector of float)
+0:223 Constant:
+0:223 2 (const int)
+0:223 direct index ( temp highp float)
+0:223 'samp' ( temp highp 4-component vector of float)
+0:223 Constant:
+0:223 2 (const int)
+0:224 move second child to first child ( temp highp float)
+0:224 direct index ( temp highp float)
+0:224 'v' ( temp highp 4-component vector of float)
+0:224 Constant:
+0:224 3 (const int)
+0:224 Constant:
+0:224 1.000000
+0:225 move second child to first child ( temp highp float)
+0:225 direct index ( temp highp float)
+0:225 'curColor' ( in highp 4-component vector of float)
+0:225 Constant:
+0:225 0 (const int)
+0:225 direct index ( temp highp float)
+0:225 'v' ( temp highp 4-component vector of float)
+0:225 Constant:
+0:225 0 (const int)
+0:227 move second child to first child ( temp highp float)
+0:227 direct index ( temp highp float)
+0:227 'curColor' ( in highp 4-component vector of float)
+0:227 Constant:
+0:227 1 (const int)
+0:227 direct index ( temp highp float)
+0:227 'v' ( temp highp 4-component vector of float)
+0:227 Constant:
+0:227 1 (const int)
+0:229 move second child to first child ( temp highp float)
+0:229 direct index ( temp highp float)
+0:229 'curColor' ( in highp 4-component vector of float)
+0:229 Constant:
+0:229 2 (const int)
+0:229 direct index ( temp highp float)
+0:229 'v' ( temp highp 4-component vector of float)
+0:229 Constant:
+0:229 2 (const int)
+0:231 Branch: Return with expression
+0:231 'curColor' ( in highp 4-component vector of float)
+0:233 Function Definition: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:233 Function Parameters:
+0:233 'id' ( in highp int)
+0:233 'pos' ( in highp 4-component vector of float)
+0:234 Sequence
+0:234 move second child to first child ( temp highp 4-component vector of float)
+0:234 'pos' ( in highp 4-component vector of float)
+0:234 matrix-times-vector ( temp highp 4-component vector of float)
+0:234 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:234 'id' ( in highp int)
+0:234 'pos' ( in highp 4-component vector of float)
+0:235 Branch: Return with expression
+0:235 matrix-times-vector ( temp highp 4-component vector of float)
+0:235 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:235 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:235 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:235 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:235 Constant:
+0:235 0 (const uint)
+0:235 Function Call: TDCameraIndex( ( global highp int)
+0:235 Constant:
+0:235 0 (const int)
+0:235 'pos' ( in highp 4-component vector of float)
+0:238 Function Definition: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:238 Function Parameters:
+0:238 'id' ( in highp int)
+0:238 'vec' ( in highp 3-component vector of float)
+0:240 Sequence
+0:240 Sequence
+0:240 move second child to first child ( temp highp 3X3 matrix of float)
+0:240 'm' ( temp highp 3X3 matrix of float)
+0:240 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:240 'id' ( in highp int)
+0:241 Branch: Return with expression
+0:241 matrix-times-vector ( temp highp 3-component vector of float)
+0:241 Construct mat3 ( temp highp 3X3 matrix of float)
+0:241 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float)
+0:241 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:241 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:241 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:241 Constant:
+0:241 0 (const uint)
+0:241 Function Call: TDCameraIndex( ( global highp int)
+0:241 Constant:
+0:241 0 (const int)
+0:241 matrix-times-vector ( temp highp 3-component vector of float)
+0:241 'm' ( temp highp 3X3 matrix of float)
+0:241 'vec' ( in highp 3-component vector of float)
+0:243 Function Definition: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:243 Function Parameters:
+0:243 'id' ( in highp int)
+0:243 'vec' ( in highp 3-component vector of float)
+0:245 Sequence
+0:245 Sequence
+0:245 move second child to first child ( temp highp 3X3 matrix of float)
+0:245 'm' ( temp highp 3X3 matrix of float)
+0:245 Function Call: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:245 'id' ( in highp int)
+0:246 Branch: Return with expression
+0:246 matrix-times-vector ( temp highp 3-component vector of float)
+0:246 Construct mat3 ( temp highp 3X3 matrix of float)
+0:246 worldForNormals: direct index for structure (layout( column_major std140) global highp 3X3 matrix of float)
+0:246 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:246 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals})
+0:246 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:246 Constant:
+0:246 0 (const uint)
+0:246 Function Call: TDCameraIndex( ( global highp int)
+0:246 Constant:
+0:246 13 (const int)
+0:246 matrix-times-vector ( temp highp 3-component vector of float)
+0:246 'm' ( temp highp 3X3 matrix of float)
+0:246 'vec' ( in highp 3-component vector of float)
+0:248 Function Definition: TDInstanceDeform(vf4; ( global highp 4-component vector of float)
+0:248 Function Parameters:
+0:248 'pos' ( in highp 4-component vector of float)
+0:249 Sequence
+0:249 Branch: Return with expression
+0:249 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:249 Function Call: TDInstanceID( ( global highp int)
+0:249 'pos' ( in highp 4-component vector of float)
+0:251 Function Definition: TDInstanceDeformVec(vf3; ( global highp 3-component vector of float)
+0:251 Function Parameters:
+0:251 'vec' ( in highp 3-component vector of float)
+0:252 Sequence
+0:252 Branch: Return with expression
+0:252 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:252 Function Call: TDInstanceID( ( global highp int)
+0:252 'vec' ( in highp 3-component vector of float)
+0:254 Function Definition: TDInstanceDeformNorm(vf3; ( global highp 3-component vector of float)
+0:254 Function Parameters:
+0:254 'vec' ( in highp 3-component vector of float)
+0:255 Sequence
+0:255 Branch: Return with expression
+0:255 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:255 Function Call: TDInstanceID( ( global highp int)
+0:255 'vec' ( in highp 3-component vector of float)
+0:257 Function Definition: TDInstanceActive( ( global bool)
+0:257 Function Parameters:
+0:257 Sequence
+0:257 Branch: Return with expression
+0:257 Function Call: TDInstanceActive(i1; ( global bool)
+0:257 Function Call: TDInstanceID( ( global highp int)
+0:258 Function Definition: TDInstanceTranslate( ( global highp 3-component vector of float)
+0:258 Function Parameters:
+0:258 Sequence
+0:258 Branch: Return with expression
+0:258 Function Call: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:258 Function Call: TDInstanceID( ( global highp int)
+0:259 Function Definition: TDInstanceRotateMat( ( global highp 3X3 matrix of float)
+0:259 Function Parameters:
+0:259 Sequence
+0:259 Branch: Return with expression
+0:259 Function Call: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:259 Function Call: TDInstanceID( ( global highp int)
+0:260 Function Definition: TDInstanceScale( ( global highp 3-component vector of float)
+0:260 Function Parameters:
+0:260 Sequence
+0:260 Branch: Return with expression
+0:260 Function Call: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:260 Function Call: TDInstanceID( ( global highp int)
+0:261 Function Definition: TDInstanceMat( ( global highp 4X4 matrix of float)
+0:261 Function Parameters:
+0:261 Sequence
+0:261 Branch: Return with expression
+0:261 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:261 Function Call: TDInstanceID( ( global highp int)
+0:263 Function Definition: TDInstanceMat3( ( global highp 3X3 matrix of float)
+0:263 Function Parameters:
+0:263 Sequence
+0:263 Branch: Return with expression
+0:263 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:263 Function Call: TDInstanceID( ( global highp int)
+0:265 Function Definition: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float)
+0:265 Function Parameters:
+0:265 't' ( in highp 3-component vector of float)
+0:266 Sequence
+0:266 Branch: Return with expression
+0:266 Function Call: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:266 Function Call: TDInstanceID( ( global highp int)
+0:266 't' ( in highp 3-component vector of float)
+0:268 Function Definition: TDInstanceColor(vf4; ( global highp 4-component vector of float)
+0:268 Function Parameters:
+0:268 'curColor' ( in highp 4-component vector of float)
+0:269 Sequence
+0:269 Branch: Return with expression
+0:269 Function Call: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:269 Function Call: TDInstanceID( ( global highp int)
+0:269 'curColor' ( in highp 4-component vector of float)
+0:271 Function Definition: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:271 Function Parameters:
+0:271 'pos' ( in highp 4-component vector of float)
+0:271 Sequence
+0:271 Branch: Return with expression
+0:271 'pos' ( in highp 4-component vector of float)
+0:273 Function Definition: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:273 Function Parameters:
+0:273 'vec' ( in highp 3-component vector of float)
+0:273 Sequence
+0:273 Branch: Return with expression
+0:273 'vec' ( in highp 3-component vector of float)
+0:275 Function Definition: TDFastDeformTangent(vf3;vf4;vf3; ( global highp 3-component vector of float)
+0:275 Function Parameters:
+0:275 'oldNorm' ( in highp 3-component vector of float)
+0:275 'oldTangent' ( in highp 4-component vector of float)
+0:275 'deformedNorm' ( in highp 3-component vector of float)
+0:276 Sequence
+0:276 Branch: Return with expression
+0:276 vector swizzle ( temp highp 3-component vector of float)
+0:276 'oldTangent' ( in highp 4-component vector of float)
+0:276 Sequence
+0:276 Constant:
+0:276 0 (const int)
+0:276 Constant:
+0:276 1 (const int)
+0:276 Constant:
+0:276 2 (const int)
+0:277 Function Definition: TDBoneMat(i1; ( global highp 4X4 matrix of float)
+0:277 Function Parameters:
+0:277 'index' ( in highp int)
+0:278 Sequence
+0:278 Branch: Return with expression
+0:278 Constant:
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:278 1.000000
+0:280 Function Definition: TDDeform(vf4; ( global highp 4-component vector of float)
+0:280 Function Parameters:
+0:280 'pos' ( in highp 4-component vector of float)
+0:281 Sequence
+0:281 move second child to first child ( temp highp 4-component vector of float)
+0:281 'pos' ( in highp 4-component vector of float)
+0:281 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:281 'pos' ( in highp 4-component vector of float)
+0:282 move second child to first child ( temp highp 4-component vector of float)
+0:282 'pos' ( in highp 4-component vector of float)
+0:282 Function Call: TDInstanceDeform(vf4; ( global highp 4-component vector of float)
+0:282 'pos' ( in highp 4-component vector of float)
+0:283 Branch: Return with expression
+0:283 'pos' ( in highp 4-component vector of float)
+0:286 Function Definition: TDDeform(i1;vf3; ( global highp 4-component vector of float)
+0:286 Function Parameters:
+0:286 'instanceID' ( in highp int)
+0:286 'p' ( in highp 3-component vector of float)
+0:287 Sequence
+0:287 Sequence
+0:287 move second child to first child ( temp highp 4-component vector of float)
+0:287 'pos' ( temp highp 4-component vector of float)
+0:287 Construct vec4 ( temp highp 4-component vector of float)
+0:287 'p' ( in highp 3-component vector of float)
+0:287 Constant:
+0:287 1.000000
+0:288 move second child to first child ( temp highp 4-component vector of float)
+0:288 'pos' ( temp highp 4-component vector of float)
+0:288 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float)
+0:288 'pos' ( temp highp 4-component vector of float)
+0:289 move second child to first child ( temp highp 4-component vector of float)
+0:289 'pos' ( temp highp 4-component vector of float)
+0:289 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float)
+0:289 'instanceID' ( in highp int)
+0:289 'pos' ( temp highp 4-component vector of float)
+0:290 Branch: Return with expression
+0:290 'pos' ( temp highp 4-component vector of float)
+0:293 Function Definition: TDDeform(vf3; ( global highp 4-component vector of float)
+0:293 Function Parameters:
+0:293 'pos' ( in highp 3-component vector of float)
+0:294 Sequence
+0:294 Branch: Return with expression
+0:294 Function Call: TDDeform(i1;vf3; ( global highp 4-component vector of float)
+0:294 Function Call: TDInstanceID( ( global highp int)
+0:294 'pos' ( in highp 3-component vector of float)
+0:297 Function Definition: TDDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:297 Function Parameters:
+0:297 'instanceID' ( in highp int)
+0:297 'vec' ( in highp 3-component vector of float)
+0:298 Sequence
+0:298 move second child to first child ( temp highp 3-component vector of float)
+0:298 'vec' ( in highp 3-component vector of float)
+0:298 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:298 'vec' ( in highp 3-component vector of float)
+0:299 move second child to first child ( temp highp 3-component vector of float)
+0:299 'vec' ( in highp 3-component vector of float)
+0:299 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:299 'instanceID' ( in highp int)
+0:299 'vec' ( in highp 3-component vector of float)
+0:300 Branch: Return with expression
+0:300 'vec' ( in highp 3-component vector of float)
+0:303 Function Definition: TDDeformVec(vf3; ( global highp 3-component vector of float)
+0:303 Function Parameters:
+0:303 'vec' ( in highp 3-component vector of float)
+0:304 Sequence
+0:304 Branch: Return with expression
+0:304 Function Call: TDDeformVec(i1;vf3; ( global highp 3-component vector of float)
+0:304 Function Call: TDInstanceID( ( global highp int)
+0:304 'vec' ( in highp 3-component vector of float)
+0:307 Function Definition: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:307 Function Parameters:
+0:307 'instanceID' ( in highp int)
+0:307 'vec' ( in highp 3-component vector of float)
+0:308 Sequence
+0:308 move second child to first child ( temp highp 3-component vector of float)
+0:308 'vec' ( in highp 3-component vector of float)
+0:308 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:308 'vec' ( in highp 3-component vector of float)
+0:309 move second child to first child ( temp highp 3-component vector of float)
+0:309 'vec' ( in highp 3-component vector of float)
+0:309 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:309 'instanceID' ( in highp int)
+0:309 'vec' ( in highp 3-component vector of float)
+0:310 Branch: Return with expression
+0:310 'vec' ( in highp 3-component vector of float)
+0:313 Function Definition: TDDeformNorm(vf3; ( global highp 3-component vector of float)
+0:313 Function Parameters:
+0:313 'vec' ( in highp 3-component vector of float)
+0:314 Sequence
+0:314 Branch: Return with expression
+0:314 Function Call: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float)
+0:314 Function Call: TDInstanceID( ( global highp int)
+0:314 'vec' ( in highp 3-component vector of float)
+0:317 Function Definition: TDSkinnedDeformNorm(vf3; ( global highp 3-component vector of float)
+0:317 Function Parameters:
+0:317 'vec' ( in highp 3-component vector of float)
+0:318 Sequence
+0:318 move second child to first child ( temp highp 3-component vector of float)
+0:318 'vec' ( in highp 3-component vector of float)
+0:318 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float)
+0:318 'vec' ( in highp 3-component vector of float)
+0:319 Branch: Return with expression
+0:319 'vec' ( in highp 3-component vector of float)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'P' (layout( location=0) in highp 3-component vector of float)
+0:? 'N' (layout( location=1) in highp 3-component vector of float)
+0:? 'Cd' (layout( location=2) in highp 4-component vector of float)
+0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float)
+0:? 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance})
+0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance})
+0:? 'gl_VertexIndex' ( in int VertexIndex)
+0:? 'gl_InstanceIndex' ( in int InstanceIndex)
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'mTD2DImageOutputs' (layout( rgba8) uniform 1-element array of highp image2D)
+0:? 'mTD2DArrayImageOutputs' (layout( rgba8) uniform 1-element array of highp image2DArray)
+0:? 'mTD3DImageOutputs' (layout( rgba8) uniform 1-element array of highp image3D)
+0:? 'mTDCubeImageOutputs' (layout( rgba8) uniform 1-element array of highp imageCube)
+0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+Shader version: 460
+gl_FragCoord origin is upper left
+0:? Sequence
+0:95 Function Definition: main( ( global void)
+0:95 Function Parameters:
+0:99 Sequence
+0:99 Function Call: TDCheckDiscard( ( global void)
+0:101 Sequence
+0:101 move second child to first child ( temp highp 4-component vector of float)
+0:101 'outcol' ( temp highp 4-component vector of float)
+0:101 Constant:
+0:101 0.000000
+0:101 0.000000
+0:101 0.000000
+0:101 0.000000
+0:103 Sequence
+0:103 move second child to first child ( temp highp 3-component vector of float)
+0:103 'texCoord0' ( temp highp 3-component vector of float)
+0:103 vector swizzle ( temp highp 3-component vector of float)
+0:103 texCoord0: direct index for structure ( in highp 3-component vector of float)
+0:103 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:103 Constant:
+0:103 2 (const int)
+0:103 Sequence
+0:103 Constant:
+0:103 0 (const int)
+0:103 Constant:
+0:103 1 (const int)
+0:103 Constant:
+0:103 2 (const int)
+0:104 Sequence
+0:104 move second child to first child ( temp highp float)
+0:104 'actualTexZ' ( temp highp float)
+0:104 mod ( global highp float)
+0:104 Convert int to float ( temp highp float)
+0:104 Convert float to int ( temp highp int)
+0:104 direct index ( temp highp float)
+0:104 'texCoord0' ( temp highp 3-component vector of float)
+0:104 Constant:
+0:104 2 (const int)
+0:104 Constant:
+0:104 2048.000000
+0:105 Sequence
+0:105 move second child to first child ( temp highp float)
+0:105 'instanceLoop' ( temp highp float)
+0:105 Floor ( global highp float)
+0:105 Convert int to float ( temp highp float)
+0:105 divide ( temp highp int)
+0:105 Convert float to int ( temp highp int)
+0:105 direct index ( temp highp float)
+0:105 'texCoord0' ( temp highp 3-component vector of float)
+0:105 Constant:
+0:105 2 (const int)
+0:105 Constant:
+0:105 2048 (const int)
+0:106 move second child to first child ( temp highp float)
+0:106 direct index ( temp highp float)
+0:106 'texCoord0' ( temp highp 3-component vector of float)
+0:106 Constant:
+0:106 2 (const int)
+0:106 'actualTexZ' ( temp highp float)
+0:107 Sequence
+0:107 move second child to first child ( temp highp 4-component vector of float)
+0:107 'colorMapColor' ( temp highp 4-component vector of float)
+0:107 texture ( global highp 4-component vector of float)
+0:107 'sColorMap' ( uniform highp sampler2DArray)
+0:107 vector swizzle ( temp highp 3-component vector of float)
+0:107 'texCoord0' ( temp highp 3-component vector of float)
+0:107 Sequence
+0:107 Constant:
+0:107 0 (const int)
+0:107 Constant:
+0:107 1 (const int)
+0:107 Constant:
+0:107 2 (const int)
+0:109 Sequence
+0:109 move second child to first child ( temp highp float)
+0:109 'red' ( temp highp float)
+0:109 indirect index ( temp highp float)
+0:109 'colorMapColor' ( temp highp 4-component vector of float)
+0:109 Convert float to int ( temp highp int)
+0:109 'instanceLoop' ( temp highp float)
+0:110 move second child to first child ( temp highp 4-component vector of float)
+0:110 'colorMapColor' ( temp highp 4-component vector of float)
+0:110 Construct vec4 ( temp highp 4-component vector of float)
+0:110 'red' ( temp highp float)
+0:112 add second child into first child ( temp highp 3-component vector of float)
+0:112 vector swizzle ( temp highp 3-component vector of float)
+0:112 'outcol' ( temp highp 4-component vector of float)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:112 component-wise multiply ( temp highp 3-component vector of float)
+0:112 uConstant: direct index for structure ( uniform highp 3-component vector of float)
+0:112 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:112 Constant:
+0:112 3 (const uint)
+0:112 vector swizzle ( temp highp 3-component vector of float)
+0:112 color: direct index for structure ( in highp 4-component vector of float)
+0:112 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:112 Constant:
+0:112 0 (const int)
+0:112 Sequence
+0:112 Constant:
+0:112 0 (const int)
+0:112 Constant:
+0:112 1 (const int)
+0:112 Constant:
+0:112 2 (const int)
+0:114 multiply second child into first child ( temp highp 4-component vector of float)
+0:114 'outcol' ( temp highp 4-component vector of float)
+0:114 'colorMapColor' ( temp highp 4-component vector of float)
+0:117 Sequence
+0:117 move second child to first child ( temp highp float)
+0:117 'alpha' ( temp highp float)
+0:117 component-wise multiply ( temp highp float)
+0:117 direct index ( temp highp float)
+0:117 color: direct index for structure ( in highp 4-component vector of float)
+0:117 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:117 Constant:
+0:117 0 (const int)
+0:117 Constant:
+0:117 3 (const int)
+0:117 direct index ( temp highp float)
+0:117 'colorMapColor' ( temp highp 4-component vector of float)
+0:117 Constant:
+0:117 3 (const int)
+0:120 move second child to first child ( temp highp 4-component vector of float)
+0:120 'outcol' ( temp highp 4-component vector of float)
+0:120 Function Call: TDDither(vf4; ( global highp 4-component vector of float)
+0:120 'outcol' ( temp highp 4-component vector of float)
+0:122 vector scale second child into first child ( temp highp 3-component vector of float)
+0:122 vector swizzle ( temp highp 3-component vector of float)
+0:122 'outcol' ( temp highp 4-component vector of float)
+0:122 Sequence
+0:122 Constant:
+0:122 0 (const int)
+0:122 Constant:
+0:122 1 (const int)
+0:122 Constant:
+0:122 2 (const int)
+0:122 'alpha' ( temp highp float)
+0:126 Function Call: TDAlphaTest(f1; ( global void)
+0:126 'alpha' ( temp highp float)
+0:128 move second child to first child ( temp highp float)
+0:128 direct index ( temp highp float)
+0:128 'outcol' ( temp highp 4-component vector of float)
+0:128 Constant:
+0:128 3 (const int)
+0:128 'alpha' ( temp highp float)
+0:129 move second child to first child ( temp highp 4-component vector of float)
+0:129 direct index (layout( location=0) temp highp 4-component vector of float)
+0:129 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:129 Constant:
+0:129 0 (const int)
+0:129 Function Call: TDOutputSwizzle(vf4; ( global highp 4-component vector of float)
+0:129 'outcol' ( temp highp 4-component vector of float)
+0:135 Sequence
+0:135 Sequence
+0:135 move second child to first child ( temp highp int)
+0:135 'i' ( temp highp int)
+0:135 Constant:
+0:135 1 (const int)
+0:135 Loop with condition tested first
+0:135 Loop Condition
+0:135 Compare Less Than ( temp bool)
+0:135 'i' ( temp highp int)
+0:135 Constant:
+0:135 1 (const int)
+0:135 Loop Body
+0:137 Sequence
+0:137 move second child to first child ( temp highp 4-component vector of float)
+0:137 indirect index (layout( location=0) temp highp 4-component vector of float)
+0:137 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:137 'i' ( temp highp int)
+0:137 Constant:
+0:137 0.000000
+0:137 0.000000
+0:137 0.000000
+0:137 0.000000
+0:135 Loop Terminal Expression
+0:135 Post-Increment ( temp highp int)
+0:135 'i' ( temp highp int)
+0:116 Function Definition: TDColor(vf4; ( global highp 4-component vector of float)
+0:116 Function Parameters:
+0:116 'color' ( in highp 4-component vector of float)
+0:116 Sequence
+0:116 Branch: Return with expression
+0:116 'color' ( in highp 4-component vector of float)
+0:117 Function Definition: TDCheckOrderIndTrans( ( global void)
+0:117 Function Parameters:
+0:119 Function Definition: TDCheckDiscard( ( global void)
+0:119 Function Parameters:
+0:120 Sequence
+0:120 Function Call: TDCheckOrderIndTrans( ( global void)
+0:122 Function Definition: TDDither(vf4; ( global highp 4-component vector of float)
+0:122 Function Parameters:
+0:122 'color' ( in highp 4-component vector of float)
+0:124 Sequence
+0:124 Sequence
+0:124 move second child to first child ( temp highp float)
+0:124 'd' ( temp highp float)
+0:125 direct index ( temp highp float)
+0:125 texture ( global highp 4-component vector of float)
+0:124 'sTDNoiseMap' ( uniform highp sampler2D)
+0:125 divide ( temp highp 2-component vector of float)
+0:125 vector swizzle ( temp highp 2-component vector of float)
+0:125 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord)
+0:125 Sequence
+0:125 Constant:
+0:125 0 (const int)
+0:125 Constant:
+0:125 1 (const int)
+0:125 Constant:
+0:125 256.000000
+0:125 Constant:
+0:125 0 (const int)
+0:126 subtract second child into first child ( temp highp float)
+0:126 'd' ( temp highp float)
+0:126 Constant:
+0:126 0.500000
+0:127 divide second child into first child ( temp highp float)
+0:127 'd' ( temp highp float)
+0:127 Constant:
+0:127 256.000000
+0:128 Branch: Return with expression
+0:128 Construct vec4 ( temp highp 4-component vector of float)
+0:128 add ( temp highp 3-component vector of float)
+0:128 vector swizzle ( temp highp 3-component vector of float)
+0:128 'color' ( in highp 4-component vector of float)
+0:128 Sequence
+0:128 Constant:
+0:128 0 (const int)
+0:128 Constant:
+0:128 1 (const int)
+0:128 Constant:
+0:128 2 (const int)
+0:128 'd' ( temp highp float)
+0:128 direct index ( temp highp float)
+0:128 'color' ( in highp 4-component vector of float)
+0:128 Constant:
+0:128 3 (const int)
+0:130 Function Definition: TDFrontFacing(vf3;vf3; ( global bool)
+0:130 Function Parameters:
+0:130 'pos' ( in highp 3-component vector of float)
+0:130 'normal' ( in highp 3-component vector of float)
+0:132 Sequence
+0:132 Branch: Return with expression
+0:132 'gl_FrontFacing' ( gl_FrontFacing bool Face)
+0:134 Function Definition: TDAttenuateLight(i1;f1; ( global highp float)
+0:134 Function Parameters:
+0:134 'index' ( in highp int)
+0:134 'lightDist' ( in highp float)
+0:136 Sequence
+0:136 Branch: Return with expression
+0:136 Constant:
+0:136 1.000000
+0:138 Function Definition: TDAlphaTest(f1; ( global void)
+0:138 Function Parameters:
+0:138 'alpha' ( in highp float)
+0:140 Function Definition: TDHardShadow(i1;vf3; ( global highp float)
+0:140 Function Parameters:
+0:140 'lightIndex' ( in highp int)
+0:140 'worldSpacePos' ( in highp 3-component vector of float)
+0:141 Sequence
+0:141 Branch: Return with expression
+0:141 Constant:
+0:141 0.000000
+0:142 Function Definition: TDSoftShadow(i1;vf3;i1;i1; ( global highp float)
+0:142 Function Parameters:
+0:142 'lightIndex' ( in highp int)
+0:142 'worldSpacePos' ( in highp 3-component vector of float)
+0:142 'samples' ( in highp int)
+0:142 'steps' ( in highp int)
+0:143 Sequence
+0:143 Branch: Return with expression
+0:143 Constant:
+0:143 0.000000
+0:144 Function Definition: TDSoftShadow(i1;vf3; ( global highp float)
+0:144 Function Parameters:
+0:144 'lightIndex' ( in highp int)
+0:144 'worldSpacePos' ( in highp 3-component vector of float)
+0:145 Sequence
+0:145 Branch: Return with expression
+0:145 Constant:
+0:145 0.000000
+0:146 Function Definition: TDShadow(i1;vf3; ( global highp float)
+0:146 Function Parameters:
+0:146 'lightIndex' ( in highp int)
+0:146 'worldSpacePos' ( in highp 3-component vector of float)
+0:147 Sequence
+0:147 Branch: Return with expression
+0:147 Constant:
+0:147 0.000000
+0:152 Function Definition: iTDRadicalInverse_VdC(u1; ( global highp float)
+0:152 Function Parameters:
+0:152 'bits' ( in highp uint)
+0:154 Sequence
+0:154 move second child to first child ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 inclusive-or ( temp highp uint)
+0:154 left-shift ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 Constant:
+0:154 16 (const uint)
+0:154 right-shift ( temp highp uint)
+0:154 'bits' ( in highp uint)
+0:154 Constant:
+0:154 16 (const uint)
+0:155 move second child to first child ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 inclusive-or ( temp highp uint)
+0:155 left-shift ( temp highp uint)
+0:155 bitwise and ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 Constant:
+0:155 1431655765 (const uint)
+0:155 Constant:
+0:155 1 (const uint)
+0:155 right-shift ( temp highp uint)
+0:155 bitwise and ( temp highp uint)
+0:155 'bits' ( in highp uint)
+0:155 Constant:
+0:155 2863311530 (const uint)
+0:155 Constant:
+0:155 1 (const uint)
+0:156 move second child to first child ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 inclusive-or ( temp highp uint)
+0:156 left-shift ( temp highp uint)
+0:156 bitwise and ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 Constant:
+0:156 858993459 (const uint)
+0:156 Constant:
+0:156 2 (const uint)
+0:156 right-shift ( temp highp uint)
+0:156 bitwise and ( temp highp uint)
+0:156 'bits' ( in highp uint)
+0:156 Constant:
+0:156 3435973836 (const uint)
+0:156 Constant:
+0:156 2 (const uint)
+0:157 move second child to first child ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 inclusive-or ( temp highp uint)
+0:157 left-shift ( temp highp uint)
+0:157 bitwise and ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 Constant:
+0:157 252645135 (const uint)
+0:157 Constant:
+0:157 4 (const uint)
+0:157 right-shift ( temp highp uint)
+0:157 bitwise and ( temp highp uint)
+0:157 'bits' ( in highp uint)
+0:157 Constant:
+0:157 4042322160 (const uint)
+0:157 Constant:
+0:157 4 (const uint)
+0:158 move second child to first child ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 inclusive-or ( temp highp uint)
+0:158 left-shift ( temp highp uint)
+0:158 bitwise and ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 Constant:
+0:158 16711935 (const uint)
+0:158 Constant:
+0:158 8 (const uint)
+0:158 right-shift ( temp highp uint)
+0:158 bitwise and ( temp highp uint)
+0:158 'bits' ( in highp uint)
+0:158 Constant:
+0:158 4278255360 (const uint)
+0:158 Constant:
+0:158 8 (const uint)
+0:159 Branch: Return with expression
+0:159 component-wise multiply ( temp highp float)
+0:159 Convert uint to float ( temp highp float)
+0:159 'bits' ( in highp uint)
+0:159 Constant:
+0:159 2.3283064365387e-10
+0:161 Function Definition: iTDHammersley(u1;u1; ( global highp 2-component vector of float)
+0:161 Function Parameters:
+0:161 'i' ( in highp uint)
+0:161 'N' ( in highp uint)
+0:163 Sequence
+0:163 Branch: Return with expression
+0:163 Construct vec2 ( temp highp 2-component vector of float)
+0:163 divide ( temp highp float)
+0:163 Convert uint to float ( temp highp float)
+0:163 'i' ( in highp uint)
+0:163 Convert uint to float ( temp highp float)
+0:163 'N' ( in highp uint)
+0:163 Function Call: iTDRadicalInverse_VdC(u1; ( global highp float)
+0:163 'i' ( in highp uint)
+0:165 Function Definition: iTDImportanceSampleGGX(vf2;f1;vf3; ( global highp 3-component vector of float)
+0:165 Function Parameters:
+0:165 'Xi' ( in highp 2-component vector of float)
+0:165 'roughness2' ( in highp float)
+0:165 'N' ( in highp 3-component vector of float)
+0:167 Sequence
+0:167 Sequence
+0:167 move second child to first child ( temp highp float)
+0:167 'a' ( temp highp float)
+0:167 'roughness2' ( in highp float)
+0:168 Sequence
+0:168 move second child to first child ( temp highp float)
+0:168 'phi' ( temp highp float)
+0:168 component-wise multiply ( temp highp float)
+0:168 Constant:
+0:168 6.283185
+0:168 direct index ( temp highp float)
+0:168 'Xi' ( in highp 2-component vector of float)
+0:168 Constant:
+0:168 0 (const int)
+0:169 Sequence
+0:169 move second child to first child ( temp highp float)
+0:169 'cosTheta' ( temp highp float)
+0:169 sqrt ( global highp float)
+0:169 divide ( temp highp float)
+0:169 subtract ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 direct index ( temp highp float)
+0:169 'Xi' ( in highp 2-component vector of float)
+0:169 Constant:
+0:169 1 (const int)
+0:169 add ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 component-wise multiply ( temp highp float)
+0:169 subtract ( temp highp float)
+0:169 component-wise multiply ( temp highp float)
+0:169 'a' ( temp highp float)
+0:169 'a' ( temp highp float)
+0:169 Constant:
+0:169 1.000000
+0:169 direct index ( temp highp float)
+0:169 'Xi' ( in highp 2-component vector of float)
+0:169 Constant:
+0:169 1 (const int)
+0:170 Sequence
+0:170 move second child to first child ( temp highp float)
+0:170 'sinTheta' ( temp highp float)
+0:170 sqrt ( global highp float)
+0:170 subtract ( temp highp float)
+0:170 Constant:
+0:170 1.000000
+0:170 component-wise multiply ( temp highp float)
+0:170 'cosTheta' ( temp highp float)
+0:170 'cosTheta' ( temp highp float)
+0:173 move second child to first child ( temp highp float)
+0:173 direct index ( temp highp float)
+0:173 'H' ( temp highp 3-component vector of float)
+0:173 Constant:
+0:173 0 (const int)
+0:173 component-wise multiply ( temp highp float)
+0:173 'sinTheta' ( temp highp float)
+0:173 cosine ( global highp float)
+0:173 'phi' ( temp highp float)
+0:174 move second child to first child ( temp highp float)
+0:174 direct index ( temp highp float)
+0:174 'H' ( temp highp 3-component vector of float)
+0:174 Constant:
+0:174 1 (const int)
+0:174 component-wise multiply ( temp highp float)
+0:174 'sinTheta' ( temp highp float)
+0:174 sine ( global highp float)
+0:174 'phi' ( temp highp float)
+0:175 move second child to first child ( temp highp float)
+0:175 direct index ( temp highp float)
+0:175 'H' ( temp highp 3-component vector of float)
+0:175 Constant:
+0:175 2 (const int)
+0:175 'cosTheta' ( temp highp float)
+0:177 Sequence
+0:177 move second child to first child ( temp highp 3-component vector of float)
+0:177 'upVector' ( temp highp 3-component vector of float)
+0:177 Test condition and select ( temp highp 3-component vector of float)
+0:177 Condition
+0:177 Compare Less Than ( temp bool)
+0:177 Absolute value ( global highp float)
+0:177 direct index ( temp highp float)
+0:177 'N' ( in highp 3-component vector of float)
+0:177 Constant:
+0:177 2 (const int)
+0:177 Constant:
+0:177 0.999000
+0:177 true case
+0:177 Constant:
+0:177 0.000000
+0:177 0.000000
+0:177 1.000000
+0:177 false case
+0:177 Constant:
+0:177 1.000000
+0:177 0.000000
+0:177 0.000000
+0:178 Sequence
+0:178 move second child to first child ( temp highp 3-component vector of float)
+0:178 'tangentX' ( temp highp 3-component vector of float)
+0:178 normalize ( global highp 3-component vector of float)
+0:178 cross-product ( global highp 3-component vector of float)
+0:178 'upVector' ( temp highp 3-component vector of float)
+0:178 'N' ( in highp 3-component vector of float)
+0:179 Sequence
+0:179 move second child to first child ( temp highp 3-component vector of float)
+0:179 'tangentY' ( temp highp 3-component vector of float)
+0:179 cross-product ( global highp 3-component vector of float)
+0:179 'N' ( in highp 3-component vector of float)
+0:179 'tangentX' ( temp highp 3-component vector of float)
+0:182 Sequence
+0:182 move second child to first child ( temp highp 3-component vector of float)
+0:182 'worldResult' ( temp highp 3-component vector of float)
+0:182 add ( temp highp 3-component vector of float)
+0:182 add ( temp highp 3-component vector of float)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'tangentX' ( temp highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 0 (const int)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'tangentY' ( temp highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 1 (const int)
+0:182 vector-scale ( temp highp 3-component vector of float)
+0:182 'N' ( in highp 3-component vector of float)
+0:182 direct index ( temp highp float)
+0:182 'H' ( temp highp 3-component vector of float)
+0:182 Constant:
+0:182 2 (const int)
+0:183 Branch: Return with expression
+0:183 'worldResult' ( temp highp 3-component vector of float)
+0:185 Function Definition: iTDDistributionGGX(vf3;vf3;f1; ( global highp float)
+0:185 Function Parameters:
+0:185 'normal' ( in highp 3-component vector of float)
+0:185 'half_vector' ( in highp 3-component vector of float)
+0:185 'roughness2' ( in highp float)
+0:? Sequence
+0:189 Sequence
+0:189 move second child to first child ( temp highp float)
+0:189 'NdotH' ( temp highp float)
+0:189 clamp ( global highp float)
+0:189 dot-product ( global highp float)
+0:189 'normal' ( in highp 3-component vector of float)
+0:189 'half_vector' ( in highp 3-component vector of float)
+0:189 Constant:
+0:189 1.0000000000000e-06
+0:189 Constant:
+0:189 1.000000
+0:191 Sequence
+0:191 move second child to first child ( temp highp float)
+0:191 'alpha2' ( temp highp float)
+0:191 component-wise multiply ( temp highp float)
+0:191 'roughness2' ( in highp float)
+0:191 'roughness2' ( in highp float)
+0:193 Sequence
+0:193 move second child to first child ( temp highp float)
+0:193 'denom' ( temp highp float)
+0:193 add ( temp highp float)
+0:193 component-wise multiply ( temp highp float)
+0:193 component-wise multiply ( temp highp float)
+0:193 'NdotH' ( temp highp float)
+0:193 'NdotH' ( temp highp float)
+0:193 subtract ( temp highp float)
+0:193 'alpha2' ( temp highp float)
+0:193 Constant:
+0:193 1.000000
+0:193 Constant:
+0:193 1.000000
+0:194 move second child to first child ( temp highp float)
+0:194 'denom' ( temp highp float)
+0:194 max ( global highp float)
+0:194 Constant:
+0:194 1.0000000000000e-08
+0:194 'denom' ( temp highp float)
+0:195 Branch: Return with expression
+0:195 divide ( temp highp float)
+0:195 'alpha2' ( temp highp float)
+0:195 component-wise multiply ( temp highp float)
+0:195 component-wise multiply ( temp highp float)
+0:195 Constant:
+0:195 3.141593
+0:195 'denom' ( temp highp float)
+0:195 'denom' ( temp highp float)
+0:197 Function Definition: iTDCalcF(vf3;f1; ( global highp 3-component vector of float)
+0:197 Function Parameters:
+0:197 'F0' ( in highp 3-component vector of float)
+0:197 'VdotH' ( in highp float)
+0:198 Sequence
+0:198 Branch: Return with expression
+0:198 add ( temp highp 3-component vector of float)
+0:198 'F0' ( in highp 3-component vector of float)
+0:198 vector-scale ( temp highp 3-component vector of float)
+0:198 subtract ( temp highp 3-component vector of float)
+0:198 Constant:
+0:198 1.000000
+0:198 1.000000
+0:198 1.000000
+0:198 'F0' ( in highp 3-component vector of float)
+0:198 pow ( global highp float)
+0:198 Constant:
+0:198 2.000000
+0:198 component-wise multiply ( temp highp float)
+0:198 subtract ( temp highp float)
+0:198 component-wise multiply ( temp highp float)
+0:198 Constant:
+0:198 -5.554730
+0:198 'VdotH' ( in highp float)
+0:198 Constant:
+0:198 6.983160
+0:198 'VdotH' ( in highp float)
+0:201 Function Definition: iTDCalcG(f1;f1;f1; ( global highp float)
+0:201 Function Parameters:
+0:201 'NdotL' ( in highp float)
+0:201 'NdotV' ( in highp float)
+0:201 'k' ( in highp float)
+0:202 Sequence
+0:202 Sequence
+0:202 move second child to first child ( temp highp float)
+0:202 'Gl' ( temp highp float)
+0:202 divide ( temp highp float)
+0:202 Constant:
+0:202 1.000000
+0:202 add ( temp highp float)
+0:202 component-wise multiply ( temp highp float)
+0:202 'NdotL' ( in highp float)
+0:202 subtract ( temp highp float)
+0:202 Constant:
+0:202 1.000000
+0:202 'k' ( in highp float)
+0:202 'k' ( in highp float)
+0:203 Sequence
+0:203 move second child to first child ( temp highp float)
+0:203 'Gv' ( temp highp float)
+0:203 divide ( temp highp float)
+0:203 Constant:
+0:203 1.000000
+0:203 add ( temp highp float)
+0:203 component-wise multiply ( temp highp float)
+0:203 'NdotV' ( in highp float)
+0:203 subtract ( temp highp float)
+0:203 Constant:
+0:203 1.000000
+0:203 'k' ( in highp float)
+0:203 'k' ( in highp float)
+0:204 Branch: Return with expression
+0:204 component-wise multiply ( temp highp float)
+0:204 'Gl' ( temp highp float)
+0:204 'Gv' ( temp highp float)
+0:207 Function Definition: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:207 Function Parameters:
+0:207 'index' ( in highp int)
+0:207 'diffuseColor' ( in highp 3-component vector of float)
+0:207 'specularColor' ( in highp 3-component vector of float)
+0:207 'worldSpacePos' ( in highp 3-component vector of float)
+0:207 'normal' ( in highp 3-component vector of float)
+0:207 'shadowStrength' ( in highp float)
+0:207 'shadowColor' ( in highp 3-component vector of float)
+0:207 'camVector' ( in highp 3-component vector of float)
+0:207 'roughness' ( in highp float)
+0:? Sequence
+0:210 Branch: Return with expression
+0:210 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:213 Function Definition: TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:213 Function Parameters:
+0:213 'diffuseContrib' ( inout highp 3-component vector of float)
+0:213 'specularContrib' ( inout highp 3-component vector of float)
+0:213 'shadowStrengthOut' ( inout highp float)
+0:213 'index' ( in highp int)
+0:213 'diffuseColor' ( in highp 3-component vector of float)
+0:213 'specularColor' ( in highp 3-component vector of float)
+0:213 'worldSpacePos' ( in highp 3-component vector of float)
+0:213 'normal' ( in highp 3-component vector of float)
+0:213 'shadowStrength' ( in highp float)
+0:213 'shadowColor' ( in highp 3-component vector of float)
+0:213 'camVector' ( in highp 3-component vector of float)
+0:213 'roughness' ( in highp float)
+0:215 Sequence
+0:215 Sequence
+0:215 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 'index' ( in highp int)
+0:215 'diffuseColor' ( in highp 3-component vector of float)
+0:215 'specularColor' ( in highp 3-component vector of float)
+0:215 'worldSpacePos' ( in highp 3-component vector of float)
+0:215 'normal' ( in highp 3-component vector of float)
+0:215 'shadowStrength' ( in highp float)
+0:215 'shadowColor' ( in highp 3-component vector of float)
+0:215 'camVector' ( in highp 3-component vector of float)
+0:215 'roughness' ( in highp float)
+0:215 move second child to first child ( temp highp 3-component vector of float)
+0:215 'diffuseContrib' ( inout highp 3-component vector of float)
+0:215 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:215 Constant:
+0:215 0 (const int)
+0:216 move second child to first child ( temp highp 3-component vector of float)
+0:216 'specularContrib' ( inout highp 3-component vector of float)
+0:216 specular: direct index for structure ( global highp 3-component vector of float)
+0:216 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:216 Constant:
+0:216 1 (const int)
+0:217 move second child to first child ( temp highp float)
+0:217 'shadowStrengthOut' ( inout highp float)
+0:217 shadowStrength: direct index for structure ( global highp float)
+0:217 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:217 Constant:
+0:217 2 (const int)
+0:220 Function Definition: TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:220 Function Parameters:
+0:220 'diffuseContrib' ( inout highp 3-component vector of float)
+0:220 'specularContrib' ( inout highp 3-component vector of float)
+0:220 'index' ( in highp int)
+0:220 'diffuseColor' ( in highp 3-component vector of float)
+0:220 'specularColor' ( in highp 3-component vector of float)
+0:220 'worldSpacePos' ( in highp 3-component vector of float)
+0:220 'normal' ( in highp 3-component vector of float)
+0:220 'shadowStrength' ( in highp float)
+0:220 'shadowColor' ( in highp 3-component vector of float)
+0:220 'camVector' ( in highp 3-component vector of float)
+0:220 'roughness' ( in highp float)
+0:222 Sequence
+0:222 Sequence
+0:222 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 'index' ( in highp int)
+0:222 'diffuseColor' ( in highp 3-component vector of float)
+0:222 'specularColor' ( in highp 3-component vector of float)
+0:222 'worldSpacePos' ( in highp 3-component vector of float)
+0:222 'normal' ( in highp 3-component vector of float)
+0:222 'shadowStrength' ( in highp float)
+0:222 'shadowColor' ( in highp 3-component vector of float)
+0:222 'camVector' ( in highp 3-component vector of float)
+0:222 'roughness' ( in highp float)
+0:222 move second child to first child ( temp highp 3-component vector of float)
+0:222 'diffuseContrib' ( inout highp 3-component vector of float)
+0:222 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:222 Constant:
+0:222 0 (const int)
+0:223 move second child to first child ( temp highp 3-component vector of float)
+0:223 'specularContrib' ( inout highp 3-component vector of float)
+0:223 specular: direct index for structure ( global highp 3-component vector of float)
+0:223 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:223 Constant:
+0:223 1 (const int)
+0:226 Function Definition: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:226 Function Parameters:
+0:226 'index' ( in highp int)
+0:226 'diffuseColor' ( in highp 3-component vector of float)
+0:226 'specularColor' ( in highp 3-component vector of float)
+0:226 'normal' ( in highp 3-component vector of float)
+0:226 'camVector' ( in highp 3-component vector of float)
+0:226 'roughness' ( in highp float)
+0:226 'ambientOcclusion' ( in highp float)
+0:? Sequence
+0:229 Branch: Return with expression
+0:229 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:232 Function Definition: TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1; ( global void)
+0:232 Function Parameters:
+0:232 'diffuseContrib' ( inout highp 3-component vector of float)
+0:232 'specularContrib' ( inout highp 3-component vector of float)
+0:232 'index' ( in highp int)
+0:232 'diffuseColor' ( in highp 3-component vector of float)
+0:232 'specularColor' ( in highp 3-component vector of float)
+0:232 'normal' ( in highp 3-component vector of float)
+0:232 'camVector' ( in highp 3-component vector of float)
+0:232 'roughness' ( in highp float)
+0:232 'ambientOcclusion' ( in highp float)
+0:234 Sequence
+0:234 Sequence
+0:234 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 Function Call: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:234 'index' ( in highp int)
+0:234 'diffuseColor' ( in highp 3-component vector of float)
+0:234 'specularColor' ( in highp 3-component vector of float)
+0:234 'normal' ( in highp 3-component vector of float)
+0:234 'camVector' ( in highp 3-component vector of float)
+0:234 'roughness' ( in highp float)
+0:234 'ambientOcclusion' ( in highp float)
+0:235 move second child to first child ( temp highp 3-component vector of float)
+0:235 'diffuseContrib' ( inout highp 3-component vector of float)
+0:235 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:235 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:235 Constant:
+0:235 0 (const int)
+0:236 move second child to first child ( temp highp 3-component vector of float)
+0:236 'specularContrib' ( inout highp 3-component vector of float)
+0:236 specular: direct index for structure ( global highp 3-component vector of float)
+0:236 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength})
+0:236 Constant:
+0:236 1 (const int)
+0:239 Function Definition: TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:239 Function Parameters:
+0:239 'index' ( in highp int)
+0:239 'worldSpacePos' ( in highp 3-component vector of float)
+0:239 'normal' ( in highp 3-component vector of float)
+0:239 'shadowStrength' ( in highp float)
+0:239 'shadowColor' ( in highp 3-component vector of float)
+0:239 'camVector' ( in highp 3-component vector of float)
+0:239 'shininess' ( in highp float)
+0:239 'shininess2' ( in highp float)
+0:? Sequence
+0:242 switch
+0:242 condition
+0:242 'index' ( in highp int)
+0:242 body
+0:242 Sequence
+0:244 default:
+0:? Sequence
+0:245 move second child to first child ( temp highp 3-component vector of float)
+0:245 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:245 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:245 Constant:
+0:245 0 (const int)
+0:245 Constant:
+0:245 0.000000
+0:245 0.000000
+0:245 0.000000
+0:246 move second child to first child ( temp highp 3-component vector of float)
+0:246 specular: direct index for structure ( global highp 3-component vector of float)
+0:246 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:246 Constant:
+0:246 1 (const int)
+0:246 Constant:
+0:246 0.000000
+0:246 0.000000
+0:246 0.000000
+0:247 move second child to first child ( temp highp 3-component vector of float)
+0:247 specular2: direct index for structure ( global highp 3-component vector of float)
+0:247 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:247 Constant:
+0:247 2 (const int)
+0:247 Constant:
+0:247 0.000000
+0:247 0.000000
+0:247 0.000000
+0:248 move second child to first child ( temp highp float)
+0:248 shadowStrength: direct index for structure ( global highp float)
+0:248 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:248 Constant:
+0:248 3 (const int)
+0:248 Constant:
+0:248 0.000000
+0:249 Branch: Break
+0:251 Branch: Return with expression
+0:251 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:254 Function Definition: TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void)
+0:254 Function Parameters:
+0:254 'diffuseContrib' ( inout highp 3-component vector of float)
+0:254 'specularContrib' ( inout highp 3-component vector of float)
+0:254 'specularContrib2' ( inout highp 3-component vector of float)
+0:254 'shadowStrengthOut' ( inout highp float)
+0:254 'index' ( in highp int)
+0:254 'worldSpacePos' ( in highp 3-component vector of float)
+0:254 'normal' ( in highp 3-component vector of float)
+0:254 'shadowStrength' ( in highp float)
+0:254 'shadowColor' ( in highp 3-component vector of float)
+0:254 'camVector' ( in highp 3-component vector of float)
+0:254 'shininess' ( in highp float)
+0:254 'shininess2' ( in highp float)
+0:? Sequence
+0:257 switch
+0:257 condition
+0:257 'index' ( in highp int)
+0:257 body
+0:257 Sequence
+0:259 default:
+0:? Sequence
+0:260 move second child to first child ( temp highp 3-component vector of float)
+0:260 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:260 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:260 Constant:
+0:260 0 (const int)
+0:260 Constant:
+0:260 0.000000
+0:260 0.000000
+0:260 0.000000
+0:261 move second child to first child ( temp highp 3-component vector of float)
+0:261 specular: direct index for structure ( global highp 3-component vector of float)
+0:261 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:261 Constant:
+0:261 1 (const int)
+0:261 Constant:
+0:261 0.000000
+0:261 0.000000
+0:261 0.000000
+0:262 move second child to first child ( temp highp 3-component vector of float)
+0:262 specular2: direct index for structure ( global highp 3-component vector of float)
+0:262 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:262 Constant:
+0:262 2 (const int)
+0:262 Constant:
+0:262 0.000000
+0:262 0.000000
+0:262 0.000000
+0:263 move second child to first child ( temp highp float)
+0:263 shadowStrength: direct index for structure ( global highp float)
+0:263 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:263 Constant:
+0:263 3 (const int)
+0:263 Constant:
+0:263 0.000000
+0:264 Branch: Break
+0:266 move second child to first child ( temp highp 3-component vector of float)
+0:266 'diffuseContrib' ( inout highp 3-component vector of float)
+0:266 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:266 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:266 Constant:
+0:266 0 (const int)
+0:267 move second child to first child ( temp highp 3-component vector of float)
+0:267 'specularContrib' ( inout highp 3-component vector of float)
+0:267 specular: direct index for structure ( global highp 3-component vector of float)
+0:267 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:267 Constant:
+0:267 1 (const int)
+0:268 move second child to first child ( temp highp 3-component vector of float)
+0:268 'specularContrib2' ( inout highp 3-component vector of float)
+0:268 specular2: direct index for structure ( global highp 3-component vector of float)
+0:268 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:268 Constant:
+0:268 2 (const int)
+0:269 move second child to first child ( temp highp float)
+0:269 'shadowStrengthOut' ( inout highp float)
+0:269 shadowStrength: direct index for structure ( global highp float)
+0:269 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:269 Constant:
+0:269 3 (const int)
+0:272 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void)
+0:272 Function Parameters:
+0:272 'diffuseContrib' ( inout highp 3-component vector of float)
+0:272 'specularContrib' ( inout highp 3-component vector of float)
+0:272 'specularContrib2' ( inout highp 3-component vector of float)
+0:272 'index' ( in highp int)
+0:272 'worldSpacePos' ( in highp 3-component vector of float)
+0:272 'normal' ( in highp 3-component vector of float)
+0:272 'shadowStrength' ( in highp float)
+0:272 'shadowColor' ( in highp 3-component vector of float)
+0:272 'camVector' ( in highp 3-component vector of float)
+0:272 'shininess' ( in highp float)
+0:272 'shininess2' ( in highp float)
+0:? Sequence
+0:275 switch
+0:275 condition
+0:275 'index' ( in highp int)
+0:275 body
+0:275 Sequence
+0:277 default:
+0:? Sequence
+0:278 move second child to first child ( temp highp 3-component vector of float)
+0:278 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:278 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:278 Constant:
+0:278 0 (const int)
+0:278 Constant:
+0:278 0.000000
+0:278 0.000000
+0:278 0.000000
+0:279 move second child to first child ( temp highp 3-component vector of float)
+0:279 specular: direct index for structure ( global highp 3-component vector of float)
+0:279 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:279 Constant:
+0:279 1 (const int)
+0:279 Constant:
+0:279 0.000000
+0:279 0.000000
+0:279 0.000000
+0:280 move second child to first child ( temp highp 3-component vector of float)
+0:280 specular2: direct index for structure ( global highp 3-component vector of float)
+0:280 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:280 Constant:
+0:280 2 (const int)
+0:280 Constant:
+0:280 0.000000
+0:280 0.000000
+0:280 0.000000
+0:281 move second child to first child ( temp highp float)
+0:281 shadowStrength: direct index for structure ( global highp float)
+0:281 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:281 Constant:
+0:281 3 (const int)
+0:281 Constant:
+0:281 0.000000
+0:282 Branch: Break
+0:284 move second child to first child ( temp highp 3-component vector of float)
+0:284 'diffuseContrib' ( inout highp 3-component vector of float)
+0:284 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:284 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:284 Constant:
+0:284 0 (const int)
+0:285 move second child to first child ( temp highp 3-component vector of float)
+0:285 'specularContrib' ( inout highp 3-component vector of float)
+0:285 specular: direct index for structure ( global highp 3-component vector of float)
+0:285 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:285 Constant:
+0:285 1 (const int)
+0:286 move second child to first child ( temp highp 3-component vector of float)
+0:286 'specularContrib2' ( inout highp 3-component vector of float)
+0:286 specular2: direct index for structure ( global highp 3-component vector of float)
+0:286 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:286 Constant:
+0:286 2 (const int)
+0:289 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1; ( global void)
+0:289 Function Parameters:
+0:289 'diffuseContrib' ( inout highp 3-component vector of float)
+0:289 'specularContrib' ( inout highp 3-component vector of float)
+0:289 'index' ( in highp int)
+0:289 'worldSpacePos' ( in highp 3-component vector of float)
+0:289 'normal' ( in highp 3-component vector of float)
+0:289 'shadowStrength' ( in highp float)
+0:289 'shadowColor' ( in highp 3-component vector of float)
+0:289 'camVector' ( in highp 3-component vector of float)
+0:289 'shininess' ( in highp float)
+0:? Sequence
+0:292 switch
+0:292 condition
+0:292 'index' ( in highp int)
+0:292 body
+0:292 Sequence
+0:294 default:
+0:? Sequence
+0:295 move second child to first child ( temp highp 3-component vector of float)
+0:295 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:295 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:295 Constant:
+0:295 0 (const int)
+0:295 Constant:
+0:295 0.000000
+0:295 0.000000
+0:295 0.000000
+0:296 move second child to first child ( temp highp 3-component vector of float)
+0:296 specular: direct index for structure ( global highp 3-component vector of float)
+0:296 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:296 Constant:
+0:296 1 (const int)
+0:296 Constant:
+0:296 0.000000
+0:296 0.000000
+0:296 0.000000
+0:297 move second child to first child ( temp highp 3-component vector of float)
+0:297 specular2: direct index for structure ( global highp 3-component vector of float)
+0:297 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:297 Constant:
+0:297 2 (const int)
+0:297 Constant:
+0:297 0.000000
+0:297 0.000000
+0:297 0.000000
+0:298 move second child to first child ( temp highp float)
+0:298 shadowStrength: direct index for structure ( global highp float)
+0:298 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:298 Constant:
+0:298 3 (const int)
+0:298 Constant:
+0:298 0.000000
+0:299 Branch: Break
+0:301 move second child to first child ( temp highp 3-component vector of float)
+0:301 'diffuseContrib' ( inout highp 3-component vector of float)
+0:301 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:301 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:301 Constant:
+0:301 0 (const int)
+0:302 move second child to first child ( temp highp 3-component vector of float)
+0:302 'specularContrib' ( inout highp 3-component vector of float)
+0:302 specular: direct index for structure ( global highp 3-component vector of float)
+0:302 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:302 Constant:
+0:302 1 (const int)
+0:305 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1; ( global void)
+0:305 Function Parameters:
+0:305 'diffuseContrib' ( inout highp 3-component vector of float)
+0:305 'specularContrib' ( inout highp 3-component vector of float)
+0:305 'specularContrib2' ( inout highp 3-component vector of float)
+0:305 'index' ( in highp int)
+0:305 'worldSpacePos' ( in highp 3-component vector of float)
+0:305 'normal' ( in highp 3-component vector of float)
+0:305 'camVector' ( in highp 3-component vector of float)
+0:305 'shininess' ( in highp float)
+0:305 'shininess2' ( in highp float)
+0:? Sequence
+0:308 switch
+0:308 condition
+0:308 'index' ( in highp int)
+0:308 body
+0:308 Sequence
+0:310 default:
+0:? Sequence
+0:311 move second child to first child ( temp highp 3-component vector of float)
+0:311 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:311 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:311 Constant:
+0:311 0 (const int)
+0:311 Constant:
+0:311 0.000000
+0:311 0.000000
+0:311 0.000000
+0:312 move second child to first child ( temp highp 3-component vector of float)
+0:312 specular: direct index for structure ( global highp 3-component vector of float)
+0:312 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:312 Constant:
+0:312 1 (const int)
+0:312 Constant:
+0:312 0.000000
+0:312 0.000000
+0:312 0.000000
+0:313 move second child to first child ( temp highp 3-component vector of float)
+0:313 specular2: direct index for structure ( global highp 3-component vector of float)
+0:313 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:313 Constant:
+0:313 2 (const int)
+0:313 Constant:
+0:313 0.000000
+0:313 0.000000
+0:313 0.000000
+0:314 move second child to first child ( temp highp float)
+0:314 shadowStrength: direct index for structure ( global highp float)
+0:314 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:314 Constant:
+0:314 3 (const int)
+0:314 Constant:
+0:314 0.000000
+0:315 Branch: Break
+0:317 move second child to first child ( temp highp 3-component vector of float)
+0:317 'diffuseContrib' ( inout highp 3-component vector of float)
+0:317 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:317 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:317 Constant:
+0:317 0 (const int)
+0:318 move second child to first child ( temp highp 3-component vector of float)
+0:318 'specularContrib' ( inout highp 3-component vector of float)
+0:318 specular: direct index for structure ( global highp 3-component vector of float)
+0:318 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:318 Constant:
+0:318 1 (const int)
+0:319 move second child to first child ( temp highp 3-component vector of float)
+0:319 'specularContrib2' ( inout highp 3-component vector of float)
+0:319 specular2: direct index for structure ( global highp 3-component vector of float)
+0:319 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:319 Constant:
+0:319 2 (const int)
+0:322 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1; ( global void)
+0:322 Function Parameters:
+0:322 'diffuseContrib' ( inout highp 3-component vector of float)
+0:322 'specularContrib' ( inout highp 3-component vector of float)
+0:322 'index' ( in highp int)
+0:322 'worldSpacePos' ( in highp 3-component vector of float)
+0:322 'normal' ( in highp 3-component vector of float)
+0:322 'camVector' ( in highp 3-component vector of float)
+0:322 'shininess' ( in highp float)
+0:? Sequence
+0:325 switch
+0:325 condition
+0:325 'index' ( in highp int)
+0:325 body
+0:325 Sequence
+0:327 default:
+0:? Sequence
+0:328 move second child to first child ( temp highp 3-component vector of float)
+0:328 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:328 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:328 Constant:
+0:328 0 (const int)
+0:328 Constant:
+0:328 0.000000
+0:328 0.000000
+0:328 0.000000
+0:329 move second child to first child ( temp highp 3-component vector of float)
+0:329 specular: direct index for structure ( global highp 3-component vector of float)
+0:329 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:329 Constant:
+0:329 1 (const int)
+0:329 Constant:
+0:329 0.000000
+0:329 0.000000
+0:329 0.000000
+0:330 move second child to first child ( temp highp 3-component vector of float)
+0:330 specular2: direct index for structure ( global highp 3-component vector of float)
+0:330 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:330 Constant:
+0:330 2 (const int)
+0:330 Constant:
+0:330 0.000000
+0:330 0.000000
+0:330 0.000000
+0:331 move second child to first child ( temp highp float)
+0:331 shadowStrength: direct index for structure ( global highp float)
+0:331 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:331 Constant:
+0:331 3 (const int)
+0:331 Constant:
+0:331 0.000000
+0:332 Branch: Break
+0:334 move second child to first child ( temp highp 3-component vector of float)
+0:334 'diffuseContrib' ( inout highp 3-component vector of float)
+0:334 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:334 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:334 Constant:
+0:334 0 (const int)
+0:335 move second child to first child ( temp highp 3-component vector of float)
+0:335 'specularContrib' ( inout highp 3-component vector of float)
+0:335 specular: direct index for structure ( global highp 3-component vector of float)
+0:335 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:335 Constant:
+0:335 1 (const int)
+0:338 Function Definition: TDLighting(vf3;i1;vf3;vf3; ( global void)
+0:338 Function Parameters:
+0:338 'diffuseContrib' ( inout highp 3-component vector of float)
+0:338 'index' ( in highp int)
+0:338 'worldSpacePos' ( in highp 3-component vector of float)
+0:338 'normal' ( in highp 3-component vector of float)
+0:? Sequence
+0:341 switch
+0:341 condition
+0:341 'index' ( in highp int)
+0:341 body
+0:341 Sequence
+0:343 default:
+0:? Sequence
+0:344 move second child to first child ( temp highp 3-component vector of float)
+0:344 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:344 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:344 Constant:
+0:344 0 (const int)
+0:344 Constant:
+0:344 0.000000
+0:344 0.000000
+0:344 0.000000
+0:345 move second child to first child ( temp highp 3-component vector of float)
+0:345 specular: direct index for structure ( global highp 3-component vector of float)
+0:345 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:345 Constant:
+0:345 1 (const int)
+0:345 Constant:
+0:345 0.000000
+0:345 0.000000
+0:345 0.000000
+0:346 move second child to first child ( temp highp 3-component vector of float)
+0:346 specular2: direct index for structure ( global highp 3-component vector of float)
+0:346 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:346 Constant:
+0:346 2 (const int)
+0:346 Constant:
+0:346 0.000000
+0:346 0.000000
+0:346 0.000000
+0:347 move second child to first child ( temp highp float)
+0:347 shadowStrength: direct index for structure ( global highp float)
+0:347 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:347 Constant:
+0:347 3 (const int)
+0:347 Constant:
+0:347 0.000000
+0:348 Branch: Break
+0:350 move second child to first child ( temp highp 3-component vector of float)
+0:350 'diffuseContrib' ( inout highp 3-component vector of float)
+0:350 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:350 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:350 Constant:
+0:350 0 (const int)
+0:353 Function Definition: TDLighting(vf3;i1;vf3;vf3;f1;vf3; ( global void)
+0:353 Function Parameters:
+0:353 'diffuseContrib' ( inout highp 3-component vector of float)
+0:353 'index' ( in highp int)
+0:353 'worldSpacePos' ( in highp 3-component vector of float)
+0:353 'normal' ( in highp 3-component vector of float)
+0:353 'shadowStrength' ( in highp float)
+0:353 'shadowColor' ( in highp 3-component vector of float)
+0:? Sequence
+0:356 switch
+0:356 condition
+0:356 'index' ( in highp int)
+0:356 body
+0:356 Sequence
+0:358 default:
+0:? Sequence
+0:359 move second child to first child ( temp highp 3-component vector of float)
+0:359 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:359 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:359 Constant:
+0:359 0 (const int)
+0:359 Constant:
+0:359 0.000000
+0:359 0.000000
+0:359 0.000000
+0:360 move second child to first child ( temp highp 3-component vector of float)
+0:360 specular: direct index for structure ( global highp 3-component vector of float)
+0:360 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:360 Constant:
+0:360 1 (const int)
+0:360 Constant:
+0:360 0.000000
+0:360 0.000000
+0:360 0.000000
+0:361 move second child to first child ( temp highp 3-component vector of float)
+0:361 specular2: direct index for structure ( global highp 3-component vector of float)
+0:361 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:361 Constant:
+0:361 2 (const int)
+0:361 Constant:
+0:361 0.000000
+0:361 0.000000
+0:361 0.000000
+0:362 move second child to first child ( temp highp float)
+0:362 shadowStrength: direct index for structure ( global highp float)
+0:362 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:362 Constant:
+0:362 3 (const int)
+0:362 Constant:
+0:362 0.000000
+0:363 Branch: Break
+0:365 move second child to first child ( temp highp 3-component vector of float)
+0:365 'diffuseContrib' ( inout highp 3-component vector of float)
+0:365 diffuse: direct index for structure ( global highp 3-component vector of float)
+0:365 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength})
+0:365 Constant:
+0:365 0 (const int)
+0:367 Function Definition: TDProjMap(i1;vf3;vf4; ( global highp 4-component vector of float)
+0:367 Function Parameters:
+0:367 'index' ( in highp int)
+0:367 'worldSpacePos' ( in highp 3-component vector of float)
+0:367 'defaultColor' ( in highp 4-component vector of float)
+0:368 Sequence
+0:368 switch
+0:368 condition
+0:368 'index' ( in highp int)
+0:368 body
+0:368 Sequence
+0:370 default:
+0:? Sequence
+0:370 Branch: Return with expression
+0:370 'defaultColor' ( in highp 4-component vector of float)
+0:373 Function Definition: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float)
+0:373 Function Parameters:
+0:373 'color' ( in highp 4-component vector of float)
+0:373 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:373 'cameraIndex' ( in highp int)
+0:374 Sequence
+0:374 switch
+0:374 condition
+0:374 'cameraIndex' ( in highp int)
+0:374 body
+0:374 Sequence
+0:375 default:
+0:376 case: with expression
+0:376 Constant:
+0:376 0 (const int)
+0:? Sequence
+0:378 Sequence
+0:378 Branch: Return with expression
+0:378 'color' ( in highp 4-component vector of float)
+0:382 Function Definition: TDFog(vf4;vf3; ( global highp 4-component vector of float)
+0:382 Function Parameters:
+0:382 'color' ( in highp 4-component vector of float)
+0:382 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:384 Sequence
+0:384 Branch: Return with expression
+0:384 Function Call: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float)
+0:384 'color' ( in highp 4-component vector of float)
+0:384 'lightingSpacePosition' ( in highp 3-component vector of float)
+0:384 Constant:
+0:384 0 (const int)
+0:386 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float)
+0:386 Function Parameters:
+0:386 'index' ( in highp int)
+0:386 't' ( in highp 3-component vector of float)
+0:? Sequence
+0:388 Sequence
+0:388 move second child to first child ( temp highp int)
+0:388 'coord' ( temp highp int)
+0:388 'index' ( in highp int)
+0:389 Sequence
+0:389 move second child to first child ( temp highp 4-component vector of float)
+0:389 'samp' ( temp highp 4-component vector of float)
+0:389 textureFetch ( global highp 4-component vector of float)
+0:389 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:389 'coord' ( temp highp int)
+0:390 move second child to first child ( temp highp float)
+0:390 direct index ( temp highp float)
+0:390 'v' ( temp highp 3-component vector of float)
+0:390 Constant:
+0:390 0 (const int)
+0:390 direct index ( temp highp float)
+0:390 't' ( in highp 3-component vector of float)
+0:390 Constant:
+0:390 0 (const int)
+0:391 move second child to first child ( temp highp float)
+0:391 direct index ( temp highp float)
+0:391 'v' ( temp highp 3-component vector of float)
+0:391 Constant:
+0:391 1 (const int)
+0:391 direct index ( temp highp float)
+0:391 't' ( in highp 3-component vector of float)
+0:391 Constant:
+0:391 1 (const int)
+0:392 move second child to first child ( temp highp float)
+0:392 direct index ( temp highp float)
+0:392 'v' ( temp highp 3-component vector of float)
+0:392 Constant:
+0:392 2 (const int)
+0:392 direct index ( temp highp float)
+0:392 'samp' ( temp highp 4-component vector of float)
+0:392 Constant:
+0:392 0 (const int)
+0:393 move second child to first child ( temp highp 3-component vector of float)
+0:393 vector swizzle ( temp highp 3-component vector of float)
+0:393 't' ( in highp 3-component vector of float)
+0:393 Sequence
+0:393 Constant:
+0:393 0 (const int)
+0:393 Constant:
+0:393 1 (const int)
+0:393 Constant:
+0:393 2 (const int)
+0:393 vector swizzle ( temp highp 3-component vector of float)
+0:393 'v' ( temp highp 3-component vector of float)
+0:393 Sequence
+0:393 Constant:
+0:393 0 (const int)
+0:393 Constant:
+0:393 1 (const int)
+0:393 Constant:
+0:393 2 (const int)
+0:394 Branch: Return with expression
+0:394 't' ( in highp 3-component vector of float)
+0:396 Function Definition: TDInstanceActive(i1; ( global bool)
+0:396 Function Parameters:
+0:396 'index' ( in highp int)
+0:397 Sequence
+0:397 subtract second child into first child ( temp highp int)
+0:397 'index' ( in highp int)
+0:397 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:397 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:397 Constant:
+0:397 0 (const uint)
+0:399 Sequence
+0:399 move second child to first child ( temp highp int)
+0:399 'coord' ( temp highp int)
+0:399 'index' ( in highp int)
+0:400 Sequence
+0:400 move second child to first child ( temp highp 4-component vector of float)
+0:400 'samp' ( temp highp 4-component vector of float)
+0:400 textureFetch ( global highp 4-component vector of float)
+0:400 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:400 'coord' ( temp highp int)
+0:401 move second child to first child ( temp highp float)
+0:401 'v' ( temp highp float)
+0:401 direct index ( temp highp float)
+0:401 'samp' ( temp highp 4-component vector of float)
+0:401 Constant:
+0:401 0 (const int)
+0:402 Branch: Return with expression
+0:402 Compare Not Equal ( temp bool)
+0:402 'v' ( temp highp float)
+0:402 Constant:
+0:402 0.000000
+0:404 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:404 Function Parameters:
+0:404 'index' ( in highp int)
+0:404 'instanceActive' ( out bool)
+0:405 Sequence
+0:405 Sequence
+0:405 move second child to first child ( temp highp int)
+0:405 'origIndex' ( temp highp int)
+0:405 'index' ( in highp int)
+0:406 subtract second child into first child ( temp highp int)
+0:406 'index' ( in highp int)
+0:406 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:406 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:406 Constant:
+0:406 0 (const uint)
+0:408 Sequence
+0:408 move second child to first child ( temp highp int)
+0:408 'coord' ( temp highp int)
+0:408 'index' ( in highp int)
+0:409 Sequence
+0:409 move second child to first child ( temp highp 4-component vector of float)
+0:409 'samp' ( temp highp 4-component vector of float)
+0:409 textureFetch ( global highp 4-component vector of float)
+0:409 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:409 'coord' ( temp highp int)
+0:410 move second child to first child ( temp highp float)
+0:410 direct index ( temp highp float)
+0:410 'v' ( temp highp 3-component vector of float)
+0:410 Constant:
+0:410 0 (const int)
+0:410 direct index ( temp highp float)
+0:410 'samp' ( temp highp 4-component vector of float)
+0:410 Constant:
+0:410 1 (const int)
+0:411 move second child to first child ( temp highp float)
+0:411 direct index ( temp highp float)
+0:411 'v' ( temp highp 3-component vector of float)
+0:411 Constant:
+0:411 1 (const int)
+0:411 direct index ( temp highp float)
+0:411 'samp' ( temp highp 4-component vector of float)
+0:411 Constant:
+0:411 2 (const int)
+0:412 move second child to first child ( temp highp float)
+0:412 direct index ( temp highp float)
+0:412 'v' ( temp highp 3-component vector of float)
+0:412 Constant:
+0:412 2 (const int)
+0:412 direct index ( temp highp float)
+0:412 'samp' ( temp highp 4-component vector of float)
+0:412 Constant:
+0:412 3 (const int)
+0:413 move second child to first child ( temp bool)
+0:413 'instanceActive' ( out bool)
+0:413 Compare Not Equal ( temp bool)
+0:413 direct index ( temp highp float)
+0:413 'samp' ( temp highp 4-component vector of float)
+0:413 Constant:
+0:413 0 (const int)
+0:413 Constant:
+0:413 0.000000
+0:414 Branch: Return with expression
+0:414 'v' ( temp highp 3-component vector of float)
+0:416 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float)
+0:416 Function Parameters:
+0:416 'index' ( in highp int)
+0:417 Sequence
+0:417 subtract second child into first child ( temp highp int)
+0:417 'index' ( in highp int)
+0:417 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:417 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:417 Constant:
+0:417 0 (const uint)
+0:419 Sequence
+0:419 move second child to first child ( temp highp int)
+0:419 'coord' ( temp highp int)
+0:419 'index' ( in highp int)
+0:420 Sequence
+0:420 move second child to first child ( temp highp 4-component vector of float)
+0:420 'samp' ( temp highp 4-component vector of float)
+0:420 textureFetch ( global highp 4-component vector of float)
+0:420 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:420 'coord' ( temp highp int)
+0:421 move second child to first child ( temp highp float)
+0:421 direct index ( temp highp float)
+0:421 'v' ( temp highp 3-component vector of float)
+0:421 Constant:
+0:421 0 (const int)
+0:421 direct index ( temp highp float)
+0:421 'samp' ( temp highp 4-component vector of float)
+0:421 Constant:
+0:421 1 (const int)
+0:422 move second child to first child ( temp highp float)
+0:422 direct index ( temp highp float)
+0:422 'v' ( temp highp 3-component vector of float)
+0:422 Constant:
+0:422 1 (const int)
+0:422 direct index ( temp highp float)
+0:422 'samp' ( temp highp 4-component vector of float)
+0:422 Constant:
+0:422 2 (const int)
+0:423 move second child to first child ( temp highp float)
+0:423 direct index ( temp highp float)
+0:423 'v' ( temp highp 3-component vector of float)
+0:423 Constant:
+0:423 2 (const int)
+0:423 direct index ( temp highp float)
+0:423 'samp' ( temp highp 4-component vector of float)
+0:423 Constant:
+0:423 3 (const int)
+0:424 Branch: Return with expression
+0:424 'v' ( temp highp 3-component vector of float)
+0:426 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float)
+0:426 Function Parameters:
+0:426 'index' ( in highp int)
+0:427 Sequence
+0:427 subtract second child into first child ( temp highp int)
+0:427 'index' ( in highp int)
+0:427 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:427 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:427 Constant:
+0:427 0 (const uint)
+0:428 Sequence
+0:428 move second child to first child ( temp highp 3-component vector of float)
+0:428 'v' ( temp highp 3-component vector of float)
+0:428 Constant:
+0:428 0.000000
+0:428 0.000000
+0:428 0.000000
+0:429 Sequence
+0:429 move second child to first child ( temp highp 3X3 matrix of float)
+0:429 'm' ( temp highp 3X3 matrix of float)
+0:429 Constant:
+0:429 1.000000
+0:429 0.000000
+0:429 0.000000
+0:429 0.000000
+0:429 1.000000
+0:429 0.000000
+0:429 0.000000
+0:429 0.000000
+0:429 1.000000
+0:433 Branch: Return with expression
+0:433 'm' ( temp highp 3X3 matrix of float)
+0:435 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float)
+0:435 Function Parameters:
+0:435 'index' ( in highp int)
+0:436 Sequence
+0:436 subtract second child into first child ( temp highp int)
+0:436 'index' ( in highp int)
+0:436 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:436 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:436 Constant:
+0:436 0 (const uint)
+0:437 Sequence
+0:437 move second child to first child ( temp highp 3-component vector of float)
+0:437 'v' ( temp highp 3-component vector of float)
+0:437 Constant:
+0:437 1.000000
+0:437 1.000000
+0:437 1.000000
+0:438 Branch: Return with expression
+0:438 'v' ( temp highp 3-component vector of float)
+0:440 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float)
+0:440 Function Parameters:
+0:440 'index' ( in highp int)
+0:441 Sequence
+0:441 subtract second child into first child ( temp highp int)
+0:441 'index' ( in highp int)
+0:441 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:441 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:441 Constant:
+0:441 0 (const uint)
+0:442 Sequence
+0:442 move second child to first child ( temp highp 3-component vector of float)
+0:442 'v' ( temp highp 3-component vector of float)
+0:442 Constant:
+0:442 0.000000
+0:442 0.000000
+0:442 0.000000
+0:443 Branch: Return with expression
+0:443 'v' ( temp highp 3-component vector of float)
+0:445 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float)
+0:445 Function Parameters:
+0:445 'index' ( in highp int)
+0:446 Sequence
+0:446 subtract second child into first child ( temp highp int)
+0:446 'index' ( in highp int)
+0:446 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:446 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:446 Constant:
+0:446 0 (const uint)
+0:447 Sequence
+0:447 move second child to first child ( temp highp 3-component vector of float)
+0:447 'v' ( temp highp 3-component vector of float)
+0:447 Constant:
+0:447 0.000000
+0:447 0.000000
+0:447 1.000000
+0:448 Branch: Return with expression
+0:448 'v' ( temp highp 3-component vector of float)
+0:450 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float)
+0:450 Function Parameters:
+0:450 'index' ( in highp int)
+0:451 Sequence
+0:451 subtract second child into first child ( temp highp int)
+0:451 'index' ( in highp int)
+0:451 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:451 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:451 Constant:
+0:451 0 (const uint)
+0:452 Sequence
+0:452 move second child to first child ( temp highp 3-component vector of float)
+0:452 'v' ( temp highp 3-component vector of float)
+0:452 Constant:
+0:452 0.000000
+0:452 1.000000
+0:452 0.000000
+0:453 Branch: Return with expression
+0:453 'v' ( temp highp 3-component vector of float)
+0:455 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float)
+0:455 Function Parameters:
+0:455 'id' ( in highp int)
+0:456 Sequence
+0:456 Sequence
+0:456 move second child to first child ( temp bool)
+0:456 'instanceActive' ( temp bool)
+0:456 Constant:
+0:456 true (const bool)
+0:457 Sequence
+0:457 move second child to first child ( temp highp 3-component vector of float)
+0:457 't' ( temp highp 3-component vector of float)
+0:457 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float)
+0:457 'id' ( in highp int)
+0:457 'instanceActive' ( temp bool)
+0:458 Test condition and select ( temp void)
+0:458 Condition
+0:458 Negate conditional ( temp bool)
+0:458 'instanceActive' ( temp bool)
+0:458 true case
+0:460 Sequence
+0:460 Branch: Return with expression
+0:460 Constant:
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:460 0.000000
+0:462 Sequence
+0:462 move second child to first child ( temp highp 4X4 matrix of float)
+0:462 'm' ( temp highp 4X4 matrix of float)
+0:462 Constant:
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 0.000000
+0:462 1.000000
+0:464 Sequence
+0:464 Sequence
+0:464 move second child to first child ( temp highp 3-component vector of float)
+0:464 'tt' ( temp highp 3-component vector of float)
+0:464 't' ( temp highp 3-component vector of float)
+0:465 add second child into first child ( temp highp float)
+0:465 direct index ( temp highp float)
+0:465 direct index ( temp highp 4-component vector of float)
+0:465 'm' ( temp highp 4X4 matrix of float)
+0:465 Constant:
+0:465 3 (const int)
+0:465 Constant:
+0:465 0 (const int)
+0:465 component-wise multiply ( temp highp float)
+0:465 direct index ( temp highp float)
+0:465 direct index ( temp highp 4-component vector of float)
+0:465 'm' ( temp highp 4X4 matrix of float)
+0:465 Constant:
+0:465 0 (const int)
+0:465 Constant:
+0:465 0 (const int)
+0:465 direct index ( temp highp float)
+0:465 'tt' ( temp highp 3-component vector of float)
+0:465 Constant:
+0:465 0 (const int)
+0:466 add second child into first child ( temp highp float)
+0:466 direct index ( temp highp float)
+0:466 direct index ( temp highp 4-component vector of float)
+0:466 'm' ( temp highp 4X4 matrix of float)
+0:466 Constant:
+0:466 3 (const int)
+0:466 Constant:
+0:466 1 (const int)
+0:466 component-wise multiply ( temp highp float)
+0:466 direct index ( temp highp float)
+0:466 direct index ( temp highp 4-component vector of float)
+0:466 'm' ( temp highp 4X4 matrix of float)
+0:466 Constant:
+0:466 0 (const int)
+0:466 Constant:
+0:466 1 (const int)
+0:466 direct index ( temp highp float)
+0:466 'tt' ( temp highp 3-component vector of float)
+0:466 Constant:
+0:466 0 (const int)
+0:467 add second child into first child ( temp highp float)
+0:467 direct index ( temp highp float)
+0:467 direct index ( temp highp 4-component vector of float)
+0:467 'm' ( temp highp 4X4 matrix of float)
+0:467 Constant:
+0:467 3 (const int)
+0:467 Constant:
+0:467 2 (const int)
+0:467 component-wise multiply ( temp highp float)
+0:467 direct index ( temp highp float)
+0:467 direct index ( temp highp 4-component vector of float)
+0:467 'm' ( temp highp 4X4 matrix of float)
+0:467 Constant:
+0:467 0 (const int)
+0:467 Constant:
+0:467 2 (const int)
+0:467 direct index ( temp highp float)
+0:467 'tt' ( temp highp 3-component vector of float)
+0:467 Constant:
+0:467 0 (const int)
+0:468 add second child into first child ( temp highp float)
+0:468 direct index ( temp highp float)
+0:468 direct index ( temp highp 4-component vector of float)
+0:468 'm' ( temp highp 4X4 matrix of float)
+0:468 Constant:
+0:468 3 (const int)
+0:468 Constant:
+0:468 3 (const int)
+0:468 component-wise multiply ( temp highp float)
+0:468 direct index ( temp highp float)
+0:468 direct index ( temp highp 4-component vector of float)
+0:468 'm' ( temp highp 4X4 matrix of float)
+0:468 Constant:
+0:468 0 (const int)
+0:468 Constant:
+0:468 3 (const int)
+0:468 direct index ( temp highp float)
+0:468 'tt' ( temp highp 3-component vector of float)
+0:468 Constant:
+0:468 0 (const int)
+0:469 add second child into first child ( temp highp float)
+0:469 direct index ( temp highp float)
+0:469 direct index ( temp highp 4-component vector of float)
+0:469 'm' ( temp highp 4X4 matrix of float)
+0:469 Constant:
+0:469 3 (const int)
+0:469 Constant:
+0:469 0 (const int)
+0:469 component-wise multiply ( temp highp float)
+0:469 direct index ( temp highp float)
+0:469 direct index ( temp highp 4-component vector of float)
+0:469 'm' ( temp highp 4X4 matrix of float)
+0:469 Constant:
+0:469 1 (const int)
+0:469 Constant:
+0:469 0 (const int)
+0:469 direct index ( temp highp float)
+0:469 'tt' ( temp highp 3-component vector of float)
+0:469 Constant:
+0:469 1 (const int)
+0:470 add second child into first child ( temp highp float)
+0:470 direct index ( temp highp float)
+0:470 direct index ( temp highp 4-component vector of float)
+0:470 'm' ( temp highp 4X4 matrix of float)
+0:470 Constant:
+0:470 3 (const int)
+0:470 Constant:
+0:470 1 (const int)
+0:470 component-wise multiply ( temp highp float)
+0:470 direct index ( temp highp float)
+0:470 direct index ( temp highp 4-component vector of float)
+0:470 'm' ( temp highp 4X4 matrix of float)
+0:470 Constant:
+0:470 1 (const int)
+0:470 Constant:
+0:470 1 (const int)
+0:470 direct index ( temp highp float)
+0:470 'tt' ( temp highp 3-component vector of float)
+0:470 Constant:
+0:470 1 (const int)
+0:471 add second child into first child ( temp highp float)
+0:471 direct index ( temp highp float)
+0:471 direct index ( temp highp 4-component vector of float)
+0:471 'm' ( temp highp 4X4 matrix of float)
+0:471 Constant:
+0:471 3 (const int)
+0:471 Constant:
+0:471 2 (const int)
+0:471 component-wise multiply ( temp highp float)
+0:471 direct index ( temp highp float)
+0:471 direct index ( temp highp 4-component vector of float)
+0:471 'm' ( temp highp 4X4 matrix of float)
+0:471 Constant:
+0:471 1 (const int)
+0:471 Constant:
+0:471 2 (const int)
+0:471 direct index ( temp highp float)
+0:471 'tt' ( temp highp 3-component vector of float)
+0:471 Constant:
+0:471 1 (const int)
+0:472 add second child into first child ( temp highp float)
+0:472 direct index ( temp highp float)
+0:472 direct index ( temp highp 4-component vector of float)
+0:472 'm' ( temp highp 4X4 matrix of float)
+0:472 Constant:
+0:472 3 (const int)
+0:472 Constant:
+0:472 3 (const int)
+0:472 component-wise multiply ( temp highp float)
+0:472 direct index ( temp highp float)
+0:472 direct index ( temp highp 4-component vector of float)
+0:472 'm' ( temp highp 4X4 matrix of float)
+0:472 Constant:
+0:472 1 (const int)
+0:472 Constant:
+0:472 3 (const int)
+0:472 direct index ( temp highp float)
+0:472 'tt' ( temp highp 3-component vector of float)
+0:472 Constant:
+0:472 1 (const int)
+0:473 add second child into first child ( temp highp float)
+0:473 direct index ( temp highp float)
+0:473 direct index ( temp highp 4-component vector of float)
+0:473 'm' ( temp highp 4X4 matrix of float)
+0:473 Constant:
+0:473 3 (const int)
+0:473 Constant:
+0:473 0 (const int)
+0:473 component-wise multiply ( temp highp float)
+0:473 direct index ( temp highp float)
+0:473 direct index ( temp highp 4-component vector of float)
+0:473 'm' ( temp highp 4X4 matrix of float)
+0:473 Constant:
+0:473 2 (const int)
+0:473 Constant:
+0:473 0 (const int)
+0:473 direct index ( temp highp float)
+0:473 'tt' ( temp highp 3-component vector of float)
+0:473 Constant:
+0:473 2 (const int)
+0:474 add second child into first child ( temp highp float)
+0:474 direct index ( temp highp float)
+0:474 direct index ( temp highp 4-component vector of float)
+0:474 'm' ( temp highp 4X4 matrix of float)
+0:474 Constant:
+0:474 3 (const int)
+0:474 Constant:
+0:474 1 (const int)
+0:474 component-wise multiply ( temp highp float)
+0:474 direct index ( temp highp float)
+0:474 direct index ( temp highp 4-component vector of float)
+0:474 'm' ( temp highp 4X4 matrix of float)
+0:474 Constant:
+0:474 2 (const int)
+0:474 Constant:
+0:474 1 (const int)
+0:474 direct index ( temp highp float)
+0:474 'tt' ( temp highp 3-component vector of float)
+0:474 Constant:
+0:474 2 (const int)
+0:475 add second child into first child ( temp highp float)
+0:475 direct index ( temp highp float)
+0:475 direct index ( temp highp 4-component vector of float)
+0:475 'm' ( temp highp 4X4 matrix of float)
+0:475 Constant:
+0:475 3 (const int)
+0:475 Constant:
+0:475 2 (const int)
+0:475 component-wise multiply ( temp highp float)
+0:475 direct index ( temp highp float)
+0:475 direct index ( temp highp 4-component vector of float)
+0:475 'm' ( temp highp 4X4 matrix of float)
+0:475 Constant:
+0:475 2 (const int)
+0:475 Constant:
+0:475 2 (const int)
+0:475 direct index ( temp highp float)
+0:475 'tt' ( temp highp 3-component vector of float)
+0:475 Constant:
+0:475 2 (const int)
+0:476 add second child into first child ( temp highp float)
+0:476 direct index ( temp highp float)
+0:476 direct index ( temp highp 4-component vector of float)
+0:476 'm' ( temp highp 4X4 matrix of float)
+0:476 Constant:
+0:476 3 (const int)
+0:476 Constant:
+0:476 3 (const int)
+0:476 component-wise multiply ( temp highp float)
+0:476 direct index ( temp highp float)
+0:476 direct index ( temp highp 4-component vector of float)
+0:476 'm' ( temp highp 4X4 matrix of float)
+0:476 Constant:
+0:476 2 (const int)
+0:476 Constant:
+0:476 3 (const int)
+0:476 direct index ( temp highp float)
+0:476 'tt' ( temp highp 3-component vector of float)
+0:476 Constant:
+0:476 2 (const int)
+0:478 Branch: Return with expression
+0:478 'm' ( temp highp 4X4 matrix of float)
+0:480 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:480 Function Parameters:
+0:480 'id' ( in highp int)
+0:481 Sequence
+0:481 Sequence
+0:481 move second child to first child ( temp highp 3X3 matrix of float)
+0:481 'm' ( temp highp 3X3 matrix of float)
+0:481 Constant:
+0:481 1.000000
+0:481 0.000000
+0:481 0.000000
+0:481 0.000000
+0:481 1.000000
+0:481 0.000000
+0:481 0.000000
+0:481 0.000000
+0:481 1.000000
+0:482 Branch: Return with expression
+0:482 'm' ( temp highp 3X3 matrix of float)
+0:484 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float)
+0:484 Function Parameters:
+0:484 'id' ( in highp int)
+0:485 Sequence
+0:485 Sequence
+0:485 move second child to first child ( temp highp 3X3 matrix of float)
+0:485 'm' ( temp highp 3X3 matrix of float)
+0:485 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float)
+0:485 'id' ( in highp int)
+0:486 Branch: Return with expression
+0:486 'm' ( temp highp 3X3 matrix of float)
+0:488 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float)
+0:488 Function Parameters:
+0:488 'index' ( in highp int)
+0:488 'curColor' ( in highp 4-component vector of float)
+0:489 Sequence
+0:489 subtract second child into first child ( temp highp int)
+0:489 'index' ( in highp int)
+0:489 uTDInstanceIDOffset: direct index for structure ( uniform highp int)
+0:489 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:489 Constant:
+0:489 0 (const uint)
+0:491 Sequence
+0:491 move second child to first child ( temp highp int)
+0:491 'coord' ( temp highp int)
+0:491 'index' ( in highp int)
+0:492 Sequence
+0:492 move second child to first child ( temp highp 4-component vector of float)
+0:492 'samp' ( temp highp 4-component vector of float)
+0:492 textureFetch ( global highp 4-component vector of float)
+0:492 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+0:492 'coord' ( temp highp int)
+0:493 move second child to first child ( temp highp float)
+0:493 direct index ( temp highp float)
+0:493 'v' ( temp highp 4-component vector of float)
+0:493 Constant:
+0:493 0 (const int)
+0:493 direct index ( temp highp float)
+0:493 'samp' ( temp highp 4-component vector of float)
+0:493 Constant:
+0:493 0 (const int)
+0:494 move second child to first child ( temp highp float)
+0:494 direct index ( temp highp float)
+0:494 'v' ( temp highp 4-component vector of float)
+0:494 Constant:
+0:494 1 (const int)
+0:494 direct index ( temp highp float)
+0:494 'samp' ( temp highp 4-component vector of float)
+0:494 Constant:
+0:494 1 (const int)
+0:495 move second child to first child ( temp highp float)
+0:495 direct index ( temp highp float)
+0:495 'v' ( temp highp 4-component vector of float)
+0:495 Constant:
+0:495 2 (const int)
+0:495 direct index ( temp highp float)
+0:495 'samp' ( temp highp 4-component vector of float)
+0:495 Constant:
+0:495 2 (const int)
+0:496 move second child to first child ( temp highp float)
+0:496 direct index ( temp highp float)
+0:496 'v' ( temp highp 4-component vector of float)
+0:496 Constant:
+0:496 3 (const int)
+0:496 Constant:
+0:496 1.000000
+0:497 move second child to first child ( temp highp float)
+0:497 direct index ( temp highp float)
+0:497 'curColor' ( in highp 4-component vector of float)
+0:497 Constant:
+0:497 0 (const int)
+0:497 direct index ( temp highp float)
+0:497 'v' ( temp highp 4-component vector of float)
+0:497 Constant:
+0:497 0 (const int)
+0:499 move second child to first child ( temp highp float)
+0:499 direct index ( temp highp float)
+0:499 'curColor' ( in highp 4-component vector of float)
+0:499 Constant:
+0:499 1 (const int)
+0:499 direct index ( temp highp float)
+0:499 'v' ( temp highp 4-component vector of float)
+0:499 Constant:
+0:499 1 (const int)
+0:501 move second child to first child ( temp highp float)
+0:501 direct index ( temp highp float)
+0:501 'curColor' ( in highp 4-component vector of float)
+0:501 Constant:
+0:501 2 (const int)
+0:501 direct index ( temp highp float)
+0:501 'v' ( temp highp 4-component vector of float)
+0:501 Constant:
+0:501 2 (const int)
+0:503 Branch: Return with expression
+0:503 'curColor' ( in highp 4-component vector of float)
+0:2 Function Definition: TDOutputSwizzle(vf4; ( global highp 4-component vector of float)
+0:2 Function Parameters:
+0:2 'c' ( in highp 4-component vector of float)
+0:4 Sequence
+0:4 Branch: Return with expression
+0:4 vector swizzle ( temp highp 4-component vector of float)
+0:4 'c' ( in highp 4-component vector of float)
+0:4 Sequence
+0:4 Constant:
+0:4 0 (const int)
+0:4 Constant:
+0:4 1 (const int)
+0:4 Constant:
+0:4 2 (const int)
+0:4 Constant:
+0:4 3 (const int)
+0:6 Function Definition: TDOutputSwizzle(vu4; ( global highp 4-component vector of uint)
+0:6 Function Parameters:
+0:6 'c' ( in highp 4-component vector of uint)
+0:8 Sequence
+0:8 Branch: Return with expression
+0:8 vector swizzle ( temp highp 4-component vector of uint)
+0:8 'c' ( in highp 4-component vector of uint)
+0:8 Sequence
+0:8 Constant:
+0:8 0 (const int)
+0:8 Constant:
+0:8 1 (const int)
+0:8 Constant:
+0:8 2 (const int)
+0:8 Constant:
+0:8 3 (const int)
+0:? Linker Objects
+0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor})
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos})
+0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral})
+0:? 'sColorMap' ( uniform highp sampler2DArray)
+0:? 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance})
+0:? 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float)
+0:? 'sTDNoiseMap' ( uniform highp sampler2D)
+0:? 'sTDSineLookup' ( uniform highp sampler1D)
+0:? 'sTDWhite2D' ( uniform highp sampler2D)
+0:? 'sTDWhite3D' ( uniform highp sampler3D)
+0:? 'sTDWhite2DArray' ( uniform highp sampler2DArray)
+0:? 'sTDWhiteCube' ( uniform highp samplerCube)
+0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights})
+0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights})
+0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs})
+0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer)
+0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer)
+0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer)
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 939
+
+ Capability Shader
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Vertex 4 "main" 207 216 226 238 256 297 905 906
+ Source GLSL 460
+ Name 4 "main"
+ Name 20 "iTDCamToProj(vf4;vf3;i1;b1;"
+ Name 16 "v"
+ Name 17 "uv"
+ Name 18 "cameraIndex"
+ Name 19 "applyPickMod"
+ Name 26 "iTDWorldToProj(vf4;vf3;i1;b1;"
+ Name 22 "v"
+ Name 23 "uv"
+ Name 24 "cameraIndex"
+ Name 25 "applyPickMod"
+ Name 29 "TDInstanceID("
+ Name 31 "TDCameraIndex("
+ Name 34 "TDUVUnwrapCoord("
+ Name 36 "TDPickID("
+ Name 40 "iTDConvertPickId(i1;"
+ Name 39 "id"
+ Name 42 "TDWritePickingValues("
+ Name 47 "TDWorldToProj(vf4;vf3;"
+ Name 45 "v"
+ Name 46 "uv"
+ Name 52 "TDWorldToProj(vf3;vf3;"
+ Name 50 "v"
+ Name 51 "uv"
+ Name 56 "TDWorldToProj(vf4;"
+ Name 55 "v"
+ Name 60 "TDWorldToProj(vf3;"
+ Name 59 "v"
+ Name 63 "TDPointColor("
+ Name 68 "TDInstanceTexCoord(i1;vf3;"
+ Name 66 "index"
+ Name 67 "t"
+ Name 72 "TDInstanceActive(i1;"
+ Name 71 "index"
+ Name 77 "iTDInstanceTranslate(i1;b1;"
+ Name 75 "index"
+ Name 76 "instanceActive"
+ Name 81 "TDInstanceTranslate(i1;"
+ Name 80 "index"
+ Name 86 "TDInstanceRotateMat(i1;"
+ Name 85 "index"
+ Name 89 "TDInstanceScale(i1;"
+ Name 88 "index"
+ Name 92 "TDInstancePivot(i1;"
+ Name 91 "index"
+ Name 95 "TDInstanceRotTo(i1;"
+ Name 94 "index"
+ Name 98 "TDInstanceRotUp(i1;"
+ Name 97 "index"
+ Name 103 "TDInstanceMat(i1;"
+ Name 102 "id"
+ Name 106 "TDInstanceMat3(i1;"
+ Name 105 "id"
+ Name 109 "TDInstanceMat3ForNorm(i1;"
+ Name 108 "id"
+ Name 114 "TDInstanceColor(i1;vf4;"
+ Name 112 "index"
+ Name 113 "curColor"
+ Name 118 "TDInstanceDeform(i1;vf4;"
+ Name 116 "id"
+ Name 117 "pos"
+ Name 122 "TDInstanceDeformVec(i1;vf3;"
+ Name 120 "id"
+ Name 121 "vec"
+ Name 126 "TDInstanceDeformNorm(i1;vf3;"
+ Name 124 "id"
+ Name 125 "vec"
+ Name 129 "TDInstanceDeform(vf4;"
+ Name 128 "pos"
+ Name 133 "TDInstanceDeformVec(vf3;"
+ Name 132 "vec"
+ Name 136 "TDInstanceDeformNorm(vf3;"
+ Name 135 "vec"
+ Name 139 "TDInstanceActive("
+ Name 141 "TDInstanceTranslate("
+ Name 144 "TDInstanceRotateMat("
+ Name 146 "TDInstanceScale("
+ Name 149 "TDInstanceMat("
+ Name 151 "TDInstanceMat3("
+ Name 154 "TDInstanceTexCoord(vf3;"
+ Name 153 "t"
+ Name 157 "TDInstanceColor(vf4;"
+ Name 156 "curColor"
+ Name 160 "TDSkinnedDeform(vf4;"
+ Name 159 "pos"
+ Name 163 "TDSkinnedDeformVec(vf3;"
+ Name 162 "vec"
+ Name 169 "TDFastDeformTangent(vf3;vf4;vf3;"
+ Name 166 "oldNorm"
+ Name 167 "oldTangent"
+ Name 168 "deformedNorm"
+ Name 172 "TDBoneMat(i1;"
+ Name 171 "index"
+ Name 175 "TDDeform(vf4;"
+ Name 174 "pos"
+ Name 180 "TDDeform(i1;vf3;"
+ Name 178 "instanceID"
+ Name 179 "p"
+ Name 183 "TDDeform(vf3;"
+ Name 182 "pos"
+ Name 187 "TDDeformVec(i1;vf3;"
+ Name 185 "instanceID"
+ Name 186 "vec"
+ Name 190 "TDDeformVec(vf3;"
+ Name 189 "vec"
+ Name 194 "TDDeformNorm(i1;vf3;"
+ Name 192 "instanceID"
+ Name 193 "vec"
+ Name 197 "TDDeformNorm(vf3;"
+ Name 196 "vec"
+ Name 200 "TDSkinnedDeformNorm(vf3;"
+ Name 199 "vec"
+ Name 202 "texcoord"
+ Name 207 "uv"
+ Name 209 "param"
+ Name 214 "Vertex"
+ MemberName 214(Vertex) 0 "color"
+ MemberName 214(Vertex) 1 "worldSpacePos"
+ MemberName 214(Vertex) 2 "texCoord0"
+ MemberName 214(Vertex) 3 "cameraIndex"
+ MemberName 214(Vertex) 4 "instance"
+ Name 216 "oVert"
+ Name 225 "worldSpacePos"
+ Name 226 "P"
+ Name 227 "param"
+ Name 230 "uvUnwrapCoord"
+ Name 232 "param"
+ Name 236 "gl_PerVertex"
+ MemberName 236(gl_PerVertex) 0 "gl_Position"
+ MemberName 236(gl_PerVertex) 1 "gl_PointSize"
+ MemberName 236(gl_PerVertex) 2 "gl_ClipDistance"
+ MemberName 236(gl_PerVertex) 3 "gl_CullDistance"
+ Name 238 ""
+ Name 239 "param"
+ Name 241 "param"
+ Name 246 "cameraIndex"
+ Name 256 "Cd"
+ Name 257 "param"
+ Name 269 "TDMatrix"
+ MemberName 269(TDMatrix) 0 "world"
+ MemberName 269(TDMatrix) 1 "worldInverse"
+ MemberName 269(TDMatrix) 2 "worldCam"
+ MemberName 269(TDMatrix) 3 "worldCamInverse"
+ MemberName 269(TDMatrix) 4 "cam"
+ MemberName 269(TDMatrix) 5 "camInverse"
+ MemberName 269(TDMatrix) 6 "camProj"
+ MemberName 269(TDMatrix) 7 "camProjInverse"
+ MemberName 269(TDMatrix) 8 "proj"
+ MemberName 269(TDMatrix) 9 "projInverse"
+ MemberName 269(TDMatrix) 10 "worldCamProj"
+ MemberName 269(TDMatrix) 11 "worldCamProjInverse"
+ MemberName 269(TDMatrix) 12 "quadReproject"
+ MemberName 269(TDMatrix) 13 "worldForNormals"
+ MemberName 269(TDMatrix) 14 "camForNormals"
+ MemberName 269(TDMatrix) 15 "worldCamForNormals"
+ Name 271 "TDMatricesBlock"
+ MemberName 271(TDMatricesBlock) 0 "uTDMats"
+ Name 273 ""
+ Name 297 "gl_InstanceIndex"
+ Name 299 "gl_DefaultUniformBlock"
+ MemberName 299(gl_DefaultUniformBlock) 0 "uTDInstanceIDOffset"
+ MemberName 299(gl_DefaultUniformBlock) 1 "uTDNumInstances"
+ MemberName 299(gl_DefaultUniformBlock) 2 "uTDAlphaTestVal"
+ MemberName 299(gl_DefaultUniformBlock) 3 "uConstant"
+ MemberName 299(gl_DefaultUniformBlock) 4 "uShadowStrength"
+ MemberName 299(gl_DefaultUniformBlock) 5 "uShadowColor"
+ MemberName 299(gl_DefaultUniformBlock) 6 "uDiffuseColor"
+ MemberName 299(gl_DefaultUniformBlock) 7 "uAmbientColor"
+ Name 301 ""
+ Name 325 "param"
+ Name 327 "param"
+ Name 329 "param"
+ Name 330 "param"
+ Name 340 "param"
+ Name 341 "param"
+ Name 347 "param"
+ Name 349 "param"
+ Name 358 "param"
+ Name 365 "coord"
+ Name 367 "samp"
+ Name 371 "sTDInstanceTexCoord"
+ Name 376 "v"
+ Name 397 "coord"
+ Name 399 "samp"
+ Name 400 "sTDInstanceT"
+ Name 405 "v"
+ Name 412 "origIndex"
+ Name 418 "coord"
+ Name 420 "samp"
+ Name 425 "v"
+ Name 446 "coord"
+ Name 448 "samp"
+ Name 453 "v"
+ Name 470 "v"
+ Name 472 "m"
+ Name 484 "v"
+ Name 493 "v"
+ Name 501 "v"
+ Name 509 "v"
+ Name 513 "instanceActive"
+ Name 514 "t"
+ Name 515 "param"
+ Name 517 "param"
+ Name 528 "m"
+ Name 534 "tt"
+ Name 647 "m"
+ Name 651 "m"
+ Name 652 "param"
+ Name 662 "coord"
+ Name 664 "samp"
+ Name 665 "sTDInstanceColor"
+ Name 670 "v"
+ Name 693 "param"
+ Name 705 "m"
+ Name 706 "param"
+ Name 725 "m"
+ Name 726 "param"
+ Name 745 "param"
+ Name 746 "param"
+ Name 752 "param"
+ Name 753 "param"
+ Name 759 "param"
+ Name 760 "param"
+ Name 766 "param"
+ Name 771 "param"
+ Name 776 "param"
+ Name 781 "param"
+ Name 786 "param"
+ Name 791 "param"
+ Name 796 "param"
+ Name 797 "param"
+ Name 803 "param"
+ Name 804 "param"
+ Name 821 "param"
+ Name 824 "param"
+ Name 830 "pos"
+ Name 836 "param"
+ Name 839 "param"
+ Name 841 "param"
+ Name 848 "param"
+ Name 849 "param"
+ Name 854 "param"
+ Name 857 "param"
+ Name 859 "param"
+ Name 866 "param"
+ Name 867 "param"
+ Name 872 "param"
+ Name 875 "param"
+ Name 877 "param"
+ Name 884 "param"
+ Name 885 "param"
+ Name 890 "param"
+ Name 896 "TDCameraInfo"
+ MemberName 896(TDCameraInfo) 0 "nearFar"
+ MemberName 896(TDCameraInfo) 1 "fog"
+ MemberName 896(TDCameraInfo) 2 "fogColor"
+ MemberName 896(TDCameraInfo) 3 "renderTOPCameraIndex"
+ Name 898 "TDCameraInfoBlock"
+ MemberName 898(TDCameraInfoBlock) 0 "uTDCamInfos"
+ Name 900 ""
+ Name 901 "TDGeneral"
+ MemberName 901(TDGeneral) 0 "ambientColor"
+ MemberName 901(TDGeneral) 1 "nearFar"
+ MemberName 901(TDGeneral) 2 "viewport"
+ MemberName 901(TDGeneral) 3 "viewportRes"
+ MemberName 901(TDGeneral) 4 "fog"
+ MemberName 901(TDGeneral) 5 "fogColor"
+ Name 902 "TDGeneralBlock"
+ MemberName 902(TDGeneralBlock) 0 "uTDGeneral"
+ Name 904 ""
+ Name 905 "N"
+ Name 906 "gl_VertexIndex"
+ Name 907 "TDLight"
+ MemberName 907(TDLight) 0 "position"
+ MemberName 907(TDLight) 1 "direction"
+ MemberName 907(TDLight) 2 "diffuse"
+ MemberName 907(TDLight) 3 "nearFar"
+ MemberName 907(TDLight) 4 "lightSize"
+ MemberName 907(TDLight) 5 "misc"
+ MemberName 907(TDLight) 6 "coneLookupScaleBias"
+ MemberName 907(TDLight) 7 "attenScaleBiasRoll"
+ MemberName 907(TDLight) 8 "shadowMapMatrix"
+ MemberName 907(TDLight) 9 "shadowMapCamMatrix"
+ MemberName 907(TDLight) 10 "shadowMapRes"
+ MemberName 907(TDLight) 11 "projMapMatrix"
+ Name 909 "TDLightBlock"
+ MemberName 909(TDLightBlock) 0 "uTDLights"
+ Name 911 ""
+ Name 912 "TDEnvLight"
+ MemberName 912(TDEnvLight) 0 "color"
+ MemberName 912(TDEnvLight) 1 "rotate"
+ Name 914 "TDEnvLightBlock"
+ MemberName 914(TDEnvLightBlock) 0 "uTDEnvLights"
+ Name 916 ""
+ Name 919 "TDEnvLightBuffer"
+ MemberName 919(TDEnvLightBuffer) 0 "shCoeffs"
+ Name 922 "uTDEnvLightBuffers"
+ Name 926 "mTD2DImageOutputs"
+ Name 930 "mTD2DArrayImageOutputs"
+ Name 934 "mTD3DImageOutputs"
+ Name 938 "mTDCubeImageOutputs"
+ Decorate 207(uv) Location 3
+ MemberDecorate 214(Vertex) 3 Flat
+ MemberDecorate 214(Vertex) 4 Flat
+ Decorate 214(Vertex) Block
+ Decorate 216(oVert) Location 0
+ Decorate 226(P) Location 0
+ MemberDecorate 236(gl_PerVertex) 0 BuiltIn Position
+ MemberDecorate 236(gl_PerVertex) 1 BuiltIn PointSize
+ MemberDecorate 236(gl_PerVertex) 2 BuiltIn ClipDistance
+ MemberDecorate 236(gl_PerVertex) 3 BuiltIn CullDistance
+ Decorate 236(gl_PerVertex) Block
+ Decorate 256(Cd) Location 2
+ MemberDecorate 269(TDMatrix) 0 ColMajor
+ MemberDecorate 269(TDMatrix) 0 Offset 0
+ MemberDecorate 269(TDMatrix) 0 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 1 ColMajor
+ MemberDecorate 269(TDMatrix) 1 Offset 64
+ MemberDecorate 269(TDMatrix) 1 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 2 ColMajor
+ MemberDecorate 269(TDMatrix) 2 Offset 128
+ MemberDecorate 269(TDMatrix) 2 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 3 ColMajor
+ MemberDecorate 269(TDMatrix) 3 Offset 192
+ MemberDecorate 269(TDMatrix) 3 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 4 ColMajor
+ MemberDecorate 269(TDMatrix) 4 Offset 256
+ MemberDecorate 269(TDMatrix) 4 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 5 ColMajor
+ MemberDecorate 269(TDMatrix) 5 Offset 320
+ MemberDecorate 269(TDMatrix) 5 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 6 ColMajor
+ MemberDecorate 269(TDMatrix) 6 Offset 384
+ MemberDecorate 269(TDMatrix) 6 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 7 ColMajor
+ MemberDecorate 269(TDMatrix) 7 Offset 448
+ MemberDecorate 269(TDMatrix) 7 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 8 ColMajor
+ MemberDecorate 269(TDMatrix) 8 Offset 512
+ MemberDecorate 269(TDMatrix) 8 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 9 ColMajor
+ MemberDecorate 269(TDMatrix) 9 Offset 576
+ MemberDecorate 269(TDMatrix) 9 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 10 ColMajor
+ MemberDecorate 269(TDMatrix) 10 Offset 640
+ MemberDecorate 269(TDMatrix) 10 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 11 ColMajor
+ MemberDecorate 269(TDMatrix) 11 Offset 704
+ MemberDecorate 269(TDMatrix) 11 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 12 ColMajor
+ MemberDecorate 269(TDMatrix) 12 Offset 768
+ MemberDecorate 269(TDMatrix) 12 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 13 ColMajor
+ MemberDecorate 269(TDMatrix) 13 Offset 832
+ MemberDecorate 269(TDMatrix) 13 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 14 ColMajor
+ MemberDecorate 269(TDMatrix) 14 Offset 880
+ MemberDecorate 269(TDMatrix) 14 MatrixStride 16
+ MemberDecorate 269(TDMatrix) 15 ColMajor
+ MemberDecorate 269(TDMatrix) 15 Offset 928
+ MemberDecorate 269(TDMatrix) 15 MatrixStride 16
+ Decorate 270 ArrayStride 976
+ MemberDecorate 271(TDMatricesBlock) 0 Offset 0
+ Decorate 271(TDMatricesBlock) Block
+ Decorate 273 DescriptorSet 0
+ Decorate 273 Binding 1
+ Decorate 297(gl_InstanceIndex) BuiltIn InstanceIndex
+ MemberDecorate 299(gl_DefaultUniformBlock) 0 Offset 0
+ MemberDecorate 299(gl_DefaultUniformBlock) 1 Offset 4
+ MemberDecorate 299(gl_DefaultUniformBlock) 2 Offset 8
+ MemberDecorate 299(gl_DefaultUniformBlock) 3 Offset 16
+ MemberDecorate 299(gl_DefaultUniformBlock) 4 Offset 28
+ MemberDecorate 299(gl_DefaultUniformBlock) 5 Offset 32
+ MemberDecorate 299(gl_DefaultUniformBlock) 6 Offset 48
+ MemberDecorate 299(gl_DefaultUniformBlock) 7 Offset 64
+ Decorate 299(gl_DefaultUniformBlock) Block
+ Decorate 301 DescriptorSet 0
+ Decorate 301 Binding 0
+ Decorate 371(sTDInstanceTexCoord) DescriptorSet 0
+ Decorate 371(sTDInstanceTexCoord) Binding 16
+ Decorate 400(sTDInstanceT) DescriptorSet 0
+ Decorate 400(sTDInstanceT) Binding 15
+ Decorate 665(sTDInstanceColor) DescriptorSet 0
+ Decorate 665(sTDInstanceColor) Binding 17
+ MemberDecorate 896(TDCameraInfo) 0 Offset 0
+ MemberDecorate 896(TDCameraInfo) 1 Offset 16
+ MemberDecorate 896(TDCameraInfo) 2 Offset 32
+ MemberDecorate 896(TDCameraInfo) 3 Offset 48
+ Decorate 897 ArrayStride 64
+ MemberDecorate 898(TDCameraInfoBlock) 0 Offset 0
+ Decorate 898(TDCameraInfoBlock) Block
+ Decorate 900 DescriptorSet 0
+ Decorate 900 Binding 0
+ MemberDecorate 901(TDGeneral) 0 Offset 0
+ MemberDecorate 901(TDGeneral) 1 Offset 16
+ MemberDecorate 901(TDGeneral) 2 Offset 32
+ MemberDecorate 901(TDGeneral) 3 Offset 48
+ MemberDecorate 901(TDGeneral) 4 Offset 64
+ MemberDecorate 901(TDGeneral) 5 Offset 80
+ MemberDecorate 902(TDGeneralBlock) 0 Offset 0
+ Decorate 902(TDGeneralBlock) Block
+ Decorate 904 DescriptorSet 0
+ Decorate 904 Binding 0
+ Decorate 905(N) Location 1
+ Decorate 906(gl_VertexIndex) BuiltIn VertexIndex
+ MemberDecorate 907(TDLight) 0 Offset 0
+ MemberDecorate 907(TDLight) 1 Offset 16
+ MemberDecorate 907(TDLight) 2 Offset 32
+ MemberDecorate 907(TDLight) 3 Offset 48
+ MemberDecorate 907(TDLight) 4 Offset 64
+ MemberDecorate 907(TDLight) 5 Offset 80
+ MemberDecorate 907(TDLight) 6 Offset 96
+ MemberDecorate 907(TDLight) 7 Offset 112
+ MemberDecorate 907(TDLight) 8 ColMajor
+ MemberDecorate 907(TDLight) 8 Offset 128
+ MemberDecorate 907(TDLight) 8 MatrixStride 16
+ MemberDecorate 907(TDLight) 9 ColMajor
+ MemberDecorate 907(TDLight) 9 Offset 192
+ MemberDecorate 907(TDLight) 9 MatrixStride 16
+ MemberDecorate 907(TDLight) 10 Offset 256
+ MemberDecorate 907(TDLight) 11 ColMajor
+ MemberDecorate 907(TDLight) 11 Offset 272
+ MemberDecorate 907(TDLight) 11 MatrixStride 16
+ Decorate 908 ArrayStride 336
+ MemberDecorate 909(TDLightBlock) 0 Offset 0
+ Decorate 909(TDLightBlock) Block
+ Decorate 911 DescriptorSet 0
+ Decorate 911 Binding 0
+ MemberDecorate 912(TDEnvLight) 0 Offset 0
+ MemberDecorate 912(TDEnvLight) 1 ColMajor
+ MemberDecorate 912(TDEnvLight) 1 Offset 16
+ MemberDecorate 912(TDEnvLight) 1 MatrixStride 16
+ Decorate 913 ArrayStride 64
+ MemberDecorate 914(TDEnvLightBlock) 0 Offset 0
+ Decorate 914(TDEnvLightBlock) Block
+ Decorate 916 DescriptorSet 0
+ Decorate 916 Binding 0
+ Decorate 918 ArrayStride 16
+ MemberDecorate 919(TDEnvLightBuffer) 0 Restrict
+ MemberDecorate 919(TDEnvLightBuffer) 0 NonWritable
+ MemberDecorate 919(TDEnvLightBuffer) 0 Offset 0
+ Decorate 919(TDEnvLightBuffer) BufferBlock
+ Decorate 922(uTDEnvLightBuffers) DescriptorSet 0
+ Decorate 922(uTDEnvLightBuffers) Binding 0
+ Decorate 926(mTD2DImageOutputs) DescriptorSet 0
+ Decorate 926(mTD2DImageOutputs) Binding 0
+ Decorate 930(mTD2DArrayImageOutputs) DescriptorSet 0
+ Decorate 930(mTD2DArrayImageOutputs) Binding 0
+ Decorate 934(mTD3DImageOutputs) DescriptorSet 0
+ Decorate 934(mTD3DImageOutputs) Binding 0
+ Decorate 938(mTDCubeImageOutputs) DescriptorSet 0
+ Decorate 938(mTDCubeImageOutputs) Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeVector 6(float) 3
+ 10: TypePointer Function 9(fvec3)
+ 11: TypeInt 32 1
+ 12: TypePointer Function 11(int)
+ 13: TypeBool
+ 14: TypePointer Function 13(bool)
+ 15: TypeFunction 7(fvec4) 8(ptr) 10(ptr) 12(ptr) 14(ptr)
+ 28: TypeFunction 11(int)
+ 33: TypeFunction 9(fvec3)
+ 38: TypeFunction 6(float) 12(ptr)
+ 44: TypeFunction 7(fvec4) 8(ptr) 10(ptr)
+ 49: TypeFunction 7(fvec4) 10(ptr) 10(ptr)
+ 54: TypeFunction 7(fvec4) 8(ptr)
+ 58: TypeFunction 7(fvec4) 10(ptr)
+ 62: TypeFunction 7(fvec4)
+ 65: TypeFunction 9(fvec3) 12(ptr) 10(ptr)
+ 70: TypeFunction 13(bool) 12(ptr)
+ 74: TypeFunction 9(fvec3) 12(ptr) 14(ptr)
+ 79: TypeFunction 9(fvec3) 12(ptr)
+ 83: TypeMatrix 9(fvec3) 3
+ 84: TypeFunction 83 12(ptr)
+ 100: TypeMatrix 7(fvec4) 4
+ 101: TypeFunction 100 12(ptr)
+ 111: TypeFunction 7(fvec4) 12(ptr) 8(ptr)
+ 131: TypeFunction 9(fvec3) 10(ptr)
+ 138: TypeFunction 13(bool)
+ 143: TypeFunction 83
+ 148: TypeFunction 100
+ 165: TypeFunction 9(fvec3) 10(ptr) 8(ptr) 10(ptr)
+ 177: TypeFunction 7(fvec4) 12(ptr) 10(ptr)
+ 203: TypeInt 32 0
+ 204: 203(int) Constant 8
+ 205: TypeArray 9(fvec3) 204
+ 206: TypePointer Input 205
+ 207(uv): 206(ptr) Variable Input
+ 208: 11(int) Constant 0
+ 210: TypePointer Input 9(fvec3)
+ 214(Vertex): TypeStruct 7(fvec4) 9(fvec3) 9(fvec3) 11(int) 11(int)
+ 215: TypePointer Output 214(Vertex)
+ 216(oVert): 215(ptr) Variable Output
+ 217: 11(int) Constant 2
+ 219: TypePointer Output 9(fvec3)
+ 221: 11(int) Constant 4
+ 223: TypePointer Output 11(int)
+ 226(P): 210(ptr) Variable Input
+ 234: 203(int) Constant 1
+ 235: TypeArray 6(float) 234
+236(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 235 235
+ 237: TypePointer Output 236(gl_PerVertex)
+ 238: 237(ptr) Variable Output
+ 244: TypePointer Output 7(fvec4)
+ 248: 11(int) Constant 3
+ 251: 11(int) Constant 1
+ 255: TypePointer Input 7(fvec4)
+ 256(Cd): 255(ptr) Variable Input
+ 265: 6(float) Constant 1073741824
+ 266: 6(float) Constant 0
+ 267: 7(fvec4) ConstantComposite 265 265 265 266
+ 269(TDMatrix): TypeStruct 100 100 100 100 100 100 100 100 100 100 100 100 100 83 83 83
+ 270: TypeArray 269(TDMatrix) 234
+271(TDMatricesBlock): TypeStruct 270
+ 272: TypePointer Uniform 271(TDMatricesBlock)
+ 273: 272(ptr) Variable Uniform
+ 274: 11(int) Constant 8
+ 275: TypePointer Uniform 100
+ 288: 11(int) Constant 6
+ 296: TypePointer Input 11(int)
+297(gl_InstanceIndex): 296(ptr) Variable Input
+299(gl_DefaultUniformBlock): TypeStruct 11(int) 11(int) 6(float) 9(fvec3) 6(float) 9(fvec3) 7(fvec4) 7(fvec4)
+ 300: TypePointer Uniform 299(gl_DefaultUniformBlock)
+ 301: 300(ptr) Variable Uniform
+ 302: TypePointer Uniform 11(int)
+ 316: 11(int) Constant 1073741824
+ 324: 13(bool) ConstantTrue
+ 335: 6(float) Constant 1065353216
+ 346: 9(fvec3) ConstantComposite 266 266 266
+ 368: TypeImage 6(float) Buffer sampled format:Unknown
+ 369: TypeSampledImage 368
+ 370: TypePointer UniformConstant 369
+371(sTDInstanceTexCoord): 370(ptr) Variable UniformConstant
+ 377: 203(int) Constant 0
+ 378: TypePointer Function 6(float)
+ 387: 203(int) Constant 2
+400(sTDInstanceT): 370(ptr) Variable UniformConstant
+ 432: 203(int) Constant 3
+ 471: TypePointer Function 83
+ 473: 9(fvec3) ConstantComposite 335 266 266
+ 474: 9(fvec3) ConstantComposite 266 335 266
+ 475: 9(fvec3) ConstantComposite 266 266 335
+ 476: 83 ConstantComposite 473 474 475
+ 485: 9(fvec3) ConstantComposite 335 335 335
+ 524: 7(fvec4) ConstantComposite 266 266 266 266
+ 525: 100 ConstantComposite 524 524 524 524
+ 527: TypePointer Function 100
+ 529: 7(fvec4) ConstantComposite 335 266 266 266
+ 530: 7(fvec4) ConstantComposite 266 335 266 266
+ 531: 7(fvec4) ConstantComposite 266 266 335 266
+ 532: 7(fvec4) ConstantComposite 266 266 266 335
+ 533: 100 ConstantComposite 529 530 531 532
+665(sTDInstanceColor): 370(ptr) Variable UniformConstant
+ 730: 11(int) Constant 13
+ 731: TypePointer Uniform 83
+896(TDCameraInfo): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 11(int)
+ 897: TypeArray 896(TDCameraInfo) 234
+898(TDCameraInfoBlock): TypeStruct 897
+ 899: TypePointer Uniform 898(TDCameraInfoBlock)
+ 900: 899(ptr) Variable Uniform
+ 901(TDGeneral): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4)
+902(TDGeneralBlock): TypeStruct 901(TDGeneral)
+ 903: TypePointer Uniform 902(TDGeneralBlock)
+ 904: 903(ptr) Variable Uniform
+ 905(N): 210(ptr) Variable Input
+906(gl_VertexIndex): 296(ptr) Variable Input
+ 907(TDLight): TypeStruct 7(fvec4) 9(fvec3) 9(fvec3) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 100 100 7(fvec4) 100
+ 908: TypeArray 907(TDLight) 234
+909(TDLightBlock): TypeStruct 908
+ 910: TypePointer Uniform 909(TDLightBlock)
+ 911: 910(ptr) Variable Uniform
+ 912(TDEnvLight): TypeStruct 9(fvec3) 83
+ 913: TypeArray 912(TDEnvLight) 234
+914(TDEnvLightBlock): TypeStruct 913
+ 915: TypePointer Uniform 914(TDEnvLightBlock)
+ 916: 915(ptr) Variable Uniform
+ 917: 203(int) Constant 9
+ 918: TypeArray 9(fvec3) 917
+919(TDEnvLightBuffer): TypeStruct 918
+ 920: TypeArray 919(TDEnvLightBuffer) 234
+ 921: TypePointer Uniform 920
+922(uTDEnvLightBuffers): 921(ptr) Variable Uniform
+ 923: TypeImage 6(float) 2D nonsampled format:Rgba8
+ 924: TypeArray 923 234
+ 925: TypePointer UniformConstant 924
+926(mTD2DImageOutputs): 925(ptr) Variable UniformConstant
+ 927: TypeImage 6(float) 2D array nonsampled format:Rgba8
+ 928: TypeArray 927 234
+ 929: TypePointer UniformConstant 928
+930(mTD2DArrayImageOutputs): 929(ptr) Variable UniformConstant
+ 931: TypeImage 6(float) 3D nonsampled format:Rgba8
+ 932: TypeArray 931 234
+ 933: TypePointer UniformConstant 932
+934(mTD3DImageOutputs): 933(ptr) Variable UniformConstant
+ 935: TypeImage 6(float) Cube nonsampled format:Rgba8
+ 936: TypeArray 935 234
+ 937: TypePointer UniformConstant 936
+938(mTDCubeImageOutputs): 937(ptr) Variable UniformConstant
+ 4(main): 2 Function None 3
+ 5: Label
+ 202(texcoord): 10(ptr) Variable Function
+ 209(param): 10(ptr) Variable Function
+225(worldSpacePos): 8(ptr) Variable Function
+ 227(param): 10(ptr) Variable Function
+230(uvUnwrapCoord): 10(ptr) Variable Function
+ 232(param): 10(ptr) Variable Function
+ 239(param): 8(ptr) Variable Function
+ 241(param): 10(ptr) Variable Function
+246(cameraIndex): 12(ptr) Variable Function
+ 257(param): 8(ptr) Variable Function
+ 211: 210(ptr) AccessChain 207(uv) 208
+ 212: 9(fvec3) Load 211
+ Store 209(param) 212
+ 213: 9(fvec3) FunctionCall 154(TDInstanceTexCoord(vf3;) 209(param)
+ Store 202(texcoord) 213
+ 218: 9(fvec3) Load 202(texcoord)
+ 220: 219(ptr) AccessChain 216(oVert) 217
+ Store 220 218
+ 222: 11(int) FunctionCall 29(TDInstanceID()
+ 224: 223(ptr) AccessChain 216(oVert) 221
+ Store 224 222
+ 228: 9(fvec3) Load 226(P)
+ Store 227(param) 228
+ 229: 7(fvec4) FunctionCall 183(TDDeform(vf3;) 227(param)
+ Store 225(worldSpacePos) 229
+ 231: 9(fvec3) FunctionCall 34(TDUVUnwrapCoord()
+ Store 232(param) 231
+ 233: 9(fvec3) FunctionCall 154(TDInstanceTexCoord(vf3;) 232(param)
+ Store 230(uvUnwrapCoord) 233
+ 240: 7(fvec4) Load 225(worldSpacePos)
+ Store 239(param) 240
+ 242: 9(fvec3) Load 230(uvUnwrapCoord)
+ Store 241(param) 242
+ 243: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 239(param) 241(param)
+ 245: 244(ptr) AccessChain 238 208
+ Store 245 243
+ 247: 11(int) FunctionCall 31(TDCameraIndex()
+ Store 246(cameraIndex) 247
+ 249: 11(int) Load 246(cameraIndex)
+ 250: 223(ptr) AccessChain 216(oVert) 248
+ Store 250 249
+ 252: 7(fvec4) Load 225(worldSpacePos)
+ 253: 9(fvec3) VectorShuffle 252 252 0 1 2
+ 254: 219(ptr) AccessChain 216(oVert) 251
+ Store 254 253
+ 258: 7(fvec4) Load 256(Cd)
+ Store 257(param) 258
+ 259: 7(fvec4) FunctionCall 157(TDInstanceColor(vf4;) 257(param)
+ 260: 244(ptr) AccessChain 216(oVert) 208
+ Store 260 259
+ Return
+ FunctionEnd
+20(iTDCamToProj(vf4;vf3;i1;b1;): 7(fvec4) Function None 15
+ 16(v): 8(ptr) FunctionParameter
+ 17(uv): 10(ptr) FunctionParameter
+ 18(cameraIndex): 12(ptr) FunctionParameter
+19(applyPickMod): 14(ptr) FunctionParameter
+ 21: Label
+ 261: 13(bool) FunctionCall 139(TDInstanceActive()
+ 262: 13(bool) LogicalNot 261
+ SelectionMerge 264 None
+ BranchConditional 262 263 264
+ 263: Label
+ ReturnValue 267
+ 264: Label
+ 276: 275(ptr) AccessChain 273 208 208 274
+ 277: 100 Load 276
+ 278: 7(fvec4) Load 16(v)
+ 279: 7(fvec4) MatrixTimesVector 277 278
+ Store 16(v) 279
+ 280: 7(fvec4) Load 16(v)
+ ReturnValue 280
+ FunctionEnd
+26(iTDWorldToProj(vf4;vf3;i1;b1;): 7(fvec4) Function None 15
+ 22(v): 8(ptr) FunctionParameter
+ 23(uv): 10(ptr) FunctionParameter
+ 24(cameraIndex): 12(ptr) FunctionParameter
+25(applyPickMod): 14(ptr) FunctionParameter
+ 27: Label
+ 283: 13(bool) FunctionCall 139(TDInstanceActive()
+ 284: 13(bool) LogicalNot 283
+ SelectionMerge 286 None
+ BranchConditional 284 285 286
+ 285: Label
+ ReturnValue 267
+ 286: Label
+ 289: 275(ptr) AccessChain 273 208 208 288
+ 290: 100 Load 289
+ 291: 7(fvec4) Load 22(v)
+ 292: 7(fvec4) MatrixTimesVector 290 291
+ Store 22(v) 292
+ 293: 7(fvec4) Load 22(v)
+ ReturnValue 293
+ FunctionEnd
+29(TDInstanceID(): 11(int) Function None 28
+ 30: Label
+ 298: 11(int) Load 297(gl_InstanceIndex)
+ 303: 302(ptr) AccessChain 301 208
+ 304: 11(int) Load 303
+ 305: 11(int) IAdd 298 304
+ ReturnValue 305
+ FunctionEnd
+31(TDCameraIndex(): 11(int) Function None 28
+ 32: Label
+ ReturnValue 208
+ FunctionEnd
+34(TDUVUnwrapCoord(): 9(fvec3) Function None 33
+ 35: Label
+ 310: 210(ptr) AccessChain 207(uv) 208
+ 311: 9(fvec3) Load 310
+ ReturnValue 311
+ FunctionEnd
+ 36(TDPickID(): 11(int) Function None 28
+ 37: Label
+ ReturnValue 208
+ FunctionEnd
+40(iTDConvertPickId(i1;): 6(float) Function None 38
+ 39(id): 12(ptr) FunctionParameter
+ 41: Label
+ 317: 11(int) Load 39(id)
+ 318: 11(int) BitwiseOr 317 316
+ Store 39(id) 318
+ 319: 11(int) Load 39(id)
+ 320: 6(float) Bitcast 319
+ ReturnValue 320
+ FunctionEnd
+42(TDWritePickingValues(): 2 Function None 3
+ 43: Label
+ Return
+ FunctionEnd
+47(TDWorldToProj(vf4;vf3;): 7(fvec4) Function None 44
+ 45(v): 8(ptr) FunctionParameter
+ 46(uv): 10(ptr) FunctionParameter
+ 48: Label
+ 325(param): 8(ptr) Variable Function
+ 327(param): 10(ptr) Variable Function
+ 329(param): 12(ptr) Variable Function
+ 330(param): 14(ptr) Variable Function
+ 323: 11(int) FunctionCall 31(TDCameraIndex()
+ 326: 7(fvec4) Load 45(v)
+ Store 325(param) 326
+ 328: 9(fvec3) Load 46(uv)
+ Store 327(param) 328
+ Store 329(param) 323
+ Store 330(param) 324
+ 331: 7(fvec4) FunctionCall 26(iTDWorldToProj(vf4;vf3;i1;b1;) 325(param) 327(param) 329(param) 330(param)
+ ReturnValue 331
+ FunctionEnd
+52(TDWorldToProj(vf3;vf3;): 7(fvec4) Function None 49
+ 50(v): 10(ptr) FunctionParameter
+ 51(uv): 10(ptr) FunctionParameter
+ 53: Label
+ 340(param): 8(ptr) Variable Function
+ 341(param): 10(ptr) Variable Function
+ 334: 9(fvec3) Load 50(v)
+ 336: 6(float) CompositeExtract 334 0
+ 337: 6(float) CompositeExtract 334 1
+ 338: 6(float) CompositeExtract 334 2
+ 339: 7(fvec4) CompositeConstruct 336 337 338 335
+ Store 340(param) 339
+ 342: 9(fvec3) Load 51(uv)
+ Store 341(param) 342
+ 343: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 340(param) 341(param)
+ ReturnValue 343
+ FunctionEnd
+56(TDWorldToProj(vf4;): 7(fvec4) Function None 54
+ 55(v): 8(ptr) FunctionParameter
+ 57: Label
+ 347(param): 8(ptr) Variable Function
+ 349(param): 10(ptr) Variable Function
+ 348: 7(fvec4) Load 55(v)
+ Store 347(param) 348
+ Store 349(param) 346
+ 350: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 347(param) 349(param)
+ ReturnValue 350
+ FunctionEnd
+60(TDWorldToProj(vf3;): 7(fvec4) Function None 58
+ 59(v): 10(ptr) FunctionParameter
+ 61: Label
+ 358(param): 8(ptr) Variable Function
+ 353: 9(fvec3) Load 59(v)
+ 354: 6(float) CompositeExtract 353 0
+ 355: 6(float) CompositeExtract 353 1
+ 356: 6(float) CompositeExtract 353 2
+ 357: 7(fvec4) CompositeConstruct 354 355 356 335
+ Store 358(param) 357
+ 359: 7(fvec4) FunctionCall 56(TDWorldToProj(vf4;) 358(param)
+ ReturnValue 359
+ FunctionEnd
+63(TDPointColor(): 7(fvec4) Function None 62
+ 64: Label
+ 362: 7(fvec4) Load 256(Cd)
+ ReturnValue 362
+ FunctionEnd
+68(TDInstanceTexCoord(i1;vf3;): 9(fvec3) Function None 65
+ 66(index): 12(ptr) FunctionParameter
+ 67(t): 10(ptr) FunctionParameter
+ 69: Label
+ 365(coord): 12(ptr) Variable Function
+ 367(samp): 8(ptr) Variable Function
+ 376(v): 10(ptr) Variable Function
+ 366: 11(int) Load 66(index)
+ Store 365(coord) 366
+ 372: 369 Load 371(sTDInstanceTexCoord)
+ 373: 11(int) Load 365(coord)
+ 374: 368 Image 372
+ 375: 7(fvec4) ImageFetch 374 373
+ Store 367(samp) 375
+ 379: 378(ptr) AccessChain 67(t) 377
+ 380: 6(float) Load 379
+ 381: 378(ptr) AccessChain 376(v) 377
+ Store 381 380
+ 382: 378(ptr) AccessChain 67(t) 234
+ 383: 6(float) Load 382
+ 384: 378(ptr) AccessChain 376(v) 234
+ Store 384 383
+ 385: 378(ptr) AccessChain 367(samp) 377
+ 386: 6(float) Load 385
+ 388: 378(ptr) AccessChain 376(v) 387
+ Store 388 386
+ 389: 9(fvec3) Load 376(v)
+ Store 67(t) 389
+ 390: 9(fvec3) Load 67(t)
+ ReturnValue 390
+ FunctionEnd
+72(TDInstanceActive(i1;): 13(bool) Function None 70
+ 71(index): 12(ptr) FunctionParameter
+ 73: Label
+ 397(coord): 12(ptr) Variable Function
+ 399(samp): 8(ptr) Variable Function
+ 405(v): 378(ptr) Variable Function
+ 393: 302(ptr) AccessChain 301 208
+ 394: 11(int) Load 393
+ 395: 11(int) Load 71(index)
+ 396: 11(int) ISub 395 394
+ Store 71(index) 396
+ 398: 11(int) Load 71(index)
+ Store 397(coord) 398
+ 401: 369 Load 400(sTDInstanceT)
+ 402: 11(int) Load 397(coord)
+ 403: 368 Image 401
+ 404: 7(fvec4) ImageFetch 403 402
+ Store 399(samp) 404
+ 406: 378(ptr) AccessChain 399(samp) 377
+ 407: 6(float) Load 406
+ Store 405(v) 407
+ 408: 6(float) Load 405(v)
+ 409: 13(bool) FUnordNotEqual 408 266
+ ReturnValue 409
+ FunctionEnd
+77(iTDInstanceTranslate(i1;b1;): 9(fvec3) Function None 74
+ 75(index): 12(ptr) FunctionParameter
+76(instanceActive): 14(ptr) FunctionParameter
+ 78: Label
+ 412(origIndex): 12(ptr) Variable Function
+ 418(coord): 12(ptr) Variable Function
+ 420(samp): 8(ptr) Variable Function
+ 425(v): 10(ptr) Variable Function
+ 413: 11(int) Load 75(index)
+ Store 412(origIndex) 413
+ 414: 302(ptr) AccessChain 301 208
+ 415: 11(int) Load 414
+ 416: 11(int) Load 75(index)
+ 417: 11(int) ISub 416 415
+ Store 75(index) 417
+ 419: 11(int) Load 75(index)
+ Store 418(coord) 419
+ 421: 369 Load 400(sTDInstanceT)
+ 422: 11(int) Load 418(coord)
+ 423: 368 Image 421
+ 424: 7(fvec4) ImageFetch 423 422
+ Store 420(samp) 424
+ 426: 378(ptr) AccessChain 420(samp) 234
+ 427: 6(float) Load 426
+ 428: 378(ptr) AccessChain 425(v) 377
+ Store 428 427
+ 429: 378(ptr) AccessChain 420(samp) 387
+ 430: 6(float) Load 429
+ 431: 378(ptr) AccessChain 425(v) 234
+ Store 431 430
+ 433: 378(ptr) AccessChain 420(samp) 432
+ 434: 6(float) Load 433
+ 435: 378(ptr) AccessChain 425(v) 387
+ Store 435 434
+ 436: 378(ptr) AccessChain 420(samp) 377
+ 437: 6(float) Load 436
+ 438: 13(bool) FUnordNotEqual 437 266
+ Store 76(instanceActive) 438
+ 439: 9(fvec3) Load 425(v)
+ ReturnValue 439
+ FunctionEnd
+81(TDInstanceTranslate(i1;): 9(fvec3) Function None 79
+ 80(index): 12(ptr) FunctionParameter
+ 82: Label
+ 446(coord): 12(ptr) Variable Function
+ 448(samp): 8(ptr) Variable Function
+ 453(v): 10(ptr) Variable Function
+ 442: 302(ptr) AccessChain 301 208
+ 443: 11(int) Load 442
+ 444: 11(int) Load 80(index)
+ 445: 11(int) ISub 444 443
+ Store 80(index) 445
+ 447: 11(int) Load 80(index)
+ Store 446(coord) 447
+ 449: 369 Load 400(sTDInstanceT)
+ 450: 11(int) Load 446(coord)
+ 451: 368 Image 449
+ 452: 7(fvec4) ImageFetch 451 450
+ Store 448(samp) 452
+ 454: 378(ptr) AccessChain 448(samp) 234
+ 455: 6(float) Load 454
+ 456: 378(ptr) AccessChain 453(v) 377
+ Store 456 455
+ 457: 378(ptr) AccessChain 448(samp) 387
+ 458: 6(float) Load 457
+ 459: 378(ptr) AccessChain 453(v) 234
+ Store 459 458
+ 460: 378(ptr) AccessChain 448(samp) 432
+ 461: 6(float) Load 460
+ 462: 378(ptr) AccessChain 453(v) 387
+ Store 462 461
+ 463: 9(fvec3) Load 453(v)
+ ReturnValue 463
+ FunctionEnd
+86(TDInstanceRotateMat(i1;): 83 Function None 84
+ 85(index): 12(ptr) FunctionParameter
+ 87: Label
+ 470(v): 10(ptr) Variable Function
+ 472(m): 471(ptr) Variable Function
+ 466: 302(ptr) AccessChain 301 208
+ 467: 11(int) Load 466
+ 468: 11(int) Load 85(index)
+ 469: 11(int) ISub 468 467
+ Store 85(index) 469
+ Store 470(v) 346
+ Store 472(m) 476
+ 477: 83 Load 472(m)
+ ReturnValue 477
+ FunctionEnd
+89(TDInstanceScale(i1;): 9(fvec3) Function None 79
+ 88(index): 12(ptr) FunctionParameter
+ 90: Label
+ 484(v): 10(ptr) Variable Function
+ 480: 302(ptr) AccessChain 301 208
+ 481: 11(int) Load 480
+ 482: 11(int) Load 88(index)
+ 483: 11(int) ISub 482 481
+ Store 88(index) 483
+ Store 484(v) 485
+ 486: 9(fvec3) Load 484(v)
+ ReturnValue 486
+ FunctionEnd
+92(TDInstancePivot(i1;): 9(fvec3) Function None 79
+ 91(index): 12(ptr) FunctionParameter
+ 93: Label
+ 493(v): 10(ptr) Variable Function
+ 489: 302(ptr) AccessChain 301 208
+ 490: 11(int) Load 489
+ 491: 11(int) Load 91(index)
+ 492: 11(int) ISub 491 490
+ Store 91(index) 492
+ Store 493(v) 346
+ 494: 9(fvec3) Load 493(v)
+ ReturnValue 494
+ FunctionEnd
+95(TDInstanceRotTo(i1;): 9(fvec3) Function None 79
+ 94(index): 12(ptr) FunctionParameter
+ 96: Label
+ 501(v): 10(ptr) Variable Function
+ 497: 302(ptr) AccessChain 301 208
+ 498: 11(int) Load 497
+ 499: 11(int) Load 94(index)
+ 500: 11(int) ISub 499 498
+ Store 94(index) 500
+ Store 501(v) 475
+ 502: 9(fvec3) Load 501(v)
+ ReturnValue 502
+ FunctionEnd
+98(TDInstanceRotUp(i1;): 9(fvec3) Function None 79
+ 97(index): 12(ptr) FunctionParameter
+ 99: Label
+ 509(v): 10(ptr) Variable Function
+ 505: 302(ptr) AccessChain 301 208
+ 506: 11(int) Load 505
+ 507: 11(int) Load 97(index)
+ 508: 11(int) ISub 507 506
+ Store 97(index) 508
+ Store 509(v) 474
+ 510: 9(fvec3) Load 509(v)
+ ReturnValue 510
+ FunctionEnd
+103(TDInstanceMat(i1;): 100 Function None 101
+ 102(id): 12(ptr) FunctionParameter
+ 104: Label
+513(instanceActive): 14(ptr) Variable Function
+ 514(t): 10(ptr) Variable Function
+ 515(param): 12(ptr) Variable Function
+ 517(param): 14(ptr) Variable Function
+ 528(m): 527(ptr) Variable Function
+ 534(tt): 10(ptr) Variable Function
+ Store 513(instanceActive) 324
+ 516: 11(int) Load 102(id)
+ Store 515(param) 516
+ 518: 9(fvec3) FunctionCall 77(iTDInstanceTranslate(i1;b1;) 515(param) 517(param)
+ 519: 13(bool) Load 517(param)
+ Store 513(instanceActive) 519
+ Store 514(t) 518
+ 520: 13(bool) Load 513(instanceActive)
+ 521: 13(bool) LogicalNot 520
+ SelectionMerge 523 None
+ BranchConditional 521 522 523
+ 522: Label
+ ReturnValue 525
+ 523: Label
+ Store 528(m) 533
+ 535: 9(fvec3) Load 514(t)
+ Store 534(tt) 535
+ 536: 378(ptr) AccessChain 528(m) 208 377
+ 537: 6(float) Load 536
+ 538: 378(ptr) AccessChain 534(tt) 377
+ 539: 6(float) Load 538
+ 540: 6(float) FMul 537 539
+ 541: 378(ptr) AccessChain 528(m) 248 377
+ 542: 6(float) Load 541
+ 543: 6(float) FAdd 542 540
+ 544: 378(ptr) AccessChain 528(m) 248 377
+ Store 544 543
+ 545: 378(ptr) AccessChain 528(m) 208 234
+ 546: 6(float) Load 545
+ 547: 378(ptr) AccessChain 534(tt) 377
+ 548: 6(float) Load 547
+ 549: 6(float) FMul 546 548
+ 550: 378(ptr) AccessChain 528(m) 248 234
+ 551: 6(float) Load 550
+ 552: 6(float) FAdd 551 549
+ 553: 378(ptr) AccessChain 528(m) 248 234
+ Store 553 552
+ 554: 378(ptr) AccessChain 528(m) 208 387
+ 555: 6(float) Load 554
+ 556: 378(ptr) AccessChain 534(tt) 377
+ 557: 6(float) Load 556
+ 558: 6(float) FMul 555 557
+ 559: 378(ptr) AccessChain 528(m) 248 387
+ 560: 6(float) Load 559
+ 561: 6(float) FAdd 560 558
+ 562: 378(ptr) AccessChain 528(m) 248 387
+ Store 562 561
+ 563: 378(ptr) AccessChain 528(m) 208 432
+ 564: 6(float) Load 563
+ 565: 378(ptr) AccessChain 534(tt) 377
+ 566: 6(float) Load 565
+ 567: 6(float) FMul 564 566
+ 568: 378(ptr) AccessChain 528(m) 248 432
+ 569: 6(float) Load 568
+ 570: 6(float) FAdd 569 567
+ 571: 378(ptr) AccessChain 528(m) 248 432
+ Store 571 570
+ 572: 378(ptr) AccessChain 528(m) 251 377
+ 573: 6(float) Load 572
+ 574: 378(ptr) AccessChain 534(tt) 234
+ 575: 6(float) Load 574
+ 576: 6(float) FMul 573 575
+ 577: 378(ptr) AccessChain 528(m) 248 377
+ 578: 6(float) Load 577
+ 579: 6(float) FAdd 578 576
+ 580: 378(ptr) AccessChain 528(m) 248 377
+ Store 580 579
+ 581: 378(ptr) AccessChain 528(m) 251 234
+ 582: 6(float) Load 581
+ 583: 378(ptr) AccessChain 534(tt) 234
+ 584: 6(float) Load 583
+ 585: 6(float) FMul 582 584
+ 586: 378(ptr) AccessChain 528(m) 248 234
+ 587: 6(float) Load 586
+ 588: 6(float) FAdd 587 585
+ 589: 378(ptr) AccessChain 528(m) 248 234
+ Store 589 588
+ 590: 378(ptr) AccessChain 528(m) 251 387
+ 591: 6(float) Load 590
+ 592: 378(ptr) AccessChain 534(tt) 234
+ 593: 6(float) Load 592
+ 594: 6(float) FMul 591 593
+ 595: 378(ptr) AccessChain 528(m) 248 387
+ 596: 6(float) Load 595
+ 597: 6(float) FAdd 596 594
+ 598: 378(ptr) AccessChain 528(m) 248 387
+ Store 598 597
+ 599: 378(ptr) AccessChain 528(m) 251 432
+ 600: 6(float) Load 599
+ 601: 378(ptr) AccessChain 534(tt) 234
+ 602: 6(float) Load 601
+ 603: 6(float) FMul 600 602
+ 604: 378(ptr) AccessChain 528(m) 248 432
+ 605: 6(float) Load 604
+ 606: 6(float) FAdd 605 603
+ 607: 378(ptr) AccessChain 528(m) 248 432
+ Store 607 606
+ 608: 378(ptr) AccessChain 528(m) 217 377
+ 609: 6(float) Load 608
+ 610: 378(ptr) AccessChain 534(tt) 387
+ 611: 6(float) Load 610
+ 612: 6(float) FMul 609 611
+ 613: 378(ptr) AccessChain 528(m) 248 377
+ 614: 6(float) Load 613
+ 615: 6(float) FAdd 614 612
+ 616: 378(ptr) AccessChain 528(m) 248 377
+ Store 616 615
+ 617: 378(ptr) AccessChain 528(m) 217 234
+ 618: 6(float) Load 617
+ 619: 378(ptr) AccessChain 534(tt) 387
+ 620: 6(float) Load 619
+ 621: 6(float) FMul 618 620
+ 622: 378(ptr) AccessChain 528(m) 248 234
+ 623: 6(float) Load 622
+ 624: 6(float) FAdd 623 621
+ 625: 378(ptr) AccessChain 528(m) 248 234
+ Store 625 624
+ 626: 378(ptr) AccessChain 528(m) 217 387
+ 627: 6(float) Load 626
+ 628: 378(ptr) AccessChain 534(tt) 387
+ 629: 6(float) Load 628
+ 630: 6(float) FMul 627 629
+ 631: 378(ptr) AccessChain 528(m) 248 387
+ 632: 6(float) Load 631
+ 633: 6(float) FAdd 632 630
+ 634: 378(ptr) AccessChain 528(m) 248 387
+ Store 634 633
+ 635: 378(ptr) AccessChain 528(m) 217 432
+ 636: 6(float) Load 635
+ 637: 378(ptr) AccessChain 534(tt) 387
+ 638: 6(float) Load 637
+ 639: 6(float) FMul 636 638
+ 640: 378(ptr) AccessChain 528(m) 248 432
+ 641: 6(float) Load 640
+ 642: 6(float) FAdd 641 639
+ 643: 378(ptr) AccessChain 528(m) 248 432
+ Store 643 642
+ 644: 100 Load 528(m)
+ ReturnValue 644
+ FunctionEnd
+106(TDInstanceMat3(i1;): 83 Function None 84
+ 105(id): 12(ptr) FunctionParameter
+ 107: Label
+ 647(m): 471(ptr) Variable Function
+ Store 647(m) 476
+ 648: 83 Load 647(m)
+ ReturnValue 648
+ FunctionEnd
+109(TDInstanceMat3ForNorm(i1;): 83 Function None 84
+ 108(id): 12(ptr) FunctionParameter
+ 110: Label
+ 651(m): 471(ptr) Variable Function
+ 652(param): 12(ptr) Variable Function
+ 653: 11(int) Load 108(id)
+ Store 652(param) 653
+ 654: 83 FunctionCall 106(TDInstanceMat3(i1;) 652(param)
+ Store 651(m) 654
+ 655: 83 Load 651(m)
+ ReturnValue 655
+ FunctionEnd
+114(TDInstanceColor(i1;vf4;): 7(fvec4) Function None 111
+ 112(index): 12(ptr) FunctionParameter
+ 113(curColor): 8(ptr) FunctionParameter
+ 115: Label
+ 662(coord): 12(ptr) Variable Function
+ 664(samp): 8(ptr) Variable Function
+ 670(v): 8(ptr) Variable Function
+ 658: 302(ptr) AccessChain 301 208
+ 659: 11(int) Load 658
+ 660: 11(int) Load 112(index)
+ 661: 11(int) ISub 660 659
+ Store 112(index) 661
+ 663: 11(int) Load 112(index)
+ Store 662(coord) 663
+ 666: 369 Load 665(sTDInstanceColor)
+ 667: 11(int) Load 662(coord)
+ 668: 368 Image 666
+ 669: 7(fvec4) ImageFetch 668 667
+ Store 664(samp) 669
+ 671: 378(ptr) AccessChain 664(samp) 377
+ 672: 6(float) Load 671
+ 673: 378(ptr) AccessChain 670(v) 377
+ Store 673 672
+ 674: 378(ptr) AccessChain 664(samp) 234
+ 675: 6(float) Load 674
+ 676: 378(ptr) AccessChain 670(v) 234
+ Store 676 675
+ 677: 378(ptr) AccessChain 664(samp) 387
+ 678: 6(float) Load 677
+ 679: 378(ptr) AccessChain 670(v) 387
+ Store 679 678
+ 680: 378(ptr) AccessChain 670(v) 432
+ Store 680 335
+ 681: 378(ptr) AccessChain 670(v) 377
+ 682: 6(float) Load 681
+ 683: 378(ptr) AccessChain 113(curColor) 377
+ Store 683 682
+ 684: 378(ptr) AccessChain 670(v) 234
+ 685: 6(float) Load 684
+ 686: 378(ptr) AccessChain 113(curColor) 234
+ Store 686 685
+ 687: 378(ptr) AccessChain 670(v) 387
+ 688: 6(float) Load 687
+ 689: 378(ptr) AccessChain 113(curColor) 387
+ Store 689 688
+ 690: 7(fvec4) Load 113(curColor)
+ ReturnValue 690
+ FunctionEnd
+118(TDInstanceDeform(i1;vf4;): 7(fvec4) Function None 111
+ 116(id): 12(ptr) FunctionParameter
+ 117(pos): 8(ptr) FunctionParameter
+ 119: Label
+ 693(param): 12(ptr) Variable Function
+ 694: 11(int) Load 116(id)
+ Store 693(param) 694
+ 695: 100 FunctionCall 103(TDInstanceMat(i1;) 693(param)
+ 696: 7(fvec4) Load 117(pos)
+ 697: 7(fvec4) MatrixTimesVector 695 696
+ Store 117(pos) 697
+ 698: 11(int) FunctionCall 31(TDCameraIndex()
+ 699: 275(ptr) AccessChain 273 208 698 208
+ 700: 100 Load 699
+ 701: 7(fvec4) Load 117(pos)
+ 702: 7(fvec4) MatrixTimesVector 700 701
+ ReturnValue 702
+ FunctionEnd
+122(TDInstanceDeformVec(i1;vf3;): 9(fvec3) Function None 65
+ 120(id): 12(ptr) FunctionParameter
+ 121(vec): 10(ptr) FunctionParameter
+ 123: Label
+ 705(m): 471(ptr) Variable Function
+ 706(param): 12(ptr) Variable Function
+ 707: 11(int) Load 120(id)
+ Store 706(param) 707
+ 708: 83 FunctionCall 106(TDInstanceMat3(i1;) 706(param)
+ Store 705(m) 708
+ 709: 11(int) FunctionCall 31(TDCameraIndex()
+ 710: 275(ptr) AccessChain 273 208 709 208
+ 711: 100 Load 710
+ 712: 7(fvec4) CompositeExtract 711 0
+ 713: 9(fvec3) VectorShuffle 712 712 0 1 2
+ 714: 7(fvec4) CompositeExtract 711 1
+ 715: 9(fvec3) VectorShuffle 714 714 0 1 2
+ 716: 7(fvec4) CompositeExtract 711 2
+ 717: 9(fvec3) VectorShuffle 716 716 0 1 2
+ 718: 83 CompositeConstruct 713 715 717
+ 719: 83 Load 705(m)
+ 720: 9(fvec3) Load 121(vec)
+ 721: 9(fvec3) MatrixTimesVector 719 720
+ 722: 9(fvec3) MatrixTimesVector 718 721
+ ReturnValue 722
+ FunctionEnd
+126(TDInstanceDeformNorm(i1;vf3;): 9(fvec3) Function None 65
+ 124(id): 12(ptr) FunctionParameter
+ 125(vec): 10(ptr) FunctionParameter
+ 127: Label
+ 725(m): 471(ptr) Variable Function
+ 726(param): 12(ptr) Variable Function
+ 727: 11(int) Load 124(id)
+ Store 726(param) 727
+ 728: 83 FunctionCall 109(TDInstanceMat3ForNorm(i1;) 726(param)
+ Store 725(m) 728
+ 729: 11(int) FunctionCall 31(TDCameraIndex()
+ 732: 731(ptr) AccessChain 273 208 729 730
+ 733: 83 Load 732
+ 734: 9(fvec3) CompositeExtract 733 0
+ 735: 9(fvec3) CompositeExtract 733 1
+ 736: 9(fvec3) CompositeExtract 733 2
+ 737: 83 CompositeConstruct 734 735 736
+ 738: 83 Load 725(m)
+ 739: 9(fvec3) Load 125(vec)
+ 740: 9(fvec3) MatrixTimesVector 738 739
+ 741: 9(fvec3) MatrixTimesVector 737 740
+ ReturnValue 741
+ FunctionEnd
+129(TDInstanceDeform(vf4;): 7(fvec4) Function None 54
+ 128(pos): 8(ptr) FunctionParameter
+ 130: Label
+ 745(param): 12(ptr) Variable Function
+ 746(param): 8(ptr) Variable Function
+ 744: 11(int) FunctionCall 29(TDInstanceID()
+ Store 745(param) 744
+ 747: 7(fvec4) Load 128(pos)
+ Store 746(param) 747
+ 748: 7(fvec4) FunctionCall 118(TDInstanceDeform(i1;vf4;) 745(param) 746(param)
+ ReturnValue 748
+ FunctionEnd
+133(TDInstanceDeformVec(vf3;): 9(fvec3) Function None 131
+ 132(vec): 10(ptr) FunctionParameter
+ 134: Label
+ 752(param): 12(ptr) Variable Function
+ 753(param): 10(ptr) Variable Function
+ 751: 11(int) FunctionCall 29(TDInstanceID()
+ Store 752(param) 751
+ 754: 9(fvec3) Load 132(vec)
+ Store 753(param) 754
+ 755: 9(fvec3) FunctionCall 122(TDInstanceDeformVec(i1;vf3;) 752(param) 753(param)
+ ReturnValue 755
+ FunctionEnd
+136(TDInstanceDeformNorm(vf3;): 9(fvec3) Function None 131
+ 135(vec): 10(ptr) FunctionParameter
+ 137: Label
+ 759(param): 12(ptr) Variable Function
+ 760(param): 10(ptr) Variable Function
+ 758: 11(int) FunctionCall 29(TDInstanceID()
+ Store 759(param) 758
+ 761: 9(fvec3) Load 135(vec)
+ Store 760(param) 761
+ 762: 9(fvec3) FunctionCall 126(TDInstanceDeformNorm(i1;vf3;) 759(param) 760(param)
+ ReturnValue 762
+ FunctionEnd
+139(TDInstanceActive(): 13(bool) Function None 138
+ 140: Label
+ 766(param): 12(ptr) Variable Function
+ 765: 11(int) FunctionCall 29(TDInstanceID()
+ Store 766(param) 765
+ 767: 13(bool) FunctionCall 72(TDInstanceActive(i1;) 766(param)
+ ReturnValue 767
+ FunctionEnd
+141(TDInstanceTranslate(): 9(fvec3) Function None 33
+ 142: Label
+ 771(param): 12(ptr) Variable Function
+ 770: 11(int) FunctionCall 29(TDInstanceID()
+ Store 771(param) 770
+ 772: 9(fvec3) FunctionCall 81(TDInstanceTranslate(i1;) 771(param)
+ ReturnValue 772
+ FunctionEnd
+144(TDInstanceRotateMat(): 83 Function None 143
+ 145: Label
+ 776(param): 12(ptr) Variable Function
+ 775: 11(int) FunctionCall 29(TDInstanceID()
+ Store 776(param) 775
+ 777: 83 FunctionCall 86(TDInstanceRotateMat(i1;) 776(param)
+ ReturnValue 777
+ FunctionEnd
+146(TDInstanceScale(): 9(fvec3) Function None 33
+ 147: Label
+ 781(param): 12(ptr) Variable Function
+ 780: 11(int) FunctionCall 29(TDInstanceID()
+ Store 781(param) 780
+ 782: 9(fvec3) FunctionCall 89(TDInstanceScale(i1;) 781(param)
+ ReturnValue 782
+ FunctionEnd
+149(TDInstanceMat(): 100 Function None 148
+ 150: Label
+ 786(param): 12(ptr) Variable Function
+ 785: 11(int) FunctionCall 29(TDInstanceID()
+ Store 786(param) 785
+ 787: 100 FunctionCall 103(TDInstanceMat(i1;) 786(param)
+ ReturnValue 787
+ FunctionEnd
+151(TDInstanceMat3(): 83 Function None 143
+ 152: Label
+ 791(param): 12(ptr) Variable Function
+ 790: 11(int) FunctionCall 29(TDInstanceID()
+ Store 791(param) 790
+ 792: 83 FunctionCall 106(TDInstanceMat3(i1;) 791(param)
+ ReturnValue 792
+ FunctionEnd
+154(TDInstanceTexCoord(vf3;): 9(fvec3) Function None 131
+ 153(t): 10(ptr) FunctionParameter
+ 155: Label
+ 796(param): 12(ptr) Variable Function
+ 797(param): 10(ptr) Variable Function
+ 795: 11(int) FunctionCall 29(TDInstanceID()
+ Store 796(param) 795
+ 798: 9(fvec3) Load 153(t)
+ Store 797(param) 798
+ 799: 9(fvec3) FunctionCall 68(TDInstanceTexCoord(i1;vf3;) 796(param) 797(param)
+ ReturnValue 799
+ FunctionEnd
+157(TDInstanceColor(vf4;): 7(fvec4) Function None 54
+ 156(curColor): 8(ptr) FunctionParameter
+ 158: Label
+ 803(param): 12(ptr) Variable Function
+ 804(param): 8(ptr) Variable Function
+ 802: 11(int) FunctionCall 29(TDInstanceID()
+ Store 803(param) 802
+ 805: 7(fvec4) Load 156(curColor)
+ Store 804(param) 805
+ 806: 7(fvec4) FunctionCall 114(TDInstanceColor(i1;vf4;) 803(param) 804(param)
+ ReturnValue 806
+ FunctionEnd
+160(TDSkinnedDeform(vf4;): 7(fvec4) Function None 54
+ 159(pos): 8(ptr) FunctionParameter
+ 161: Label
+ 809: 7(fvec4) Load 159(pos)
+ ReturnValue 809
+ FunctionEnd
+163(TDSkinnedDeformVec(vf3;): 9(fvec3) Function None 131
+ 162(vec): 10(ptr) FunctionParameter
+ 164: Label
+ 812: 9(fvec3) Load 162(vec)
+ ReturnValue 812
+ FunctionEnd
+169(TDFastDeformTangent(vf3;vf4;vf3;): 9(fvec3) Function None 165
+ 166(oldNorm): 10(ptr) FunctionParameter
+ 167(oldTangent): 8(ptr) FunctionParameter
+168(deformedNorm): 10(ptr) FunctionParameter
+ 170: Label
+ 815: 7(fvec4) Load 167(oldTangent)
+ 816: 9(fvec3) VectorShuffle 815 815 0 1 2
+ ReturnValue 816
+ FunctionEnd
+172(TDBoneMat(i1;): 100 Function None 101
+ 171(index): 12(ptr) FunctionParameter
+ 173: Label
+ ReturnValue 533
+ FunctionEnd
+175(TDDeform(vf4;): 7(fvec4) Function None 54
+ 174(pos): 8(ptr) FunctionParameter
+ 176: Label
+ 821(param): 8(ptr) Variable Function
+ 824(param): 8(ptr) Variable Function
+ 822: 7(fvec4) Load 174(pos)
+ Store 821(param) 822
+ 823: 7(fvec4) FunctionCall 160(TDSkinnedDeform(vf4;) 821(param)
+ Store 174(pos) 823
+ 825: 7(fvec4) Load 174(pos)
+ Store 824(param) 825
+ 826: 7(fvec4) FunctionCall 129(TDInstanceDeform(vf4;) 824(param)
+ Store 174(pos) 826
+ 827: 7(fvec4) Load 174(pos)
+ ReturnValue 827
+ FunctionEnd
+180(TDDeform(i1;vf3;): 7(fvec4) Function None 177
+ 178(instanceID): 12(ptr) FunctionParameter
+ 179(p): 10(ptr) FunctionParameter
+ 181: Label
+ 830(pos): 8(ptr) Variable Function
+ 836(param): 8(ptr) Variable Function
+ 839(param): 12(ptr) Variable Function
+ 841(param): 8(ptr) Variable Function
+ 831: 9(fvec3) Load 179(p)
+ 832: 6(float) CompositeExtract 831 0
+ 833: 6(float) CompositeExtract 831 1
+ 834: 6(float) CompositeExtract 831 2
+ 835: 7(fvec4) CompositeConstruct 832 833 834 335
+ Store 830(pos) 835
+ 837: 7(fvec4) Load 830(pos)
+ Store 836(param) 837
+ 838: 7(fvec4) FunctionCall 160(TDSkinnedDeform(vf4;) 836(param)
+ Store 830(pos) 838
+ 840: 11(int) Load 178(instanceID)
+ Store 839(param) 840
+ 842: 7(fvec4) Load 830(pos)
+ Store 841(param) 842
+ 843: 7(fvec4) FunctionCall 118(TDInstanceDeform(i1;vf4;) 839(param) 841(param)
+ Store 830(pos) 843
+ 844: 7(fvec4) Load 830(pos)
+ ReturnValue 844
+ FunctionEnd
+183(TDDeform(vf3;): 7(fvec4) Function None 58
+ 182(pos): 10(ptr) FunctionParameter
+ 184: Label
+ 848(param): 12(ptr) Variable Function
+ 849(param): 10(ptr) Variable Function
+ 847: 11(int) FunctionCall 29(TDInstanceID()
+ Store 848(param) 847
+ 850: 9(fvec3) Load 182(pos)
+ Store 849(param) 850
+ 851: 7(fvec4) FunctionCall 180(TDDeform(i1;vf3;) 848(param) 849(param)
+ ReturnValue 851
+ FunctionEnd
+187(TDDeformVec(i1;vf3;): 9(fvec3) Function None 65
+ 185(instanceID): 12(ptr) FunctionParameter
+ 186(vec): 10(ptr) FunctionParameter
+ 188: Label
+ 854(param): 10(ptr) Variable Function
+ 857(param): 12(ptr) Variable Function
+ 859(param): 10(ptr) Variable Function
+ 855: 9(fvec3) Load 186(vec)
+ Store 854(param) 855
+ 856: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 854(param)
+ Store 186(vec) 856
+ 858: 11(int) Load 185(instanceID)
+ Store 857(param) 858
+ 860: 9(fvec3) Load 186(vec)
+ Store 859(param) 860
+ 861: 9(fvec3) FunctionCall 122(TDInstanceDeformVec(i1;vf3;) 857(param) 859(param)
+ Store 186(vec) 861
+ 862: 9(fvec3) Load 186(vec)
+ ReturnValue 862
+ FunctionEnd
+190(TDDeformVec(vf3;): 9(fvec3) Function None 131
+ 189(vec): 10(ptr) FunctionParameter
+ 191: Label
+ 866(param): 12(ptr) Variable Function
+ 867(param): 10(ptr) Variable Function
+ 865: 11(int) FunctionCall 29(TDInstanceID()
+ Store 866(param) 865
+ 868: 9(fvec3) Load 189(vec)
+ Store 867(param) 868
+ 869: 9(fvec3) FunctionCall 187(TDDeformVec(i1;vf3;) 866(param) 867(param)
+ ReturnValue 869
+ FunctionEnd
+194(TDDeformNorm(i1;vf3;): 9(fvec3) Function None 65
+ 192(instanceID): 12(ptr) FunctionParameter
+ 193(vec): 10(ptr) FunctionParameter
+ 195: Label
+ 872(param): 10(ptr) Variable Function
+ 875(param): 12(ptr) Variable Function
+ 877(param): 10(ptr) Variable Function
+ 873: 9(fvec3) Load 193(vec)
+ Store 872(param) 873
+ 874: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 872(param)
+ Store 193(vec) 874
+ 876: 11(int) Load 192(instanceID)
+ Store 875(param) 876
+ 878: 9(fvec3) Load 193(vec)
+ Store 877(param) 878
+ 879: 9(fvec3) FunctionCall 126(TDInstanceDeformNorm(i1;vf3;) 875(param) 877(param)
+ Store 193(vec) 879
+ 880: 9(fvec3) Load 193(vec)
+ ReturnValue 880
+ FunctionEnd
+197(TDDeformNorm(vf3;): 9(fvec3) Function None 131
+ 196(vec): 10(ptr) FunctionParameter
+ 198: Label
+ 884(param): 12(ptr) Variable Function
+ 885(param): 10(ptr) Variable Function
+ 883: 11(int) FunctionCall 29(TDInstanceID()
+ Store 884(param) 883
+ 886: 9(fvec3) Load 196(vec)
+ Store 885(param) 886
+ 887: 9(fvec3) FunctionCall 194(TDDeformNorm(i1;vf3;) 884(param) 885(param)
+ ReturnValue 887
+ FunctionEnd
+200(TDSkinnedDeformNorm(vf3;): 9(fvec3) Function None 131
+ 199(vec): 10(ptr) FunctionParameter
+ 201: Label
+ 890(param): 10(ptr) Variable Function
+ 891: 9(fvec3) Load 199(vec)
+ Store 890(param) 891
+ 892: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 890(param)
+ Store 199(vec) 892
+ 893: 9(fvec3) Load 199(vec)
+ ReturnValue 893
+ FunctionEnd
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 1297
+
+ Capability Shader
+ Capability Sampled1D
+ Capability SampledBuffer
+ 1: ExtInstImport "GLSL.std.450"
+ MemoryModel Logical GLSL450
+ EntryPoint Fragment 4 "main" 336 429 458 485
+ ExecutionMode 4 OriginUpperLeft
+ Source GLSL 460
+ Name 4 "main"
+ Name 11 "TDColor(vf4;"
+ Name 10 "color"
+ Name 13 "TDCheckOrderIndTrans("
+ Name 15 "TDCheckDiscard("
+ Name 18 "TDDither(vf4;"
+ Name 17 "color"
+ Name 26 "TDFrontFacing(vf3;vf3;"
+ Name 24 "pos"
+ Name 25 "normal"
+ Name 34 "TDAttenuateLight(i1;f1;"
+ Name 32 "index"
+ Name 33 "lightDist"
+ Name 38 "TDAlphaTest(f1;"
+ Name 37 "alpha"
+ Name 43 "TDHardShadow(i1;vf3;"
+ Name 41 "lightIndex"
+ Name 42 "worldSpacePos"
+ Name 50 "TDSoftShadow(i1;vf3;i1;i1;"
+ Name 46 "lightIndex"
+ Name 47 "worldSpacePos"
+ Name 48 "samples"
+ Name 49 "steps"
+ Name 54 "TDSoftShadow(i1;vf3;"
+ Name 52 "lightIndex"
+ Name 53 "worldSpacePos"
+ Name 58 "TDShadow(i1;vf3;"
+ Name 56 "lightIndex"
+ Name 57 "worldSpacePos"
+ Name 64 "iTDRadicalInverse_VdC(u1;"
+ Name 63 "bits"
+ Name 70 "iTDHammersley(u1;u1;"
+ Name 68 "i"
+ Name 69 "N"
+ Name 77 "iTDImportanceSampleGGX(vf2;f1;vf3;"
+ Name 74 "Xi"
+ Name 75 "roughness2"
+ Name 76 "N"
+ Name 83 "iTDDistributionGGX(vf3;vf3;f1;"
+ Name 80 "normal"
+ Name 81 "half_vector"
+ Name 82 "roughness2"
+ Name 88 "iTDCalcF(vf3;f1;"
+ Name 86 "F0"
+ Name 87 "VdotH"
+ Name 94 "iTDCalcG(f1;f1;f1;"
+ Name 91 "NdotL"
+ Name 92 "NdotV"
+ Name 93 "k"
+ Name 96 "TDPBRResult"
+ MemberName 96(TDPBRResult) 0 "diffuse"
+ MemberName 96(TDPBRResult) 1 "specular"
+ MemberName 96(TDPBRResult) 2 "shadowStrength"
+ Name 107 "TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;"
+ Name 98 "index"
+ Name 99 "diffuseColor"
+ Name 100 "specularColor"
+ Name 101 "worldSpacePos"
+ Name 102 "normal"
+ Name 103 "shadowStrength"
+ Name 104 "shadowColor"
+ Name 105 "camVector"
+ Name 106 "roughness"
+ Name 122 "TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;"
+ Name 110 "diffuseContrib"
+ Name 111 "specularContrib"
+ Name 112 "shadowStrengthOut"
+ Name 113 "index"
+ Name 114 "diffuseColor"
+ Name 115 "specularColor"
+ Name 116 "worldSpacePos"
+ Name 117 "normal"
+ Name 118 "shadowStrength"
+ Name 119 "shadowColor"
+ Name 120 "camVector"
+ Name 121 "roughness"
+ Name 136 "TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;"
+ Name 125 "diffuseContrib"
+ Name 126 "specularContrib"
+ Name 127 "index"
+ Name 128 "diffuseColor"
+ Name 129 "specularColor"
+ Name 130 "worldSpacePos"
+ Name 131 "normal"
+ Name 132 "shadowStrength"
+ Name 133 "shadowColor"
+ Name 134 "camVector"
+ Name 135 "roughness"
+ Name 146 "TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;"
+ Name 139 "index"
+ Name 140 "diffuseColor"
+ Name 141 "specularColor"
+ Name 142 "normal"
+ Name 143 "camVector"
+ Name 144 "roughness"
+ Name 145 "ambientOcclusion"
+ Name 158 "TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1;"
+ Name 149 "diffuseContrib"
+ Name 150 "specularContrib"
+ Name 151 "index"
+ Name 152 "diffuseColor"
+ Name 153 "specularColor"
+ Name 154 "normal"
+ Name 155 "camVector"
+ Name 156 "roughness"
+ Name 157 "ambientOcclusion"
+ Name 160 "TDPhongResult"
+ MemberName 160(TDPhongResult) 0 "diffuse"
+ MemberName 160(TDPhongResult) 1 "specular"
+ MemberName 160(TDPhongResult) 2 "specular2"
+ MemberName 160(TDPhongResult) 3 "shadowStrength"
+ Name 170 "TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1;"
+ Name 162 "index"
+ Name 163 "worldSpacePos"
+ Name 164 "normal"
+ Name 165 "shadowStrength"
+ Name 166 "shadowColor"
+ Name 167 "camVector"
+ Name 168 "shininess"
+ Name 169 "shininess2"
+ Name 185 "TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1;"
+ Name 173 "diffuseContrib"
+ Name 174 "specularContrib"
+ Name 175 "specularContrib2"
+ Name 176 "shadowStrengthOut"
+ Name 177 "index"
+ Name 178 "worldSpacePos"
+ Name 179 "normal"
+ Name 180 "shadowStrength"
+ Name 181 "shadowColor"
+ Name 182 "camVector"
+ Name 183 "shininess"
+ Name 184 "shininess2"
+ Name 199 "TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1;"
+ Name 188 "diffuseContrib"
+ Name 189 "specularContrib"
+ Name 190 "specularContrib2"
+ Name 191 "index"
+ Name 192 "worldSpacePos"
+ Name 193 "normal"
+ Name 194 "shadowStrength"
+ Name 195 "shadowColor"
+ Name 196 "camVector"
+ Name 197 "shininess"
+ Name 198 "shininess2"
+ Name 211 "TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;"
+ Name 202 "diffuseContrib"
+ Name 203 "specularContrib"
+ Name 204 "index"
+ Name 205 "worldSpacePos"
+ Name 206 "normal"
+ Name 207 "shadowStrength"
+ Name 208 "shadowColor"
+ Name 209 "camVector"
+ Name 210 "shininess"
+ Name 223 "TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1;"
+ Name 214 "diffuseContrib"
+ Name 215 "specularContrib"
+ Name 216 "specularContrib2"
+ Name 217 "index"
+ Name 218 "worldSpacePos"
+ Name 219 "normal"
+ Name 220 "camVector"
+ Name 221 "shininess"
+ Name 222 "shininess2"
+ Name 233 "TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1;"
+ Name 226 "diffuseContrib"
+ Name 227 "specularContrib"
+ Name 228 "index"
+ Name 229 "worldSpacePos"
+ Name 230 "normal"
+ Name 231 "camVector"
+ Name 232 "shininess"
+ Name 240 "TDLighting(vf3;i1;vf3;vf3;"
+ Name 236 "diffuseContrib"
+ Name 237 "index"
+ Name 238 "worldSpacePos"
+ Name 239 "normal"
+ Name 249 "TDLighting(vf3;i1;vf3;vf3;f1;vf3;"
+ Name 243 "diffuseContrib"
+ Name 244 "index"
+ Name 245 "worldSpacePos"
+ Name 246 "normal"
+ Name 247 "shadowStrength"
+ Name 248 "shadowColor"
+ Name 255 "TDProjMap(i1;vf3;vf4;"
+ Name 252 "index"
+ Name 253 "worldSpacePos"
+ Name 254 "defaultColor"
+ Name 261 "TDFog(vf4;vf3;i1;"
+ Name 258 "color"
+ Name 259 "lightingSpacePosition"
+ Name 260 "cameraIndex"
+ Name 266 "TDFog(vf4;vf3;"
+ Name 264 "color"
+ Name 265 "lightingSpacePosition"
+ Name 271 "TDInstanceTexCoord(i1;vf3;"
+ Name 269 "index"
+ Name 270 "t"
+ Name 275 "TDInstanceActive(i1;"
+ Name 274 "index"
+ Name 281 "iTDInstanceTranslate(i1;b1;"
+ Name 279 "index"
+ Name 280 "instanceActive"
+ Name 285 "TDInstanceTranslate(i1;"
+ Name 284 "index"
+ Name 290 "TDInstanceRotateMat(i1;"
+ Name 289 "index"
+ Name 293 "TDInstanceScale(i1;"
+ Name 292 "index"
+ Name 296 "TDInstancePivot(i1;"
+ Name 295 "index"
+ Name 299 "TDInstanceRotTo(i1;"
+ Name 298 "index"
+ Name 302 "TDInstanceRotUp(i1;"
+ Name 301 "index"
+ Name 307 "TDInstanceMat(i1;"
+ Name 306 "id"
+ Name 310 "TDInstanceMat3(i1;"
+ Name 309 "id"
+ Name 313 "TDInstanceMat3ForNorm(i1;"
+ Name 312 "id"
+ Name 318 "TDInstanceColor(i1;vf4;"
+ Name 316 "index"
+ Name 317 "curColor"
+ Name 321 "TDOutputSwizzle(vf4;"
+ Name 320 "c"
+ Name 327 "TDOutputSwizzle(vu4;"
+ Name 326 "c"
+ Name 330 "outcol"
+ Name 333 "texCoord0"
+ Name 334 "Vertex"
+ MemberName 334(Vertex) 0 "color"
+ MemberName 334(Vertex) 1 "worldSpacePos"
+ MemberName 334(Vertex) 2 "texCoord0"
+ MemberName 334(Vertex) 3 "cameraIndex"
+ MemberName 334(Vertex) 4 "instance"
+ Name 336 "iVert"
+ Name 341 "actualTexZ"
+ Name 349 "instanceLoop"
+ Name 359 "colorMapColor"
+ Name 363 "sColorMap"
+ Name 367 "red"
+ Name 374 "gl_DefaultUniformBlock"
+ MemberName 374(gl_DefaultUniformBlock) 0 "uTDInstanceIDOffset"
+ MemberName 374(gl_DefaultUniformBlock) 1 "uTDNumInstances"
+ MemberName 374(gl_DefaultUniformBlock) 2 "uTDAlphaTestVal"
+ MemberName 374(gl_DefaultUniformBlock) 3 "uConstant"
+ MemberName 374(gl_DefaultUniformBlock) 4 "uShadowStrength"
+ MemberName 374(gl_DefaultUniformBlock) 5 "uShadowColor"
+ MemberName 374(gl_DefaultUniformBlock) 6 "uDiffuseColor"
+ MemberName 374(gl_DefaultUniformBlock) 7 "uAmbientColor"
+ Name 376 ""
+ Name 401 "alpha"
+ Name 409 "param"
+ Name 422 "param"
+ Name 429 "oFragColor"
+ Name 430 "param"
+ Name 435 "i"
+ Name 452 "d"
+ Name 456 "sTDNoiseMap"
+ Name 458 "gl_FragCoord"
+ Name 485 "gl_FrontFacing"
+ Name 555 "param"
+ Name 561 "a"
+ Name 563 "phi"
+ Name 568 "cosTheta"
+ Name 582 "sinTheta"
+ Name 588 "H"
+ Name 601 "upVector"
+ Name 612 "tangentX"
+ Name 617 "tangentY"
+ Name 621 "worldResult"
+ Name 639 "NdotH"
+ Name 645 "alpha2"
+ Name 649 "denom"
+ Name 686 "Gl"
+ Name 694 "Gv"
+ Name 708 "res"
+ Name 712 "res"
+ Name 713 "param"
+ Name 715 "param"
+ Name 717 "param"
+ Name 719 "param"
+ Name 721 "param"
+ Name 723 "param"
+ Name 725 "param"
+ Name 727 "param"
+ Name 729 "param"
+ Name 738 "res"
+ Name 739 "param"
+ Name 741 "param"
+ Name 743 "param"
+ Name 745 "param"
+ Name 747 "param"
+ Name 749 "param"
+ Name 751 "param"
+ Name 753 "param"
+ Name 755 "param"
+ Name 762 "res"
+ Name 766 "res"
+ Name 767 "param"
+ Name 769 "param"
+ Name 771 "param"
+ Name 773 "param"
+ Name 775 "param"
+ Name 777 "param"
+ Name 779 "param"
+ Name 790 "res"
+ Name 804 "res"
+ Name 822 "res"
+ Name 838 "res"
+ Name 852 "res"
+ Name 868 "res"
+ Name 882 "res"
+ Name 894 "res"
+ Name 917 "param"
+ Name 919 "param"
+ Name 921 "param"
+ Name 925 "coord"
+ Name 927 "samp"
+ Name 931 "sTDInstanceTexCoord"
+ Name 936 "v"
+ Name 955 "coord"
+ Name 957 "samp"
+ Name 958 "sTDInstanceT"
+ Name 963 "v"
+ Name 970 "origIndex"
+ Name 976 "coord"
+ Name 978 "samp"
+ Name 983 "v"
+ Name 1003 "coord"
+ Name 1005 "samp"
+ Name 1010 "v"
+ Name 1027 "v"
+ Name 1029 "m"
+ Name 1039 "v"
+ Name 1047 "v"
+ Name 1055 "v"
+ Name 1063 "v"
+ Name 1067 "instanceActive"
+ Name 1069 "t"
+ Name 1070 "param"
+ Name 1072 "param"
+ Name 1082 "m"
+ Name 1088 "tt"
+ Name 1201 "m"
+ Name 1205 "m"
+ Name 1206 "param"
+ Name 1216 "coord"
+ Name 1218 "samp"
+ Name 1219 "sTDInstanceColor"
+ Name 1224 "v"
+ Name 1253 "TDMatrix"
+ MemberName 1253(TDMatrix) 0 "world"
+ MemberName 1253(TDMatrix) 1 "worldInverse"
+ MemberName 1253(TDMatrix) 2 "worldCam"
+ MemberName 1253(TDMatrix) 3 "worldCamInverse"
+ MemberName 1253(TDMatrix) 4 "cam"
+ MemberName 1253(TDMatrix) 5 "camInverse"
+ MemberName 1253(TDMatrix) 6 "camProj"
+ MemberName 1253(TDMatrix) 7 "camProjInverse"
+ MemberName 1253(TDMatrix) 8 "proj"
+ MemberName 1253(TDMatrix) 9 "projInverse"
+ MemberName 1253(TDMatrix) 10 "worldCamProj"
+ MemberName 1253(TDMatrix) 11 "worldCamProjInverse"
+ MemberName 1253(TDMatrix) 12 "quadReproject"
+ MemberName 1253(TDMatrix) 13 "worldForNormals"
+ MemberName 1253(TDMatrix) 14 "camForNormals"
+ MemberName 1253(TDMatrix) 15 "worldCamForNormals"
+ Name 1255 "TDMatricesBlock"
+ MemberName 1255(TDMatricesBlock) 0 "uTDMats"
+ Name 1257 ""
+ Name 1258 "TDCameraInfo"
+ MemberName 1258(TDCameraInfo) 0 "nearFar"
+ MemberName 1258(TDCameraInfo) 1 "fog"
+ MemberName 1258(TDCameraInfo) 2 "fogColor"
+ MemberName 1258(TDCameraInfo) 3 "renderTOPCameraIndex"
+ Name 1260 "TDCameraInfoBlock"
+ MemberName 1260(TDCameraInfoBlock) 0 "uTDCamInfos"
+ Name 1262 ""
+ Name 1263 "TDGeneral"
+ MemberName 1263(TDGeneral) 0 "ambientColor"
+ MemberName 1263(TDGeneral) 1 "nearFar"
+ MemberName 1263(TDGeneral) 2 "viewport"
+ MemberName 1263(TDGeneral) 3 "viewportRes"
+ MemberName 1263(TDGeneral) 4 "fog"
+ MemberName 1263(TDGeneral) 5 "fogColor"
+ Name 1264 "TDGeneralBlock"
+ MemberName 1264(TDGeneralBlock) 0 "uTDGeneral"
+ Name 1266 ""
+ Name 1270 "sTDSineLookup"
+ Name 1271 "sTDWhite2D"
+ Name 1275 "sTDWhite3D"
+ Name 1276 "sTDWhite2DArray"
+ Name 1280 "sTDWhiteCube"
+ Name 1281 "TDLight"
+ MemberName 1281(TDLight) 0 "position"
+ MemberName 1281(TDLight) 1 "direction"
+ MemberName 1281(TDLight) 2 "diffuse"
+ MemberName 1281(TDLight) 3 "nearFar"
+ MemberName 1281(TDLight) 4 "lightSize"
+ MemberName 1281(TDLight) 5 "misc"
+ MemberName 1281(TDLight) 6 "coneLookupScaleBias"
+ MemberName 1281(TDLight) 7 "attenScaleBiasRoll"
+ MemberName 1281(TDLight) 8 "shadowMapMatrix"
+ MemberName 1281(TDLight) 9 "shadowMapCamMatrix"
+ MemberName 1281(TDLight) 10 "shadowMapRes"
+ MemberName 1281(TDLight) 11 "projMapMatrix"
+ Name 1283 "TDLightBlock"
+ MemberName 1283(TDLightBlock) 0 "uTDLights"
+ Name 1285 ""
+ Name 1286 "TDEnvLight"
+ MemberName 1286(TDEnvLight) 0 "color"
+ MemberName 1286(TDEnvLight) 1 "rotate"
+ Name 1288 "TDEnvLightBlock"
+ MemberName 1288(TDEnvLightBlock) 0 "uTDEnvLights"
+ Name 1290 ""
+ Name 1293 "TDEnvLightBuffer"
+ MemberName 1293(TDEnvLightBuffer) 0 "shCoeffs"
+ Name 1296 "uTDEnvLightBuffers"
+ MemberDecorate 334(Vertex) 3 Flat
+ MemberDecorate 334(Vertex) 4 Flat
+ Decorate 334(Vertex) Block
+ Decorate 336(iVert) Location 0
+ Decorate 363(sColorMap) DescriptorSet 0
+ Decorate 363(sColorMap) Binding 2
+ MemberDecorate 374(gl_DefaultUniformBlock) 0 Offset 0
+ MemberDecorate 374(gl_DefaultUniformBlock) 1 Offset 4
+ MemberDecorate 374(gl_DefaultUniformBlock) 2 Offset 8
+ MemberDecorate 374(gl_DefaultUniformBlock) 3 Offset 16
+ MemberDecorate 374(gl_DefaultUniformBlock) 4 Offset 28
+ MemberDecorate 374(gl_DefaultUniformBlock) 5 Offset 32
+ MemberDecorate 374(gl_DefaultUniformBlock) 6 Offset 48
+ MemberDecorate 374(gl_DefaultUniformBlock) 7 Offset 64
+ Decorate 374(gl_DefaultUniformBlock) Block
+ Decorate 376 DescriptorSet 0
+ Decorate 376 Binding 0
+ Decorate 429(oFragColor) Location 0
+ Decorate 456(sTDNoiseMap) DescriptorSet 0
+ Decorate 456(sTDNoiseMap) Binding 3
+ Decorate 458(gl_FragCoord) BuiltIn FragCoord
+ Decorate 485(gl_FrontFacing) BuiltIn FrontFacing
+ Decorate 931(sTDInstanceTexCoord) DescriptorSet 0
+ Decorate 931(sTDInstanceTexCoord) Binding 16
+ Decorate 958(sTDInstanceT) DescriptorSet 0
+ Decorate 958(sTDInstanceT) Binding 15
+ Decorate 1219(sTDInstanceColor) DescriptorSet 0
+ Decorate 1219(sTDInstanceColor) Binding 17
+ MemberDecorate 1253(TDMatrix) 0 ColMajor
+ MemberDecorate 1253(TDMatrix) 0 Offset 0
+ MemberDecorate 1253(TDMatrix) 0 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 1 ColMajor
+ MemberDecorate 1253(TDMatrix) 1 Offset 64
+ MemberDecorate 1253(TDMatrix) 1 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 2 ColMajor
+ MemberDecorate 1253(TDMatrix) 2 Offset 128
+ MemberDecorate 1253(TDMatrix) 2 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 3 ColMajor
+ MemberDecorate 1253(TDMatrix) 3 Offset 192
+ MemberDecorate 1253(TDMatrix) 3 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 4 ColMajor
+ MemberDecorate 1253(TDMatrix) 4 Offset 256
+ MemberDecorate 1253(TDMatrix) 4 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 5 ColMajor
+ MemberDecorate 1253(TDMatrix) 5 Offset 320
+ MemberDecorate 1253(TDMatrix) 5 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 6 ColMajor
+ MemberDecorate 1253(TDMatrix) 6 Offset 384
+ MemberDecorate 1253(TDMatrix) 6 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 7 ColMajor
+ MemberDecorate 1253(TDMatrix) 7 Offset 448
+ MemberDecorate 1253(TDMatrix) 7 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 8 ColMajor
+ MemberDecorate 1253(TDMatrix) 8 Offset 512
+ MemberDecorate 1253(TDMatrix) 8 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 9 ColMajor
+ MemberDecorate 1253(TDMatrix) 9 Offset 576
+ MemberDecorate 1253(TDMatrix) 9 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 10 ColMajor
+ MemberDecorate 1253(TDMatrix) 10 Offset 640
+ MemberDecorate 1253(TDMatrix) 10 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 11 ColMajor
+ MemberDecorate 1253(TDMatrix) 11 Offset 704
+ MemberDecorate 1253(TDMatrix) 11 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 12 ColMajor
+ MemberDecorate 1253(TDMatrix) 12 Offset 768
+ MemberDecorate 1253(TDMatrix) 12 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 13 ColMajor
+ MemberDecorate 1253(TDMatrix) 13 Offset 832
+ MemberDecorate 1253(TDMatrix) 13 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 14 ColMajor
+ MemberDecorate 1253(TDMatrix) 14 Offset 880
+ MemberDecorate 1253(TDMatrix) 14 MatrixStride 16
+ MemberDecorate 1253(TDMatrix) 15 ColMajor
+ MemberDecorate 1253(TDMatrix) 15 Offset 928
+ MemberDecorate 1253(TDMatrix) 15 MatrixStride 16
+ Decorate 1254 ArrayStride 976
+ MemberDecorate 1255(TDMatricesBlock) 0 Offset 0
+ Decorate 1255(TDMatricesBlock) Block
+ Decorate 1257 DescriptorSet 0
+ Decorate 1257 Binding 1
+ MemberDecorate 1258(TDCameraInfo) 0 Offset 0
+ MemberDecorate 1258(TDCameraInfo) 1 Offset 16
+ MemberDecorate 1258(TDCameraInfo) 2 Offset 32
+ MemberDecorate 1258(TDCameraInfo) 3 Offset 48
+ Decorate 1259 ArrayStride 64
+ MemberDecorate 1260(TDCameraInfoBlock) 0 Offset 0
+ Decorate 1260(TDCameraInfoBlock) Block
+ Decorate 1262 DescriptorSet 0
+ Decorate 1262 Binding 0
+ MemberDecorate 1263(TDGeneral) 0 Offset 0
+ MemberDecorate 1263(TDGeneral) 1 Offset 16
+ MemberDecorate 1263(TDGeneral) 2 Offset 32
+ MemberDecorate 1263(TDGeneral) 3 Offset 48
+ MemberDecorate 1263(TDGeneral) 4 Offset 64
+ MemberDecorate 1263(TDGeneral) 5 Offset 80
+ MemberDecorate 1264(TDGeneralBlock) 0 Offset 0
+ Decorate 1264(TDGeneralBlock) Block
+ Decorate 1266 DescriptorSet 0
+ Decorate 1266 Binding 0
+ Decorate 1270(sTDSineLookup) DescriptorSet 0
+ Decorate 1270(sTDSineLookup) Binding 0
+ Decorate 1271(sTDWhite2D) DescriptorSet 0
+ Decorate 1271(sTDWhite2D) Binding 0
+ Decorate 1275(sTDWhite3D) DescriptorSet 0
+ Decorate 1275(sTDWhite3D) Binding 0
+ Decorate 1276(sTDWhite2DArray) DescriptorSet 0
+ Decorate 1276(sTDWhite2DArray) Binding 0
+ Decorate 1280(sTDWhiteCube) DescriptorSet 0
+ Decorate 1280(sTDWhiteCube) Binding 0
+ MemberDecorate 1281(TDLight) 0 Offset 0
+ MemberDecorate 1281(TDLight) 1 Offset 16
+ MemberDecorate 1281(TDLight) 2 Offset 32
+ MemberDecorate 1281(TDLight) 3 Offset 48
+ MemberDecorate 1281(TDLight) 4 Offset 64
+ MemberDecorate 1281(TDLight) 5 Offset 80
+ MemberDecorate 1281(TDLight) 6 Offset 96
+ MemberDecorate 1281(TDLight) 7 Offset 112
+ MemberDecorate 1281(TDLight) 8 ColMajor
+ MemberDecorate 1281(TDLight) 8 Offset 128
+ MemberDecorate 1281(TDLight) 8 MatrixStride 16
+ MemberDecorate 1281(TDLight) 9 ColMajor
+ MemberDecorate 1281(TDLight) 9 Offset 192
+ MemberDecorate 1281(TDLight) 9 MatrixStride 16
+ MemberDecorate 1281(TDLight) 10 Offset 256
+ MemberDecorate 1281(TDLight) 11 ColMajor
+ MemberDecorate 1281(TDLight) 11 Offset 272
+ MemberDecorate 1281(TDLight) 11 MatrixStride 16
+ Decorate 1282 ArrayStride 336
+ MemberDecorate 1283(TDLightBlock) 0 Offset 0
+ Decorate 1283(TDLightBlock) Block
+ Decorate 1285 DescriptorSet 0
+ Decorate 1285 Binding 0
+ MemberDecorate 1286(TDEnvLight) 0 Offset 0
+ MemberDecorate 1286(TDEnvLight) 1 ColMajor
+ MemberDecorate 1286(TDEnvLight) 1 Offset 16
+ MemberDecorate 1286(TDEnvLight) 1 MatrixStride 16
+ Decorate 1287 ArrayStride 64
+ MemberDecorate 1288(TDEnvLightBlock) 0 Offset 0
+ Decorate 1288(TDEnvLightBlock) Block
+ Decorate 1290 DescriptorSet 0
+ Decorate 1290 Binding 0
+ Decorate 1292 ArrayStride 16
+ MemberDecorate 1293(TDEnvLightBuffer) 0 Restrict
+ MemberDecorate 1293(TDEnvLightBuffer) 0 NonWritable
+ MemberDecorate 1293(TDEnvLightBuffer) 0 Offset 0
+ Decorate 1293(TDEnvLightBuffer) BufferBlock
+ Decorate 1296(uTDEnvLightBuffers) DescriptorSet 0
+ Decorate 1296(uTDEnvLightBuffers) Binding 0
+ 2: TypeVoid
+ 3: TypeFunction 2
+ 6: TypeFloat 32
+ 7: TypeVector 6(float) 4
+ 8: TypePointer Function 7(fvec4)
+ 9: TypeFunction 7(fvec4) 8(ptr)
+ 20: TypeVector 6(float) 3
+ 21: TypePointer Function 20(fvec3)
+ 22: TypeBool
+ 23: TypeFunction 22(bool) 21(ptr) 21(ptr)
+ 28: TypeInt 32 1
+ 29: TypePointer Function 28(int)
+ 30: TypePointer Function 6(float)
+ 31: TypeFunction 6(float) 29(ptr) 30(ptr)
+ 36: TypeFunction 2 30(ptr)
+ 40: TypeFunction 6(float) 29(ptr) 21(ptr)
+ 45: TypeFunction 6(float) 29(ptr) 21(ptr) 29(ptr) 29(ptr)
+ 60: TypeInt 32 0
+ 61: TypePointer Function 60(int)
+ 62: TypeFunction 6(float) 61(ptr)
+ 66: TypeVector 6(float) 2
+ 67: TypeFunction 66(fvec2) 61(ptr) 61(ptr)
+ 72: TypePointer Function 66(fvec2)
+ 73: TypeFunction 20(fvec3) 72(ptr) 30(ptr) 21(ptr)
+ 79: TypeFunction 6(float) 21(ptr) 21(ptr) 30(ptr)
+ 85: TypeFunction 20(fvec3) 21(ptr) 30(ptr)
+ 90: TypeFunction 6(float) 30(ptr) 30(ptr) 30(ptr)
+ 96(TDPBRResult): TypeStruct 20(fvec3) 20(fvec3) 6(float)
+ 97: TypeFunction 96(TDPBRResult) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 109: TypeFunction 2 21(ptr) 21(ptr) 30(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 124: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 138: TypeFunction 96(TDPBRResult) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 148: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+160(TDPhongResult): TypeStruct 20(fvec3) 20(fvec3) 20(fvec3) 6(float)
+ 161: TypeFunction 160(TDPhongResult) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 172: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 30(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 187: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 201: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 213: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr)
+ 225: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr)
+ 235: TypeFunction 2 21(ptr) 29(ptr) 21(ptr) 21(ptr)
+ 242: TypeFunction 2 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr)
+ 251: TypeFunction 7(fvec4) 29(ptr) 21(ptr) 8(ptr)
+ 257: TypeFunction 7(fvec4) 8(ptr) 21(ptr) 29(ptr)
+ 263: TypeFunction 7(fvec4) 8(ptr) 21(ptr)
+ 268: TypeFunction 20(fvec3) 29(ptr) 21(ptr)
+ 273: TypeFunction 22(bool) 29(ptr)
+ 277: TypePointer Function 22(bool)
+ 278: TypeFunction 20(fvec3) 29(ptr) 277(ptr)
+ 283: TypeFunction 20(fvec3) 29(ptr)
+ 287: TypeMatrix 20(fvec3) 3
+ 288: TypeFunction 287 29(ptr)
+ 304: TypeMatrix 7(fvec4) 4
+ 305: TypeFunction 304 29(ptr)
+ 315: TypeFunction 7(fvec4) 29(ptr) 8(ptr)
+ 323: TypeVector 60(int) 4
+ 324: TypePointer Function 323(ivec4)
+ 325: TypeFunction 323(ivec4) 324(ptr)
+ 331: 6(float) Constant 0
+ 332: 7(fvec4) ConstantComposite 331 331 331 331
+ 334(Vertex): TypeStruct 7(fvec4) 20(fvec3) 20(fvec3) 28(int) 28(int)
+ 335: TypePointer Input 334(Vertex)
+ 336(iVert): 335(ptr) Variable Input
+ 337: 28(int) Constant 2
+ 338: TypePointer Input 20(fvec3)
+ 342: 60(int) Constant 2
+ 347: 6(float) Constant 1157627904
+ 353: 28(int) Constant 2048
+ 360: TypeImage 6(float) 2D array sampled format:Unknown
+ 361: TypeSampledImage 360
+ 362: TypePointer UniformConstant 361
+ 363(sColorMap): 362(ptr) Variable UniformConstant
+374(gl_DefaultUniformBlock): TypeStruct 28(int) 28(int) 6(float) 20(fvec3) 6(float) 20(fvec3) 7(fvec4) 7(fvec4)
+ 375: TypePointer Uniform 374(gl_DefaultUniformBlock)
+ 376: 375(ptr) Variable Uniform
+ 377: 28(int) Constant 3
+ 378: TypePointer Uniform 20(fvec3)
+ 381: 28(int) Constant 0
+ 382: TypePointer Input 7(fvec4)
+ 390: 60(int) Constant 0
+ 393: 60(int) Constant 1
+ 402: 60(int) Constant 3
+ 403: TypePointer Input 6(float)
+ 427: TypeArray 7(fvec4) 393
+ 428: TypePointer Output 427
+ 429(oFragColor): 428(ptr) Variable Output
+ 433: TypePointer Output 7(fvec4)
+ 436: 28(int) Constant 1
+ 453: TypeImage 6(float) 2D sampled format:Unknown
+ 454: TypeSampledImage 453
+ 455: TypePointer UniformConstant 454
+456(sTDNoiseMap): 455(ptr) Variable UniformConstant
+458(gl_FragCoord): 382(ptr) Variable Input
+ 461: 6(float) Constant 1132462080
+ 466: 6(float) Constant 1056964608
+ 484: TypePointer Input 22(bool)
+485(gl_FrontFacing): 484(ptr) Variable Input
+ 489: 6(float) Constant 1065353216
+ 501: 60(int) Constant 16
+ 507: 60(int) Constant 1431655765
+ 511: 60(int) Constant 2863311530
+ 516: 60(int) Constant 858993459
+ 520: 60(int) Constant 3435973836
+ 525: 60(int) Constant 252645135
+ 527: 60(int) Constant 4
+ 530: 60(int) Constant 4042322160
+ 535: 60(int) Constant 16711935
+ 537: 60(int) Constant 8
+ 540: 60(int) Constant 4278255360
+ 546: 6(float) Constant 796917760
+ 564: 6(float) Constant 1086918619
+ 605: 6(float) Constant 1065336439
+ 607: 20(fvec3) ConstantComposite 331 331 489
+ 608: 20(fvec3) ConstantComposite 489 331 331
+ 609: TypeVector 22(bool) 3
+ 643: 6(float) Constant 897988541
+ 657: 6(float) Constant 841731191
+ 661: 6(float) Constant 1078530011
+ 670: 20(fvec3) ConstantComposite 489 489 489
+ 673: 6(float) Constant 1073741824
+ 674: 6(float) Constant 3232874585
+ 677: 6(float) Constant 1088386572
+ 707: TypePointer Function 96(TDPBRResult)
+ 789: TypePointer Function 160(TDPhongResult)
+ 791: 20(fvec3) ConstantComposite 331 331 331
+ 928: TypeImage 6(float) Buffer sampled format:Unknown
+ 929: TypeSampledImage 928
+ 930: TypePointer UniformConstant 929
+931(sTDInstanceTexCoord): 930(ptr) Variable UniformConstant
+ 950: TypePointer Uniform 28(int)
+958(sTDInstanceT): 930(ptr) Variable UniformConstant
+ 1028: TypePointer Function 287
+ 1030: 20(fvec3) ConstantComposite 331 489 331
+ 1031: 287 ConstantComposite 608 1030 607
+ 1068: 22(bool) ConstantTrue
+ 1079: 304 ConstantComposite 332 332 332 332
+ 1081: TypePointer Function 304
+ 1083: 7(fvec4) ConstantComposite 489 331 331 331
+ 1084: 7(fvec4) ConstantComposite 331 489 331 331
+ 1085: 7(fvec4) ConstantComposite 331 331 489 331
+ 1086: 7(fvec4) ConstantComposite 331 331 331 489
+ 1087: 304 ConstantComposite 1083 1084 1085 1086
+1219(sTDInstanceColor): 930(ptr) Variable UniformConstant
+ 1253(TDMatrix): TypeStruct 304 304 304 304 304 304 304 304 304 304 304 304 304 287 287 287
+ 1254: TypeArray 1253(TDMatrix) 393
+1255(TDMatricesBlock): TypeStruct 1254
+ 1256: TypePointer Uniform 1255(TDMatricesBlock)
+ 1257: 1256(ptr) Variable Uniform
+1258(TDCameraInfo): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 28(int)
+ 1259: TypeArray 1258(TDCameraInfo) 393
+1260(TDCameraInfoBlock): TypeStruct 1259
+ 1261: TypePointer Uniform 1260(TDCameraInfoBlock)
+ 1262: 1261(ptr) Variable Uniform
+ 1263(TDGeneral): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4)
+1264(TDGeneralBlock): TypeStruct 1263(TDGeneral)
+ 1265: TypePointer Uniform 1264(TDGeneralBlock)
+ 1266: 1265(ptr) Variable Uniform
+ 1267: TypeImage 6(float) 1D sampled format:Unknown
+ 1268: TypeSampledImage 1267
+ 1269: TypePointer UniformConstant 1268
+1270(sTDSineLookup): 1269(ptr) Variable UniformConstant
+1271(sTDWhite2D): 455(ptr) Variable UniformConstant
+ 1272: TypeImage 6(float) 3D sampled format:Unknown
+ 1273: TypeSampledImage 1272
+ 1274: TypePointer UniformConstant 1273
+1275(sTDWhite3D): 1274(ptr) Variable UniformConstant
+1276(sTDWhite2DArray): 362(ptr) Variable UniformConstant
+ 1277: TypeImage 6(float) Cube sampled format:Unknown
+ 1278: TypeSampledImage 1277
+ 1279: TypePointer UniformConstant 1278
+1280(sTDWhiteCube): 1279(ptr) Variable UniformConstant
+ 1281(TDLight): TypeStruct 7(fvec4) 20(fvec3) 20(fvec3) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 304 304 7(fvec4) 304
+ 1282: TypeArray 1281(TDLight) 393
+1283(TDLightBlock): TypeStruct 1282
+ 1284: TypePointer Uniform 1283(TDLightBlock)
+ 1285: 1284(ptr) Variable Uniform
+1286(TDEnvLight): TypeStruct 20(fvec3) 287
+ 1287: TypeArray 1286(TDEnvLight) 393
+1288(TDEnvLightBlock): TypeStruct 1287
+ 1289: TypePointer Uniform 1288(TDEnvLightBlock)
+ 1290: 1289(ptr) Variable Uniform
+ 1291: 60(int) Constant 9
+ 1292: TypeArray 20(fvec3) 1291
+1293(TDEnvLightBuffer): TypeStruct 1292
+ 1294: TypeArray 1293(TDEnvLightBuffer) 393
+ 1295: TypePointer Uniform 1294
+1296(uTDEnvLightBuffers): 1295(ptr) Variable Uniform
+ 4(main): 2 Function None 3
+ 5: Label
+ 330(outcol): 8(ptr) Variable Function
+ 333(texCoord0): 21(ptr) Variable Function
+ 341(actualTexZ): 30(ptr) Variable Function
+349(instanceLoop): 30(ptr) Variable Function
+359(colorMapColor): 8(ptr) Variable Function
+ 367(red): 30(ptr) Variable Function
+ 401(alpha): 30(ptr) Variable Function
+ 409(param): 8(ptr) Variable Function
+ 422(param): 30(ptr) Variable Function
+ 430(param): 8(ptr) Variable Function
+ 435(i): 29(ptr) Variable Function
+ 329: 2 FunctionCall 15(TDCheckDiscard()
+ Store 330(outcol) 332
+ 339: 338(ptr) AccessChain 336(iVert) 337
+ 340: 20(fvec3) Load 339
+ Store 333(texCoord0) 340
+ 343: 30(ptr) AccessChain 333(texCoord0) 342
+ 344: 6(float) Load 343
+ 345: 28(int) ConvertFToS 344
+ 346: 6(float) ConvertSToF 345
+ 348: 6(float) FMod 346 347
+ Store 341(actualTexZ) 348
+ 350: 30(ptr) AccessChain 333(texCoord0) 342
+ 351: 6(float) Load 350
+ 352: 28(int) ConvertFToS 351
+ 354: 28(int) SDiv 352 353
+ 355: 6(float) ConvertSToF 354
+ 356: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 355
+ Store 349(instanceLoop) 356
+ 357: 6(float) Load 341(actualTexZ)
+ 358: 30(ptr) AccessChain 333(texCoord0) 342
+ Store 358 357
+ 364: 361 Load 363(sColorMap)
+ 365: 20(fvec3) Load 333(texCoord0)
+ 366: 7(fvec4) ImageSampleImplicitLod 364 365
+ Store 359(colorMapColor) 366
+ 368: 6(float) Load 349(instanceLoop)
+ 369: 28(int) ConvertFToS 368
+ 370: 30(ptr) AccessChain 359(colorMapColor) 369
+ 371: 6(float) Load 370
+ Store 367(red) 371
+ 372: 6(float) Load 367(red)
+ 373: 7(fvec4) CompositeConstruct 372 372 372 372
+ Store 359(colorMapColor) 373
+ 379: 378(ptr) AccessChain 376 377
+ 380: 20(fvec3) Load 379
+ 383: 382(ptr) AccessChain 336(iVert) 381
+ 384: 7(fvec4) Load 383
+ 385: 20(fvec3) VectorShuffle 384 384 0 1 2
+ 386: 20(fvec3) FMul 380 385
+ 387: 7(fvec4) Load 330(outcol)
+ 388: 20(fvec3) VectorShuffle 387 387 0 1 2
+ 389: 20(fvec3) FAdd 388 386
+ 391: 30(ptr) AccessChain 330(outcol) 390
+ 392: 6(float) CompositeExtract 389 0
+ Store 391 392
+ 394: 30(ptr) AccessChain 330(outcol) 393
+ 395: 6(float) CompositeExtract 389 1
+ Store 394 395
+ 396: 30(ptr) AccessChain 330(outcol) 342
+ 397: 6(float) CompositeExtract 389 2
+ Store 396 397
+ 398: 7(fvec4) Load 359(colorMapColor)
+ 399: 7(fvec4) Load 330(outcol)
+ 400: 7(fvec4) FMul 399 398
+ Store 330(outcol) 400
+ 404: 403(ptr) AccessChain 336(iVert) 381 402
+ 405: 6(float) Load 404
+ 406: 30(ptr) AccessChain 359(colorMapColor) 402
+ 407: 6(float) Load 406
+ 408: 6(float) FMul 405 407
+ Store 401(alpha) 408
+ 410: 7(fvec4) Load 330(outcol)
+ Store 409(param) 410
+ 411: 7(fvec4) FunctionCall 18(TDDither(vf4;) 409(param)
+ Store 330(outcol) 411
+ 412: 6(float) Load 401(alpha)
+ 413: 7(fvec4) Load 330(outcol)
+ 414: 20(fvec3) VectorShuffle 413 413 0 1 2
+ 415: 20(fvec3) VectorTimesScalar 414 412
+ 416: 30(ptr) AccessChain 330(outcol) 390
+ 417: 6(float) CompositeExtract 415 0
+ Store 416 417
+ 418: 30(ptr) AccessChain 330(outcol) 393
+ 419: 6(float) CompositeExtract 415 1
+ Store 418 419
+ 420: 30(ptr) AccessChain 330(outcol) 342
+ 421: 6(float) CompositeExtract 415 2
+ Store 420 421
+ 423: 6(float) Load 401(alpha)
+ Store 422(param) 423
+ 424: 2 FunctionCall 38(TDAlphaTest(f1;) 422(param)
+ 425: 6(float) Load 401(alpha)
+ 426: 30(ptr) AccessChain 330(outcol) 402
+ Store 426 425
+ 431: 7(fvec4) Load 330(outcol)
+ Store 430(param) 431
+ 432: 7(fvec4) FunctionCall 321(TDOutputSwizzle(vf4;) 430(param)
+ 434: 433(ptr) AccessChain 429(oFragColor) 381
+ Store 434 432
+ Store 435(i) 436
+ Branch 437
+ 437: Label
+ LoopMerge 439 440 None
+ Branch 441
+ 441: Label
+ 442: 28(int) Load 435(i)
+ 443: 22(bool) SLessThan 442 436
+ BranchConditional 443 438 439
+ 438: Label
+ 444: 28(int) Load 435(i)
+ 445: 433(ptr) AccessChain 429(oFragColor) 444
+ Store 445 332
+ Branch 440
+ 440: Label
+ 446: 28(int) Load 435(i)
+ 447: 28(int) IAdd 446 436
+ Store 435(i) 447
+ Branch 437
+ 439: Label
+ Return
+ FunctionEnd
+11(TDColor(vf4;): 7(fvec4) Function None 9
+ 10(color): 8(ptr) FunctionParameter
+ 12: Label
+ 448: 7(fvec4) Load 10(color)
+ ReturnValue 448
+ FunctionEnd
+13(TDCheckOrderIndTrans(): 2 Function None 3
+ 14: Label
+ Return
+ FunctionEnd
+15(TDCheckDiscard(): 2 Function None 3
+ 16: Label
+ 451: 2 FunctionCall 13(TDCheckOrderIndTrans()
+ Return
+ FunctionEnd
+18(TDDither(vf4;): 7(fvec4) Function None 9
+ 17(color): 8(ptr) FunctionParameter
+ 19: Label
+ 452(d): 30(ptr) Variable Function
+ 457: 454 Load 456(sTDNoiseMap)
+ 459: 7(fvec4) Load 458(gl_FragCoord)
+ 460: 66(fvec2) VectorShuffle 459 459 0 1
+ 462: 66(fvec2) CompositeConstruct 461 461
+ 463: 66(fvec2) FDiv 460 462
+ 464: 7(fvec4) ImageSampleImplicitLod 457 463
+ 465: 6(float) CompositeExtract 464 0
+ Store 452(d) 465
+ 467: 6(float) Load 452(d)
+ 468: 6(float) FSub 467 466
+ Store 452(d) 468
+ 469: 6(float) Load 452(d)
+ 470: 6(float) FDiv 469 461
+ Store 452(d) 470
+ 471: 7(fvec4) Load 17(color)
+ 472: 20(fvec3) VectorShuffle 471 471 0 1 2
+ 473: 6(float) Load 452(d)
+ 474: 20(fvec3) CompositeConstruct 473 473 473
+ 475: 20(fvec3) FAdd 472 474
+ 476: 30(ptr) AccessChain 17(color) 402
+ 477: 6(float) Load 476
+ 478: 6(float) CompositeExtract 475 0
+ 479: 6(float) CompositeExtract 475 1
+ 480: 6(float) CompositeExtract 475 2
+ 481: 7(fvec4) CompositeConstruct 478 479 480 477
+ ReturnValue 481
+ FunctionEnd
+26(TDFrontFacing(vf3;vf3;): 22(bool) Function None 23
+ 24(pos): 21(ptr) FunctionParameter
+ 25(normal): 21(ptr) FunctionParameter
+ 27: Label
+ 486: 22(bool) Load 485(gl_FrontFacing)
+ ReturnValue 486
+ FunctionEnd
+34(TDAttenuateLight(i1;f1;): 6(float) Function None 31
+ 32(index): 29(ptr) FunctionParameter
+ 33(lightDist): 30(ptr) FunctionParameter
+ 35: Label
+ ReturnValue 489
+ FunctionEnd
+38(TDAlphaTest(f1;): 2 Function None 36
+ 37(alpha): 30(ptr) FunctionParameter
+ 39: Label
+ Return
+ FunctionEnd
+43(TDHardShadow(i1;vf3;): 6(float) Function None 40
+ 41(lightIndex): 29(ptr) FunctionParameter
+42(worldSpacePos): 21(ptr) FunctionParameter
+ 44: Label
+ ReturnValue 331
+ FunctionEnd
+50(TDSoftShadow(i1;vf3;i1;i1;): 6(float) Function None 45
+ 46(lightIndex): 29(ptr) FunctionParameter
+47(worldSpacePos): 21(ptr) FunctionParameter
+ 48(samples): 29(ptr) FunctionParameter
+ 49(steps): 29(ptr) FunctionParameter
+ 51: Label
+ ReturnValue 331
+ FunctionEnd
+54(TDSoftShadow(i1;vf3;): 6(float) Function None 40
+ 52(lightIndex): 29(ptr) FunctionParameter
+53(worldSpacePos): 21(ptr) FunctionParameter
+ 55: Label
+ ReturnValue 331
+ FunctionEnd
+58(TDShadow(i1;vf3;): 6(float) Function None 40
+ 56(lightIndex): 29(ptr) FunctionParameter
+57(worldSpacePos): 21(ptr) FunctionParameter
+ 59: Label
+ ReturnValue 331
+ FunctionEnd
+64(iTDRadicalInverse_VdC(u1;): 6(float) Function None 62
+ 63(bits): 61(ptr) FunctionParameter
+ 65: Label
+ 500: 60(int) Load 63(bits)
+ 502: 60(int) ShiftLeftLogical 500 501
+ 503: 60(int) Load 63(bits)
+ 504: 60(int) ShiftRightLogical 503 501
+ 505: 60(int) BitwiseOr 502 504
+ Store 63(bits) 505
+ 506: 60(int) Load 63(bits)
+ 508: 60(int) BitwiseAnd 506 507
+ 509: 60(int) ShiftLeftLogical 508 393
+ 510: 60(int) Load 63(bits)
+ 512: 60(int) BitwiseAnd 510 511
+ 513: 60(int) ShiftRightLogical 512 393
+ 514: 60(int) BitwiseOr 509 513
+ Store 63(bits) 514
+ 515: 60(int) Load 63(bits)
+ 517: 60(int) BitwiseAnd 515 516
+ 518: 60(int) ShiftLeftLogical 517 342
+ 519: 60(int) Load 63(bits)
+ 521: 60(int) BitwiseAnd 519 520
+ 522: 60(int) ShiftRightLogical 521 342
+ 523: 60(int) BitwiseOr 518 522
+ Store 63(bits) 523
+ 524: 60(int) Load 63(bits)
+ 526: 60(int) BitwiseAnd 524 525
+ 528: 60(int) ShiftLeftLogical 526 527
+ 529: 60(int) Load 63(bits)
+ 531: 60(int) BitwiseAnd 529 530
+ 532: 60(int) ShiftRightLogical 531 527
+ 533: 60(int) BitwiseOr 528 532
+ Store 63(bits) 533
+ 534: 60(int) Load 63(bits)
+ 536: 60(int) BitwiseAnd 534 535
+ 538: 60(int) ShiftLeftLogical 536 537
+ 539: 60(int) Load 63(bits)
+ 541: 60(int) BitwiseAnd 539 540
+ 542: 60(int) ShiftRightLogical 541 537
+ 543: 60(int) BitwiseOr 538 542
+ Store 63(bits) 543
+ 544: 60(int) Load 63(bits)
+ 545: 6(float) ConvertUToF 544
+ 547: 6(float) FMul 545 546
+ ReturnValue 547
+ FunctionEnd
+70(iTDHammersley(u1;u1;): 66(fvec2) Function None 67
+ 68(i): 61(ptr) FunctionParameter
+ 69(N): 61(ptr) FunctionParameter
+ 71: Label
+ 555(param): 61(ptr) Variable Function
+ 550: 60(int) Load 68(i)
+ 551: 6(float) ConvertUToF 550
+ 552: 60(int) Load 69(N)
+ 553: 6(float) ConvertUToF 552
+ 554: 6(float) FDiv 551 553
+ 556: 60(int) Load 68(i)
+ Store 555(param) 556
+ 557: 6(float) FunctionCall 64(iTDRadicalInverse_VdC(u1;) 555(param)
+ 558: 66(fvec2) CompositeConstruct 554 557
+ ReturnValue 558
+ FunctionEnd
+77(iTDImportanceSampleGGX(vf2;f1;vf3;): 20(fvec3) Function None 73
+ 74(Xi): 72(ptr) FunctionParameter
+ 75(roughness2): 30(ptr) FunctionParameter
+ 76(N): 21(ptr) FunctionParameter
+ 78: Label
+ 561(a): 30(ptr) Variable Function
+ 563(phi): 30(ptr) Variable Function
+ 568(cosTheta): 30(ptr) Variable Function
+ 582(sinTheta): 30(ptr) Variable Function
+ 588(H): 21(ptr) Variable Function
+ 601(upVector): 21(ptr) Variable Function
+ 612(tangentX): 21(ptr) Variable Function
+ 617(tangentY): 21(ptr) Variable Function
+621(worldResult): 21(ptr) Variable Function
+ 562: 6(float) Load 75(roughness2)
+ Store 561(a) 562
+ 565: 30(ptr) AccessChain 74(Xi) 390
+ 566: 6(float) Load 565
+ 567: 6(float) FMul 564 566
+ Store 563(phi) 567
+ 569: 30(ptr) AccessChain 74(Xi) 393
+ 570: 6(float) Load 569
+ 571: 6(float) FSub 489 570
+ 572: 6(float) Load 561(a)
+ 573: 6(float) Load 561(a)
+ 574: 6(float) FMul 572 573
+ 575: 6(float) FSub 574 489
+ 576: 30(ptr) AccessChain 74(Xi) 393
+ 577: 6(float) Load 576
+ 578: 6(float) FMul 575 577
+ 579: 6(float) FAdd 489 578
+ 580: 6(float) FDiv 571 579
+ 581: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 580
+ Store 568(cosTheta) 581
+ 583: 6(float) Load 568(cosTheta)
+ 584: 6(float) Load 568(cosTheta)
+ 585: 6(float) FMul 583 584
+ 586: 6(float) FSub 489 585
+ 587: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 586
+ Store 582(sinTheta) 587
+ 589: 6(float) Load 582(sinTheta)
+ 590: 6(float) Load 563(phi)
+ 591: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 590
+ 592: 6(float) FMul 589 591
+ 593: 30(ptr) AccessChain 588(H) 390
+ Store 593 592
+ 594: 6(float) Load 582(sinTheta)
+ 595: 6(float) Load 563(phi)
+ 596: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 595
+ 597: 6(float) FMul 594 596
+ 598: 30(ptr) AccessChain 588(H) 393
+ Store 598 597
+ 599: 6(float) Load 568(cosTheta)
+ 600: 30(ptr) AccessChain 588(H) 342
+ Store 600 599
+ 602: 30(ptr) AccessChain 76(N) 342
+ 603: 6(float) Load 602
+ 604: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 603
+ 606: 22(bool) FOrdLessThan 604 605
+ 610: 609(bvec3) CompositeConstruct 606 606 606
+ 611: 20(fvec3) Select 610 607 608
+ Store 601(upVector) 611
+ 613: 20(fvec3) Load 601(upVector)
+ 614: 20(fvec3) Load 76(N)
+ 615: 20(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 613 614
+ 616: 20(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 615
+ Store 612(tangentX) 616
+ 618: 20(fvec3) Load 76(N)
+ 619: 20(fvec3) Load 612(tangentX)
+ 620: 20(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 618 619
+ Store 617(tangentY) 620
+ 622: 20(fvec3) Load 612(tangentX)
+ 623: 30(ptr) AccessChain 588(H) 390
+ 624: 6(float) Load 623
+ 625: 20(fvec3) VectorTimesScalar 622 624
+ 626: 20(fvec3) Load 617(tangentY)
+ 627: 30(ptr) AccessChain 588(H) 393
+ 628: 6(float) Load 627
+ 629: 20(fvec3) VectorTimesScalar 626 628
+ 630: 20(fvec3) FAdd 625 629
+ 631: 20(fvec3) Load 76(N)
+ 632: 30(ptr) AccessChain 588(H) 342
+ 633: 6(float) Load 632
+ 634: 20(fvec3) VectorTimesScalar 631 633
+ 635: 20(fvec3) FAdd 630 634
+ Store 621(worldResult) 635
+ 636: 20(fvec3) Load 621(worldResult)
+ ReturnValue 636
+ FunctionEnd
+83(iTDDistributionGGX(vf3;vf3;f1;): 6(float) Function None 79
+ 80(normal): 21(ptr) FunctionParameter
+ 81(half_vector): 21(ptr) FunctionParameter
+ 82(roughness2): 30(ptr) FunctionParameter
+ 84: Label
+ 639(NdotH): 30(ptr) Variable Function
+ 645(alpha2): 30(ptr) Variable Function
+ 649(denom): 30(ptr) Variable Function
+ 640: 20(fvec3) Load 80(normal)
+ 641: 20(fvec3) Load 81(half_vector)
+ 642: 6(float) Dot 640 641
+ 644: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 642 643 489
+ Store 639(NdotH) 644
+ 646: 6(float) Load 82(roughness2)
+ 647: 6(float) Load 82(roughness2)
+ 648: 6(float) FMul 646 647
+ Store 645(alpha2) 648
+ 650: 6(float) Load 639(NdotH)
+ 651: 6(float) Load 639(NdotH)
+ 652: 6(float) FMul 650 651
+ 653: 6(float) Load 645(alpha2)
+ 654: 6(float) FSub 653 489
+ 655: 6(float) FMul 652 654
+ 656: 6(float) FAdd 655 489
+ Store 649(denom) 656
+ 658: 6(float) Load 649(denom)
+ 659: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 657 658
+ Store 649(denom) 659
+ 660: 6(float) Load 645(alpha2)
+ 662: 6(float) Load 649(denom)
+ 663: 6(float) FMul 661 662
+ 664: 6(float) Load 649(denom)
+ 665: 6(float) FMul 663 664
+ 666: 6(float) FDiv 660 665
+ ReturnValue 666
+ FunctionEnd
+88(iTDCalcF(vf3;f1;): 20(fvec3) Function None 85
+ 86(F0): 21(ptr) FunctionParameter
+ 87(VdotH): 30(ptr) FunctionParameter
+ 89: Label
+ 669: 20(fvec3) Load 86(F0)
+ 671: 20(fvec3) Load 86(F0)
+ 672: 20(fvec3) FSub 670 671
+ 675: 6(float) Load 87(VdotH)
+ 676: 6(float) FMul 674 675
+ 678: 6(float) FSub 676 677
+ 679: 6(float) Load 87(VdotH)
+ 680: 6(float) FMul 678 679
+ 681: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 673 680
+ 682: 20(fvec3) VectorTimesScalar 672 681
+ 683: 20(fvec3) FAdd 669 682
+ ReturnValue 683
+ FunctionEnd
+94(iTDCalcG(f1;f1;f1;): 6(float) Function None 90
+ 91(NdotL): 30(ptr) FunctionParameter
+ 92(NdotV): 30(ptr) FunctionParameter
+ 93(k): 30(ptr) FunctionParameter
+ 95: Label
+ 686(Gl): 30(ptr) Variable Function
+ 694(Gv): 30(ptr) Variable Function
+ 687: 6(float) Load 91(NdotL)
+ 688: 6(float) Load 93(k)
+ 689: 6(float) FSub 489 688
+ 690: 6(float) FMul 687 689
+ 691: 6(float) Load 93(k)
+ 692: 6(float) FAdd 690 691
+ 693: 6(float) FDiv 489 692
+ Store 686(Gl) 693
+ 695: 6(float) Load 92(NdotV)
+ 696: 6(float) Load 93(k)
+ 697: 6(float) FSub 489 696
+ 698: 6(float) FMul 695 697
+ 699: 6(float) Load 93(k)
+ 700: 6(float) FAdd 698 699
+ 701: 6(float) FDiv 489 700
+ Store 694(Gv) 701
+ 702: 6(float) Load 686(Gl)
+ 703: 6(float) Load 694(Gv)
+ 704: 6(float) FMul 702 703
+ ReturnValue 704
+ FunctionEnd
+107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;):96(TDPBRResult) Function None 97
+ 98(index): 29(ptr) FunctionParameter
+99(diffuseColor): 21(ptr) FunctionParameter
+100(specularColor): 21(ptr) FunctionParameter
+101(worldSpacePos): 21(ptr) FunctionParameter
+ 102(normal): 21(ptr) FunctionParameter
+103(shadowStrength): 30(ptr) FunctionParameter
+104(shadowColor): 21(ptr) FunctionParameter
+ 105(camVector): 21(ptr) FunctionParameter
+ 106(roughness): 30(ptr) FunctionParameter
+ 108: Label
+ 708(res): 707(ptr) Variable Function
+ 709:96(TDPBRResult) Load 708(res)
+ ReturnValue 709
+ FunctionEnd
+122(TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 109
+110(diffuseContrib): 21(ptr) FunctionParameter
+111(specularContrib): 21(ptr) FunctionParameter
+112(shadowStrengthOut): 30(ptr) FunctionParameter
+ 113(index): 29(ptr) FunctionParameter
+114(diffuseColor): 21(ptr) FunctionParameter
+115(specularColor): 21(ptr) FunctionParameter
+116(worldSpacePos): 21(ptr) FunctionParameter
+ 117(normal): 21(ptr) FunctionParameter
+118(shadowStrength): 30(ptr) FunctionParameter
+119(shadowColor): 21(ptr) FunctionParameter
+ 120(camVector): 21(ptr) FunctionParameter
+ 121(roughness): 30(ptr) FunctionParameter
+ 123: Label
+ 712(res): 707(ptr) Variable Function
+ 713(param): 29(ptr) Variable Function
+ 715(param): 21(ptr) Variable Function
+ 717(param): 21(ptr) Variable Function
+ 719(param): 21(ptr) Variable Function
+ 721(param): 21(ptr) Variable Function
+ 723(param): 30(ptr) Variable Function
+ 725(param): 21(ptr) Variable Function
+ 727(param): 21(ptr) Variable Function
+ 729(param): 30(ptr) Variable Function
+ 714: 28(int) Load 113(index)
+ Store 713(param) 714
+ 716: 20(fvec3) Load 114(diffuseColor)
+ Store 715(param) 716
+ 718: 20(fvec3) Load 115(specularColor)
+ Store 717(param) 718
+ 720: 20(fvec3) Load 116(worldSpacePos)
+ Store 719(param) 720
+ 722: 20(fvec3) Load 117(normal)
+ Store 721(param) 722
+ 724: 6(float) Load 118(shadowStrength)
+ Store 723(param) 724
+ 726: 20(fvec3) Load 119(shadowColor)
+ Store 725(param) 726
+ 728: 20(fvec3) Load 120(camVector)
+ Store 727(param) 728
+ 730: 6(float) Load 121(roughness)
+ Store 729(param) 730
+ 731:96(TDPBRResult) FunctionCall 107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;) 713(param) 715(param) 717(param) 719(param) 721(param) 723(param) 725(param) 727(param) 729(param)
+ Store 712(res) 731
+ 732: 21(ptr) AccessChain 712(res) 381
+ 733: 20(fvec3) Load 732
+ Store 110(diffuseContrib) 733
+ 734: 21(ptr) AccessChain 712(res) 436
+ 735: 20(fvec3) Load 734
+ Store 111(specularContrib) 735
+ 736: 30(ptr) AccessChain 712(res) 337
+ 737: 6(float) Load 736
+ Store 112(shadowStrengthOut) 737
+ Return
+ FunctionEnd
+136(TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 124
+125(diffuseContrib): 21(ptr) FunctionParameter
+126(specularContrib): 21(ptr) FunctionParameter
+ 127(index): 29(ptr) FunctionParameter
+128(diffuseColor): 21(ptr) FunctionParameter
+129(specularColor): 21(ptr) FunctionParameter
+130(worldSpacePos): 21(ptr) FunctionParameter
+ 131(normal): 21(ptr) FunctionParameter
+132(shadowStrength): 30(ptr) FunctionParameter
+133(shadowColor): 21(ptr) FunctionParameter
+ 134(camVector): 21(ptr) FunctionParameter
+ 135(roughness): 30(ptr) FunctionParameter
+ 137: Label
+ 738(res): 707(ptr) Variable Function
+ 739(param): 29(ptr) Variable Function
+ 741(param): 21(ptr) Variable Function
+ 743(param): 21(ptr) Variable Function
+ 745(param): 21(ptr) Variable Function
+ 747(param): 21(ptr) Variable Function
+ 749(param): 30(ptr) Variable Function
+ 751(param): 21(ptr) Variable Function
+ 753(param): 21(ptr) Variable Function
+ 755(param): 30(ptr) Variable Function
+ 740: 28(int) Load 127(index)
+ Store 739(param) 740
+ 742: 20(fvec3) Load 128(diffuseColor)
+ Store 741(param) 742
+ 744: 20(fvec3) Load 129(specularColor)
+ Store 743(param) 744
+ 746: 20(fvec3) Load 130(worldSpacePos)
+ Store 745(param) 746
+ 748: 20(fvec3) Load 131(normal)
+ Store 747(param) 748
+ 750: 6(float) Load 132(shadowStrength)
+ Store 749(param) 750
+ 752: 20(fvec3) Load 133(shadowColor)
+ Store 751(param) 752
+ 754: 20(fvec3) Load 134(camVector)
+ Store 753(param) 754
+ 756: 6(float) Load 135(roughness)
+ Store 755(param) 756
+ 757:96(TDPBRResult) FunctionCall 107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;) 739(param) 741(param) 743(param) 745(param) 747(param) 749(param) 751(param) 753(param) 755(param)
+ Store 738(res) 757
+ 758: 21(ptr) AccessChain 738(res) 381
+ 759: 20(fvec3) Load 758
+ Store 125(diffuseContrib) 759
+ 760: 21(ptr) AccessChain 738(res) 436
+ 761: 20(fvec3) Load 760
+ Store 126(specularContrib) 761
+ Return
+ FunctionEnd
+146(TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;):96(TDPBRResult) Function None 138
+ 139(index): 29(ptr) FunctionParameter
+140(diffuseColor): 21(ptr) FunctionParameter
+141(specularColor): 21(ptr) FunctionParameter
+ 142(normal): 21(ptr) FunctionParameter
+ 143(camVector): 21(ptr) FunctionParameter
+ 144(roughness): 30(ptr) FunctionParameter
+145(ambientOcclusion): 30(ptr) FunctionParameter
+ 147: Label
+ 762(res): 707(ptr) Variable Function
+ 763:96(TDPBRResult) Load 762(res)
+ ReturnValue 763
+ FunctionEnd
+158(TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1;): 2 Function None 148
+149(diffuseContrib): 21(ptr) FunctionParameter
+150(specularContrib): 21(ptr) FunctionParameter
+ 151(index): 29(ptr) FunctionParameter
+152(diffuseColor): 21(ptr) FunctionParameter
+153(specularColor): 21(ptr) FunctionParameter
+ 154(normal): 21(ptr) FunctionParameter
+ 155(camVector): 21(ptr) FunctionParameter
+ 156(roughness): 30(ptr) FunctionParameter
+157(ambientOcclusion): 30(ptr) FunctionParameter
+ 159: Label
+ 766(res): 707(ptr) Variable Function
+ 767(param): 29(ptr) Variable Function
+ 769(param): 21(ptr) Variable Function
+ 771(param): 21(ptr) Variable Function
+ 773(param): 21(ptr) Variable Function
+ 775(param): 21(ptr) Variable Function
+ 777(param): 30(ptr) Variable Function
+ 779(param): 30(ptr) Variable Function
+ 768: 28(int) Load 151(index)
+ Store 767(param) 768
+ 770: 20(fvec3) Load 152(diffuseColor)
+ Store 769(param) 770
+ 772: 20(fvec3) Load 153(specularColor)
+ Store 771(param) 772
+ 774: 20(fvec3) Load 154(normal)
+ Store 773(param) 774
+ 776: 20(fvec3) Load 155(camVector)
+ Store 775(param) 776
+ 778: 6(float) Load 156(roughness)
+ Store 777(param) 778
+ 780: 6(float) Load 157(ambientOcclusion)
+ Store 779(param) 780
+ 781:96(TDPBRResult) FunctionCall 146(TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;) 767(param) 769(param) 771(param) 773(param) 775(param) 777(param) 779(param)
+ Store 766(res) 781
+ 782: 21(ptr) AccessChain 766(res) 381
+ 783: 20(fvec3) Load 782
+ Store 149(diffuseContrib) 783
+ 784: 21(ptr) AccessChain 766(res) 436
+ 785: 20(fvec3) Load 784
+ Store 150(specularContrib) 785
+ Return
+ FunctionEnd
+170(TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1;):160(TDPhongResult) Function None 161
+ 162(index): 29(ptr) FunctionParameter
+163(worldSpacePos): 21(ptr) FunctionParameter
+ 164(normal): 21(ptr) FunctionParameter
+165(shadowStrength): 30(ptr) FunctionParameter
+166(shadowColor): 21(ptr) FunctionParameter
+ 167(camVector): 21(ptr) FunctionParameter
+ 168(shininess): 30(ptr) FunctionParameter
+ 169(shininess2): 30(ptr) FunctionParameter
+ 171: Label
+ 790(res): 789(ptr) Variable Function
+ 786: 28(int) Load 162(index)
+ SelectionMerge 788 None
+ Switch 786 787
+ 787: Label
+ 792: 21(ptr) AccessChain 790(res) 381
+ Store 792 791
+ 793: 21(ptr) AccessChain 790(res) 436
+ Store 793 791
+ 794: 21(ptr) AccessChain 790(res) 337
+ Store 794 791
+ 795: 30(ptr) AccessChain 790(res) 377
+ Store 795 331
+ Branch 788
+ 788: Label
+ 798:160(TDPhongResult) Load 790(res)
+ ReturnValue 798
+ FunctionEnd
+185(TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1;): 2 Function None 172
+173(diffuseContrib): 21(ptr) FunctionParameter
+174(specularContrib): 21(ptr) FunctionParameter
+175(specularContrib2): 21(ptr) FunctionParameter
+176(shadowStrengthOut): 30(ptr) FunctionParameter
+ 177(index): 29(ptr) FunctionParameter
+178(worldSpacePos): 21(ptr) FunctionParameter
+ 179(normal): 21(ptr) FunctionParameter
+180(shadowStrength): 30(ptr) FunctionParameter
+181(shadowColor): 21(ptr) FunctionParameter
+ 182(camVector): 21(ptr) FunctionParameter
+ 183(shininess): 30(ptr) FunctionParameter
+ 184(shininess2): 30(ptr) FunctionParameter
+ 186: Label
+ 804(res): 789(ptr) Variable Function
+ 801: 28(int) Load 177(index)
+ SelectionMerge 803 None
+ Switch 801 802
+ 802: Label
+ 805: 21(ptr) AccessChain 804(res) 381
+ Store 805 791
+ 806: 21(ptr) AccessChain 804(res) 436
+ Store 806 791
+ 807: 21(ptr) AccessChain 804(res) 337
+ Store 807 791
+ 808: 30(ptr) AccessChain 804(res) 377
+ Store 808 331
+ Branch 803
+ 803: Label
+ 811: 21(ptr) AccessChain 804(res) 381
+ 812: 20(fvec3) Load 811
+ Store 173(diffuseContrib) 812
+ 813: 21(ptr) AccessChain 804(res) 436
+ 814: 20(fvec3) Load 813
+ Store 174(specularContrib) 814
+ 815: 21(ptr) AccessChain 804(res) 337
+ 816: 20(fvec3) Load 815
+ Store 175(specularContrib2) 816
+ 817: 30(ptr) AccessChain 804(res) 377
+ 818: 6(float) Load 817
+ Store 176(shadowStrengthOut) 818
+ Return
+ FunctionEnd
+199(TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1;): 2 Function None 187
+188(diffuseContrib): 21(ptr) FunctionParameter
+189(specularContrib): 21(ptr) FunctionParameter
+190(specularContrib2): 21(ptr) FunctionParameter
+ 191(index): 29(ptr) FunctionParameter
+192(worldSpacePos): 21(ptr) FunctionParameter
+ 193(normal): 21(ptr) FunctionParameter
+194(shadowStrength): 30(ptr) FunctionParameter
+195(shadowColor): 21(ptr) FunctionParameter
+ 196(camVector): 21(ptr) FunctionParameter
+ 197(shininess): 30(ptr) FunctionParameter
+ 198(shininess2): 30(ptr) FunctionParameter
+ 200: Label
+ 822(res): 789(ptr) Variable Function
+ 819: 28(int) Load 191(index)
+ SelectionMerge 821 None
+ Switch 819 820
+ 820: Label
+ 823: 21(ptr) AccessChain 822(res) 381
+ Store 823 791
+ 824: 21(ptr) AccessChain 822(res) 436
+ Store 824 791
+ 825: 21(ptr) AccessChain 822(res) 337
+ Store 825 791
+ 826: 30(ptr) AccessChain 822(res) 377
+ Store 826 331
+ Branch 821
+ 821: Label
+ 829: 21(ptr) AccessChain 822(res) 381
+ 830: 20(fvec3) Load 829
+ Store 188(diffuseContrib) 830
+ 831: 21(ptr) AccessChain 822(res) 436
+ 832: 20(fvec3) Load 831
+ Store 189(specularContrib) 832
+ 833: 21(ptr) AccessChain 822(res) 337
+ 834: 20(fvec3) Load 833
+ Store 190(specularContrib2) 834
+ Return
+ FunctionEnd
+211(TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 201
+202(diffuseContrib): 21(ptr) FunctionParameter
+203(specularContrib): 21(ptr) FunctionParameter
+ 204(index): 29(ptr) FunctionParameter
+205(worldSpacePos): 21(ptr) FunctionParameter
+ 206(normal): 21(ptr) FunctionParameter
+207(shadowStrength): 30(ptr) FunctionParameter
+208(shadowColor): 21(ptr) FunctionParameter
+ 209(camVector): 21(ptr) FunctionParameter
+ 210(shininess): 30(ptr) FunctionParameter
+ 212: Label
+ 838(res): 789(ptr) Variable Function
+ 835: 28(int) Load 204(index)
+ SelectionMerge 837 None
+ Switch 835 836
+ 836: Label
+ 839: 21(ptr) AccessChain 838(res) 381
+ Store 839 791
+ 840: 21(ptr) AccessChain 838(res) 436
+ Store 840 791
+ 841: 21(ptr) AccessChain 838(res) 337
+ Store 841 791
+ 842: 30(ptr) AccessChain 838(res) 377
+ Store 842 331
+ Branch 837
+ 837: Label
+ 845: 21(ptr) AccessChain 838(res) 381
+ 846: 20(fvec3) Load 845
+ Store 202(diffuseContrib) 846
+ 847: 21(ptr) AccessChain 838(res) 436
+ 848: 20(fvec3) Load 847
+ Store 203(specularContrib) 848
+ Return
+ FunctionEnd
+223(TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1;): 2 Function None 213
+214(diffuseContrib): 21(ptr) FunctionParameter
+215(specularContrib): 21(ptr) FunctionParameter
+216(specularContrib2): 21(ptr) FunctionParameter
+ 217(index): 29(ptr) FunctionParameter
+218(worldSpacePos): 21(ptr) FunctionParameter
+ 219(normal): 21(ptr) FunctionParameter
+ 220(camVector): 21(ptr) FunctionParameter
+ 221(shininess): 30(ptr) FunctionParameter
+ 222(shininess2): 30(ptr) FunctionParameter
+ 224: Label
+ 852(res): 789(ptr) Variable Function
+ 849: 28(int) Load 217(index)
+ SelectionMerge 851 None
+ Switch 849 850
+ 850: Label
+ 853: 21(ptr) AccessChain 852(res) 381
+ Store 853 791
+ 854: 21(ptr) AccessChain 852(res) 436
+ Store 854 791
+ 855: 21(ptr) AccessChain 852(res) 337
+ Store 855 791
+ 856: 30(ptr) AccessChain 852(res) 377
+ Store 856 331
+ Branch 851
+ 851: Label
+ 859: 21(ptr) AccessChain 852(res) 381
+ 860: 20(fvec3) Load 859
+ Store 214(diffuseContrib) 860
+ 861: 21(ptr) AccessChain 852(res) 436
+ 862: 20(fvec3) Load 861
+ Store 215(specularContrib) 862
+ 863: 21(ptr) AccessChain 852(res) 337
+ 864: 20(fvec3) Load 863
+ Store 216(specularContrib2) 864
+ Return
+ FunctionEnd
+233(TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1;): 2 Function None 225
+226(diffuseContrib): 21(ptr) FunctionParameter
+227(specularContrib): 21(ptr) FunctionParameter
+ 228(index): 29(ptr) FunctionParameter
+229(worldSpacePos): 21(ptr) FunctionParameter
+ 230(normal): 21(ptr) FunctionParameter
+ 231(camVector): 21(ptr) FunctionParameter
+ 232(shininess): 30(ptr) FunctionParameter
+ 234: Label
+ 868(res): 789(ptr) Variable Function
+ 865: 28(int) Load 228(index)
+ SelectionMerge 867 None
+ Switch 865 866
+ 866: Label
+ 869: 21(ptr) AccessChain 868(res) 381
+ Store 869 791
+ 870: 21(ptr) AccessChain 868(res) 436
+ Store 870 791
+ 871: 21(ptr) AccessChain 868(res) 337
+ Store 871 791
+ 872: 30(ptr) AccessChain 868(res) 377
+ Store 872 331
+ Branch 867
+ 867: Label
+ 875: 21(ptr) AccessChain 868(res) 381
+ 876: 20(fvec3) Load 875
+ Store 226(diffuseContrib) 876
+ 877: 21(ptr) AccessChain 868(res) 436
+ 878: 20(fvec3) Load 877
+ Store 227(specularContrib) 878
+ Return
+ FunctionEnd
+240(TDLighting(vf3;i1;vf3;vf3;): 2 Function None 235
+236(diffuseContrib): 21(ptr) FunctionParameter
+ 237(index): 29(ptr) FunctionParameter
+238(worldSpacePos): 21(ptr) FunctionParameter
+ 239(normal): 21(ptr) FunctionParameter
+ 241: Label
+ 882(res): 789(ptr) Variable Function
+ 879: 28(int) Load 237(index)
+ SelectionMerge 881 None
+ Switch 879 880
+ 880: Label
+ 883: 21(ptr) AccessChain 882(res) 381
+ Store 883 791
+ 884: 21(ptr) AccessChain 882(res) 436
+ Store 884 791
+ 885: 21(ptr) AccessChain 882(res) 337
+ Store 885 791
+ 886: 30(ptr) AccessChain 882(res) 377
+ Store 886 331
+ Branch 881
+ 881: Label
+ 889: 21(ptr) AccessChain 882(res) 381
+ 890: 20(fvec3) Load 889
+ Store 236(diffuseContrib) 890
+ Return
+ FunctionEnd
+249(TDLighting(vf3;i1;vf3;vf3;f1;vf3;): 2 Function None 242
+243(diffuseContrib): 21(ptr) FunctionParameter
+ 244(index): 29(ptr) FunctionParameter
+245(worldSpacePos): 21(ptr) FunctionParameter
+ 246(normal): 21(ptr) FunctionParameter
+247(shadowStrength): 30(ptr) FunctionParameter
+248(shadowColor): 21(ptr) FunctionParameter
+ 250: Label
+ 894(res): 789(ptr) Variable Function
+ 891: 28(int) Load 244(index)
+ SelectionMerge 893 None
+ Switch 891 892
+ 892: Label
+ 895: 21(ptr) AccessChain 894(res) 381
+ Store 895 791
+ 896: 21(ptr) AccessChain 894(res) 436
+ Store 896 791
+ 897: 21(ptr) AccessChain 894(res) 337
+ Store 897 791
+ 898: 30(ptr) AccessChain 894(res) 377
+ Store 898 331
+ Branch 893
+ 893: Label
+ 901: 21(ptr) AccessChain 894(res) 381
+ 902: 20(fvec3) Load 901
+ Store 243(diffuseContrib) 902
+ Return
+ FunctionEnd
+255(TDProjMap(i1;vf3;vf4;): 7(fvec4) Function None 251
+ 252(index): 29(ptr) FunctionParameter
+253(worldSpacePos): 21(ptr) FunctionParameter
+254(defaultColor): 8(ptr) FunctionParameter
+ 256: Label
+ 903: 28(int) Load 252(index)
+ SelectionMerge 905 None
+ Switch 903 904
+ 904: Label
+ 906: 7(fvec4) Load 254(defaultColor)
+ ReturnValue 906
+ 905: Label
+ Unreachable
+ FunctionEnd
+261(TDFog(vf4;vf3;i1;): 7(fvec4) Function None 257
+ 258(color): 8(ptr) FunctionParameter
+259(lightingSpacePosition): 21(ptr) FunctionParameter
+260(cameraIndex): 29(ptr) FunctionParameter
+ 262: Label
+ 910: 28(int) Load 260(cameraIndex)
+ SelectionMerge 912 None
+ Switch 910 911
+ case 0: 911
+ 911: Label
+ 913: 7(fvec4) Load 258(color)
+ ReturnValue 913
+ 912: Label
+ Unreachable
+ FunctionEnd
+266(TDFog(vf4;vf3;): 7(fvec4) Function None 263
+ 264(color): 8(ptr) FunctionParameter
+265(lightingSpacePosition): 21(ptr) FunctionParameter
+ 267: Label
+ 917(param): 8(ptr) Variable Function
+ 919(param): 21(ptr) Variable Function
+ 921(param): 29(ptr) Variable Function
+ 918: 7(fvec4) Load 264(color)
+ Store 917(param) 918
+ 920: 20(fvec3) Load 265(lightingSpacePosition)
+ Store 919(param) 920
+ Store 921(param) 381
+ 922: 7(fvec4) FunctionCall 261(TDFog(vf4;vf3;i1;) 917(param) 919(param) 921(param)
+ ReturnValue 922
+ FunctionEnd
+271(TDInstanceTexCoord(i1;vf3;): 20(fvec3) Function None 268
+ 269(index): 29(ptr) FunctionParameter
+ 270(t): 21(ptr) FunctionParameter
+ 272: Label
+ 925(coord): 29(ptr) Variable Function
+ 927(samp): 8(ptr) Variable Function
+ 936(v): 21(ptr) Variable Function
+ 926: 28(int) Load 269(index)
+ Store 925(coord) 926
+ 932: 929 Load 931(sTDInstanceTexCoord)
+ 933: 28(int) Load 925(coord)
+ 934: 928 Image 932
+ 935: 7(fvec4) ImageFetch 934 933
+ Store 927(samp) 935
+ 937: 30(ptr) AccessChain 270(t) 390
+ 938: 6(float) Load 937
+ 939: 30(ptr) AccessChain 936(v) 390
+ Store 939 938
+ 940: 30(ptr) AccessChain 270(t) 393
+ 941: 6(float) Load 940
+ 942: 30(ptr) AccessChain 936(v) 393
+ Store 942 941
+ 943: 30(ptr) AccessChain 927(samp) 390
+ 944: 6(float) Load 943
+ 945: 30(ptr) AccessChain 936(v) 342
+ Store 945 944
+ 946: 20(fvec3) Load 936(v)
+ Store 270(t) 946
+ 947: 20(fvec3) Load 270(t)
+ ReturnValue 947
+ FunctionEnd
+275(TDInstanceActive(i1;): 22(bool) Function None 273
+ 274(index): 29(ptr) FunctionParameter
+ 276: Label
+ 955(coord): 29(ptr) Variable Function
+ 957(samp): 8(ptr) Variable Function
+ 963(v): 30(ptr) Variable Function
+ 951: 950(ptr) AccessChain 376 381
+ 952: 28(int) Load 951
+ 953: 28(int) Load 274(index)
+ 954: 28(int) ISub 953 952
+ Store 274(index) 954
+ 956: 28(int) Load 274(index)
+ Store 955(coord) 956
+ 959: 929 Load 958(sTDInstanceT)
+ 960: 28(int) Load 955(coord)
+ 961: 928 Image 959
+ 962: 7(fvec4) ImageFetch 961 960
+ Store 957(samp) 962
+ 964: 30(ptr) AccessChain 957(samp) 390
+ 965: 6(float) Load 964
+ Store 963(v) 965
+ 966: 6(float) Load 963(v)
+ 967: 22(bool) FUnordNotEqual 966 331
+ ReturnValue 967
+ FunctionEnd
+281(iTDInstanceTranslate(i1;b1;): 20(fvec3) Function None 278
+ 279(index): 29(ptr) FunctionParameter
+280(instanceActive): 277(ptr) FunctionParameter
+ 282: Label
+ 970(origIndex): 29(ptr) Variable Function
+ 976(coord): 29(ptr) Variable Function
+ 978(samp): 8(ptr) Variable Function
+ 983(v): 21(ptr) Variable Function
+ 971: 28(int) Load 279(index)
+ Store 970(origIndex) 971
+ 972: 950(ptr) AccessChain 376 381
+ 973: 28(int) Load 972
+ 974: 28(int) Load 279(index)
+ 975: 28(int) ISub 974 973
+ Store 279(index) 975
+ 977: 28(int) Load 279(index)
+ Store 976(coord) 977
+ 979: 929 Load 958(sTDInstanceT)
+ 980: 28(int) Load 976(coord)
+ 981: 928 Image 979
+ 982: 7(fvec4) ImageFetch 981 980
+ Store 978(samp) 982
+ 984: 30(ptr) AccessChain 978(samp) 393
+ 985: 6(float) Load 984
+ 986: 30(ptr) AccessChain 983(v) 390
+ Store 986 985
+ 987: 30(ptr) AccessChain 978(samp) 342
+ 988: 6(float) Load 987
+ 989: 30(ptr) AccessChain 983(v) 393
+ Store 989 988
+ 990: 30(ptr) AccessChain 978(samp) 402
+ 991: 6(float) Load 990
+ 992: 30(ptr) AccessChain 983(v) 342
+ Store 992 991
+ 993: 30(ptr) AccessChain 978(samp) 390
+ 994: 6(float) Load 993
+ 995: 22(bool) FUnordNotEqual 994 331
+ Store 280(instanceActive) 995
+ 996: 20(fvec3) Load 983(v)
+ ReturnValue 996
+ FunctionEnd
+285(TDInstanceTranslate(i1;): 20(fvec3) Function None 283
+ 284(index): 29(ptr) FunctionParameter
+ 286: Label
+ 1003(coord): 29(ptr) Variable Function
+ 1005(samp): 8(ptr) Variable Function
+ 1010(v): 21(ptr) Variable Function
+ 999: 950(ptr) AccessChain 376 381
+ 1000: 28(int) Load 999
+ 1001: 28(int) Load 284(index)
+ 1002: 28(int) ISub 1001 1000
+ Store 284(index) 1002
+ 1004: 28(int) Load 284(index)
+ Store 1003(coord) 1004
+ 1006: 929 Load 958(sTDInstanceT)
+ 1007: 28(int) Load 1003(coord)
+ 1008: 928 Image 1006
+ 1009: 7(fvec4) ImageFetch 1008 1007
+ Store 1005(samp) 1009
+ 1011: 30(ptr) AccessChain 1005(samp) 393
+ 1012: 6(float) Load 1011
+ 1013: 30(ptr) AccessChain 1010(v) 390
+ Store 1013 1012
+ 1014: 30(ptr) AccessChain 1005(samp) 342
+ 1015: 6(float) Load 1014
+ 1016: 30(ptr) AccessChain 1010(v) 393
+ Store 1016 1015
+ 1017: 30(ptr) AccessChain 1005(samp) 402
+ 1018: 6(float) Load 1017
+ 1019: 30(ptr) AccessChain 1010(v) 342
+ Store 1019 1018
+ 1020: 20(fvec3) Load 1010(v)
+ ReturnValue 1020
+ FunctionEnd
+290(TDInstanceRotateMat(i1;): 287 Function None 288
+ 289(index): 29(ptr) FunctionParameter
+ 291: Label
+ 1027(v): 21(ptr) Variable Function
+ 1029(m): 1028(ptr) Variable Function
+ 1023: 950(ptr) AccessChain 376 381
+ 1024: 28(int) Load 1023
+ 1025: 28(int) Load 289(index)
+ 1026: 28(int) ISub 1025 1024
+ Store 289(index) 1026
+ Store 1027(v) 791
+ Store 1029(m) 1031
+ 1032: 287 Load 1029(m)
+ ReturnValue 1032
+ FunctionEnd
+293(TDInstanceScale(i1;): 20(fvec3) Function None 283
+ 292(index): 29(ptr) FunctionParameter
+ 294: Label
+ 1039(v): 21(ptr) Variable Function
+ 1035: 950(ptr) AccessChain 376 381
+ 1036: 28(int) Load 1035
+ 1037: 28(int) Load 292(index)
+ 1038: 28(int) ISub 1037 1036
+ Store 292(index) 1038
+ Store 1039(v) 670
+ 1040: 20(fvec3) Load 1039(v)
+ ReturnValue 1040
+ FunctionEnd
+296(TDInstancePivot(i1;): 20(fvec3) Function None 283
+ 295(index): 29(ptr) FunctionParameter
+ 297: Label
+ 1047(v): 21(ptr) Variable Function
+ 1043: 950(ptr) AccessChain 376 381
+ 1044: 28(int) Load 1043
+ 1045: 28(int) Load 295(index)
+ 1046: 28(int) ISub 1045 1044
+ Store 295(index) 1046
+ Store 1047(v) 791
+ 1048: 20(fvec3) Load 1047(v)
+ ReturnValue 1048
+ FunctionEnd
+299(TDInstanceRotTo(i1;): 20(fvec3) Function None 283
+ 298(index): 29(ptr) FunctionParameter
+ 300: Label
+ 1055(v): 21(ptr) Variable Function
+ 1051: 950(ptr) AccessChain 376 381
+ 1052: 28(int) Load 1051
+ 1053: 28(int) Load 298(index)
+ 1054: 28(int) ISub 1053 1052
+ Store 298(index) 1054
+ Store 1055(v) 607
+ 1056: 20(fvec3) Load 1055(v)
+ ReturnValue 1056
+ FunctionEnd
+302(TDInstanceRotUp(i1;): 20(fvec3) Function None 283
+ 301(index): 29(ptr) FunctionParameter
+ 303: Label
+ 1063(v): 21(ptr) Variable Function
+ 1059: 950(ptr) AccessChain 376 381
+ 1060: 28(int) Load 1059
+ 1061: 28(int) Load 301(index)
+ 1062: 28(int) ISub 1061 1060
+ Store 301(index) 1062
+ Store 1063(v) 1030
+ 1064: 20(fvec3) Load 1063(v)
+ ReturnValue 1064
+ FunctionEnd
+307(TDInstanceMat(i1;): 304 Function None 305
+ 306(id): 29(ptr) FunctionParameter
+ 308: Label
+1067(instanceActive): 277(ptr) Variable Function
+ 1069(t): 21(ptr) Variable Function
+ 1070(param): 29(ptr) Variable Function
+ 1072(param): 277(ptr) Variable Function
+ 1082(m): 1081(ptr) Variable Function
+ 1088(tt): 21(ptr) Variable Function
+ Store 1067(instanceActive) 1068
+ 1071: 28(int) Load 306(id)
+ Store 1070(param) 1071
+ 1073: 20(fvec3) FunctionCall 281(iTDInstanceTranslate(i1;b1;) 1070(param) 1072(param)
+ 1074: 22(bool) Load 1072(param)
+ Store 1067(instanceActive) 1074
+ Store 1069(t) 1073
+ 1075: 22(bool) Load 1067(instanceActive)
+ 1076: 22(bool) LogicalNot 1075
+ SelectionMerge 1078 None
+ BranchConditional 1076 1077 1078
+ 1077: Label
+ ReturnValue 1079
+ 1078: Label
+ Store 1082(m) 1087
+ 1089: 20(fvec3) Load 1069(t)
+ Store 1088(tt) 1089
+ 1090: 30(ptr) AccessChain 1082(m) 381 390
+ 1091: 6(float) Load 1090
+ 1092: 30(ptr) AccessChain 1088(tt) 390
+ 1093: 6(float) Load 1092
+ 1094: 6(float) FMul 1091 1093
+ 1095: 30(ptr) AccessChain 1082(m) 377 390
+ 1096: 6(float) Load 1095
+ 1097: 6(float) FAdd 1096 1094
+ 1098: 30(ptr) AccessChain 1082(m) 377 390
+ Store 1098 1097
+ 1099: 30(ptr) AccessChain 1082(m) 381 393
+ 1100: 6(float) Load 1099
+ 1101: 30(ptr) AccessChain 1088(tt) 390
+ 1102: 6(float) Load 1101
+ 1103: 6(float) FMul 1100 1102
+ 1104: 30(ptr) AccessChain 1082(m) 377 393
+ 1105: 6(float) Load 1104
+ 1106: 6(float) FAdd 1105 1103
+ 1107: 30(ptr) AccessChain 1082(m) 377 393
+ Store 1107 1106
+ 1108: 30(ptr) AccessChain 1082(m) 381 342
+ 1109: 6(float) Load 1108
+ 1110: 30(ptr) AccessChain 1088(tt) 390
+ 1111: 6(float) Load 1110
+ 1112: 6(float) FMul 1109 1111
+ 1113: 30(ptr) AccessChain 1082(m) 377 342
+ 1114: 6(float) Load 1113
+ 1115: 6(float) FAdd 1114 1112
+ 1116: 30(ptr) AccessChain 1082(m) 377 342
+ Store 1116 1115
+ 1117: 30(ptr) AccessChain 1082(m) 381 402
+ 1118: 6(float) Load 1117
+ 1119: 30(ptr) AccessChain 1088(tt) 390
+ 1120: 6(float) Load 1119
+ 1121: 6(float) FMul 1118 1120
+ 1122: 30(ptr) AccessChain 1082(m) 377 402
+ 1123: 6(float) Load 1122
+ 1124: 6(float) FAdd 1123 1121
+ 1125: 30(ptr) AccessChain 1082(m) 377 402
+ Store 1125 1124
+ 1126: 30(ptr) AccessChain 1082(m) 436 390
+ 1127: 6(float) Load 1126
+ 1128: 30(ptr) AccessChain 1088(tt) 393
+ 1129: 6(float) Load 1128
+ 1130: 6(float) FMul 1127 1129
+ 1131: 30(ptr) AccessChain 1082(m) 377 390
+ 1132: 6(float) Load 1131
+ 1133: 6(float) FAdd 1132 1130
+ 1134: 30(ptr) AccessChain 1082(m) 377 390
+ Store 1134 1133
+ 1135: 30(ptr) AccessChain 1082(m) 436 393
+ 1136: 6(float) Load 1135
+ 1137: 30(ptr) AccessChain 1088(tt) 393
+ 1138: 6(float) Load 1137
+ 1139: 6(float) FMul 1136 1138
+ 1140: 30(ptr) AccessChain 1082(m) 377 393
+ 1141: 6(float) Load 1140
+ 1142: 6(float) FAdd 1141 1139
+ 1143: 30(ptr) AccessChain 1082(m) 377 393
+ Store 1143 1142
+ 1144: 30(ptr) AccessChain 1082(m) 436 342
+ 1145: 6(float) Load 1144
+ 1146: 30(ptr) AccessChain 1088(tt) 393
+ 1147: 6(float) Load 1146
+ 1148: 6(float) FMul 1145 1147
+ 1149: 30(ptr) AccessChain 1082(m) 377 342
+ 1150: 6(float) Load 1149
+ 1151: 6(float) FAdd 1150 1148
+ 1152: 30(ptr) AccessChain 1082(m) 377 342
+ Store 1152 1151
+ 1153: 30(ptr) AccessChain 1082(m) 436 402
+ 1154: 6(float) Load 1153
+ 1155: 30(ptr) AccessChain 1088(tt) 393
+ 1156: 6(float) Load 1155
+ 1157: 6(float) FMul 1154 1156
+ 1158: 30(ptr) AccessChain 1082(m) 377 402
+ 1159: 6(float) Load 1158
+ 1160: 6(float) FAdd 1159 1157
+ 1161: 30(ptr) AccessChain 1082(m) 377 402
+ Store 1161 1160
+ 1162: 30(ptr) AccessChain 1082(m) 337 390
+ 1163: 6(float) Load 1162
+ 1164: 30(ptr) AccessChain 1088(tt) 342
+ 1165: 6(float) Load 1164
+ 1166: 6(float) FMul 1163 1165
+ 1167: 30(ptr) AccessChain 1082(m) 377 390
+ 1168: 6(float) Load 1167
+ 1169: 6(float) FAdd 1168 1166
+ 1170: 30(ptr) AccessChain 1082(m) 377 390
+ Store 1170 1169
+ 1171: 30(ptr) AccessChain 1082(m) 337 393
+ 1172: 6(float) Load 1171
+ 1173: 30(ptr) AccessChain 1088(tt) 342
+ 1174: 6(float) Load 1173
+ 1175: 6(float) FMul 1172 1174
+ 1176: 30(ptr) AccessChain 1082(m) 377 393
+ 1177: 6(float) Load 1176
+ 1178: 6(float) FAdd 1177 1175
+ 1179: 30(ptr) AccessChain 1082(m) 377 393
+ Store 1179 1178
+ 1180: 30(ptr) AccessChain 1082(m) 337 342
+ 1181: 6(float) Load 1180
+ 1182: 30(ptr) AccessChain 1088(tt) 342
+ 1183: 6(float) Load 1182
+ 1184: 6(float) FMul 1181 1183
+ 1185: 30(ptr) AccessChain 1082(m) 377 342
+ 1186: 6(float) Load 1185
+ 1187: 6(float) FAdd 1186 1184
+ 1188: 30(ptr) AccessChain 1082(m) 377 342
+ Store 1188 1187
+ 1189: 30(ptr) AccessChain 1082(m) 337 402
+ 1190: 6(float) Load 1189
+ 1191: 30(ptr) AccessChain 1088(tt) 342
+ 1192: 6(float) Load 1191
+ 1193: 6(float) FMul 1190 1192
+ 1194: 30(ptr) AccessChain 1082(m) 377 402
+ 1195: 6(float) Load 1194
+ 1196: 6(float) FAdd 1195 1193
+ 1197: 30(ptr) AccessChain 1082(m) 377 402
+ Store 1197 1196
+ 1198: 304 Load 1082(m)
+ ReturnValue 1198
+ FunctionEnd
+310(TDInstanceMat3(i1;): 287 Function None 288
+ 309(id): 29(ptr) FunctionParameter
+ 311: Label
+ 1201(m): 1028(ptr) Variable Function
+ Store 1201(m) 1031
+ 1202: 287 Load 1201(m)
+ ReturnValue 1202
+ FunctionEnd
+313(TDInstanceMat3ForNorm(i1;): 287 Function None 288
+ 312(id): 29(ptr) FunctionParameter
+ 314: Label
+ 1205(m): 1028(ptr) Variable Function
+ 1206(param): 29(ptr) Variable Function
+ 1207: 28(int) Load 312(id)
+ Store 1206(param) 1207
+ 1208: 287 FunctionCall 310(TDInstanceMat3(i1;) 1206(param)
+ Store 1205(m) 1208
+ 1209: 287 Load 1205(m)
+ ReturnValue 1209
+ FunctionEnd
+318(TDInstanceColor(i1;vf4;): 7(fvec4) Function None 315
+ 316(index): 29(ptr) FunctionParameter
+ 317(curColor): 8(ptr) FunctionParameter
+ 319: Label
+ 1216(coord): 29(ptr) Variable Function
+ 1218(samp): 8(ptr) Variable Function
+ 1224(v): 8(ptr) Variable Function
+ 1212: 950(ptr) AccessChain 376 381
+ 1213: 28(int) Load 1212
+ 1214: 28(int) Load 316(index)
+ 1215: 28(int) ISub 1214 1213
+ Store 316(index) 1215
+ 1217: 28(int) Load 316(index)
+ Store 1216(coord) 1217
+ 1220: 929 Load 1219(sTDInstanceColor)
+ 1221: 28(int) Load 1216(coord)
+ 1222: 928 Image 1220
+ 1223: 7(fvec4) ImageFetch 1222 1221
+ Store 1218(samp) 1223
+ 1225: 30(ptr) AccessChain 1218(samp) 390
+ 1226: 6(float) Load 1225
+ 1227: 30(ptr) AccessChain 1224(v) 390
+ Store 1227 1226
+ 1228: 30(ptr) AccessChain 1218(samp) 393
+ 1229: 6(float) Load 1228
+ 1230: 30(ptr) AccessChain 1224(v) 393
+ Store 1230 1229
+ 1231: 30(ptr) AccessChain 1218(samp) 342
+ 1232: 6(float) Load 1231
+ 1233: 30(ptr) AccessChain 1224(v) 342
+ Store 1233 1232
+ 1234: 30(ptr) AccessChain 1224(v) 402
+ Store 1234 489
+ 1235: 30(ptr) AccessChain 1224(v) 390
+ 1236: 6(float) Load 1235
+ 1237: 30(ptr) AccessChain 317(curColor) 390
+ Store 1237 1236
+ 1238: 30(ptr) AccessChain 1224(v) 393
+ 1239: 6(float) Load 1238
+ 1240: 30(ptr) AccessChain 317(curColor) 393
+ Store 1240 1239
+ 1241: 30(ptr) AccessChain 1224(v) 342
+ 1242: 6(float) Load 1241
+ 1243: 30(ptr) AccessChain 317(curColor) 342
+ Store 1243 1242
+ 1244: 7(fvec4) Load 317(curColor)
+ ReturnValue 1244
+ FunctionEnd
+321(TDOutputSwizzle(vf4;): 7(fvec4) Function None 9
+ 320(c): 8(ptr) FunctionParameter
+ 322: Label
+ 1247: 7(fvec4) Load 320(c)
+ ReturnValue 1247
+ FunctionEnd
+327(TDOutputSwizzle(vu4;): 323(ivec4) Function None 325
+ 326(c): 324(ptr) FunctionParameter
+ 328: Label
+ 1250: 323(ivec4) Load 326(c)
+ ReturnValue 1250
+ FunctionEnd
diff --git a/Test/vk.relaxed.stagelink.0.0.frag b/Test/vk.relaxed.stagelink.0.0.frag
new file mode 100755
index 00000000..1f9f1025
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.0.frag
@@ -0,0 +1,139 @@
+#version 460
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+
+void TDAlphaTest(float alpha);
+vec4 TDDither(vec4 color);
+vec4 TDOutputSwizzle(vec4 v);
+uvec4 TDOutputSwizzle(uvec4 v);
+void TDCheckOrderIndTrans();
+void TDCheckDiscard();
+uniform vec3 uConstant;
+uniform float uShadowStrength;
+uniform vec3 uShadowColor;
+uniform vec4 uDiffuseColor;
+uniform vec4 uAmbientColor;
+
+uniform sampler2DArray sColorMap;
+
+in Vertex
+{
+ vec4 color;
+ vec3 worldSpacePos;
+ vec3 texCoord0;
+ flat int cameraIndex;
+ flat int instance;
+} iVert;
+
+// Output variable for the color
+layout(location = 0) out vec4 oFragColor[TD_NUM_COLOR_BUFFERS];
+void main()
+{
+ // This allows things such as order independent transparency
+ // and Dual-Paraboloid rendering to work properly
+ TDCheckDiscard();
+
+ vec4 outcol = vec4(0.0, 0.0, 0.0, 0.0);
+
+ vec3 texCoord0 = iVert.texCoord0.stp;
+ float actualTexZ = mod(int(texCoord0.z),2048);
+ float instanceLoop = floor(int(texCoord0.z)/2048);
+ texCoord0.z = actualTexZ;
+ vec4 colorMapColor = texture(sColorMap, texCoord0.stp);
+
+ float red = colorMapColor[int(instanceLoop)];
+ colorMapColor = vec4(red);
+ // Constant Light Contribution
+ outcol.rgb += uConstant * iVert.color.rgb;
+
+ outcol *= colorMapColor;
+
+ // Alpha Calculation
+ float alpha = iVert.color.a * colorMapColor.a ;
+
+ // Dithering, does nothing if dithering is disabled
+ outcol = TDDither(outcol);
+
+ outcol.rgb *= alpha;
+
+ // Modern GL removed the implicit alpha test, so we need to apply
+ // it manually here. This function does nothing if alpha test is disabled.
+ TDAlphaTest(alpha);
+
+ outcol.a = alpha;
+ oFragColor[0] = TDOutputSwizzle(outcol);
+
+
+ // TD_NUM_COLOR_BUFFERS will be set to the number of color buffers
+ // active in the render. By default we want to output zero to every
+ // buffer except the first one.
+ for (int i = 1; i < TD_NUM_COLOR_BUFFERS; i++)
+ {
+ oFragColor[i] = vec4(0.0);
+ }
+}
diff --git a/Test/vk.relaxed.stagelink.0.0.vert b/Test/vk.relaxed.stagelink.0.0.vert
new file mode 100755
index 00000000..7f31c377
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.0.vert
@@ -0,0 +1,126 @@
+#version 460
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+layout(location = 0) in vec3 P;
+layout(location = 1) in vec3 N;
+layout(location = 2) in vec4 Cd;
+layout(location = 3) in vec3 uv[8];
+vec4 TDWorldToProj(vec4 v);
+vec4 TDWorldToProj(vec3 v);
+vec4 TDWorldToProj(vec4 v, vec3 uv);
+vec4 TDWorldToProj(vec3 v, vec3 uv);
+int TDInstanceID();
+int TDCameraIndex();
+vec3 TDUVUnwrapCoord();
+/*********TOUCHDEFORMPREFIX**********/
+#define TD_NUM_BONES 0
+
+vec3 TDInstanceTexCoord(int instanceID, vec3 t);
+vec4 TDInstanceColor(int instanceID, vec4 curColor);
+
+vec4 TDDeform(vec4 pos);
+vec4 TDDeform(vec3 pos);
+vec3 TDInstanceTexCoord(vec3 t);
+vec4 TDInstanceColor(vec4 curColor);
+#line 1
+
+out Vertex
+{
+ vec4 color;
+ vec3 worldSpacePos;
+ vec3 texCoord0;
+ flat int cameraIndex;
+ flat int instance;
+} oVert;
+
+void main()
+{
+
+ { // Avoid duplicate variable defs
+ vec3 texcoord = TDInstanceTexCoord(uv[0]);
+ oVert.texCoord0.stp = texcoord.stp;
+ }
+ // First deform the vertex and normal
+ // TDDeform always returns values in world space
+ oVert.instance = TDInstanceID();
+ vec4 worldSpacePos = TDDeform(P);
+ vec3 uvUnwrapCoord = TDInstanceTexCoord(TDUVUnwrapCoord());
+ gl_Position = TDWorldToProj(worldSpacePos, uvUnwrapCoord);
+
+
+ // This is here to ensure we only execute lighting etc. code
+ // when we need it. If picking is active we don't need lighting, so
+ // this entire block of code will be ommited from the compile.
+ // The TD_PICKING_ACTIVE define will be set automatically when
+ // picking is active.
+
+ int cameraIndex = TDCameraIndex();
+ oVert.cameraIndex = cameraIndex;
+ oVert.worldSpacePos.xyz = worldSpacePos.xyz;
+ oVert.color = TDInstanceColor(Cd);
+}
diff --git a/Test/vk.relaxed.stagelink.0.1.frag b/Test/vk.relaxed.stagelink.0.1.frag
new file mode 100755
index 00000000..2a82b65d
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.1.frag
@@ -0,0 +1,504 @@
+#version 460
+uniform sampler2D sTDNoiseMap;
+uniform sampler1D sTDSineLookup;
+uniform sampler2D sTDWhite2D;
+uniform sampler3D sTDWhite3D;
+uniform sampler2DArray sTDWhite2DArray;
+uniform samplerCube sTDWhiteCube;
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDLight
+{
+ vec4 position;
+ vec3 direction;
+ vec3 diffuse;
+ vec4 nearFar;
+ vec4 lightSize;
+ vec4 misc;
+ vec4 coneLookupScaleBias;
+ vec4 attenScaleBiasRoll;
+ mat4 shadowMapMatrix;
+ mat4 shadowMapCamMatrix;
+ vec4 shadowMapRes;
+ mat4 projMapMatrix;
+};
+struct TDEnvLight
+{
+ vec3 color;
+ mat3 rotate;
+};
+layout(std140) uniform TDLightBlock
+{
+ TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE];
+};
+layout(std140) uniform TDEnvLightBlock
+{
+ TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
+};
+layout(std430) readonly restrict buffer TDEnvLightBuffer
+{
+ vec3 shCoeffs[9];
+} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+
+layout(binding = 15) uniform samplerBuffer sTDInstanceT;
+layout(binding = 16) uniform samplerBuffer sTDInstanceTexCoord;
+layout(binding = 17) uniform samplerBuffer sTDInstanceColor;
+vec4 TDDither(vec4 color);
+vec3 TDHSVToRGB(vec3 c);
+vec3 TDRGBToHSV(vec3 c);
+#define PI 3.14159265
+
+vec4 TDColor(vec4 color) { return color; }
+void TDCheckOrderIndTrans() {
+}
+void TDCheckDiscard() {
+ TDCheckOrderIndTrans();
+}
+vec4 TDDither(vec4 color)
+{
+ float d = texture(sTDNoiseMap,
+ gl_FragCoord.xy / 256.0).r;
+ d -= 0.5;
+ d /= 256.0;
+ return vec4(color.rgb + d, color.a);
+}
+bool TDFrontFacing(vec3 pos, vec3 normal)
+{
+ return gl_FrontFacing;
+}
+float TDAttenuateLight(int index, float lightDist)
+{
+ return 1.0;
+}
+void TDAlphaTest(float alpha) {
+}
+float TDHardShadow(int lightIndex, vec3 worldSpacePos)
+{ return 0.0; }
+float TDSoftShadow(int lightIndex, vec3 worldSpacePos, int samples, int steps)
+{ return 0.0; }
+float TDSoftShadow(int lightIndex, vec3 worldSpacePos)
+{ return 0.0; }
+float TDShadow(int lightIndex, vec3 worldSpacePos)
+{ return 0.0; }
+vec3 TDEquirectangularToCubeMap(vec2 mapCoord);
+vec2 TDCubeMapToEquirectangular(vec3 envMapCoord);
+vec2 TDCubeMapToEquirectangular(vec3 envMapCoord, out float mipMapBias);
+vec2 TDTexGenSphere(vec3 envMapCoord);
+float iTDRadicalInverse_VdC(uint bits)
+{
+ bits = (bits << 16u) | (bits >> 16u);
+ bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);
+ bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
+ bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
+ bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
+ return float(bits) * 2.3283064365386963e-10; // / 0x100000000
+}
+vec2 iTDHammersley(uint i, uint N)
+{
+ return vec2(float(i) / float(N), iTDRadicalInverse_VdC(i));
+}
+vec3 iTDImportanceSampleGGX(vec2 Xi, float roughness2, vec3 N)
+{
+ float a = roughness2;
+ float phi = 2 * 3.14159265 * Xi.x;
+ float cosTheta = sqrt( (1 - Xi.y) / (1 + (a*a - 1) * Xi.y) );
+ float sinTheta = sqrt( 1 - cosTheta * cosTheta );
+
+ vec3 H;
+ H.x = sinTheta * cos(phi);
+ H.y = sinTheta * sin(phi);
+ H.z = cosTheta;
+
+ vec3 upVector = abs(N.z) < 0.999 ? vec3(0, 0, 1) : vec3(1, 0, 0);
+ vec3 tangentX = normalize(cross(upVector, N));
+ vec3 tangentY = cross(N, tangentX);
+
+ // Tangent to world space
+ vec3 worldResult = tangentX * H.x + tangentY * H.y + N * H.z;
+ return worldResult;
+}
+float iTDDistributionGGX(vec3 normal, vec3 half_vector, float roughness2)
+{
+ const float Epsilon = 0.000001;
+
+ float NdotH = clamp(dot(normal, half_vector), Epsilon, 1.0);
+
+ float alpha2 = roughness2 * roughness2;
+
+ float denom = NdotH * NdotH * (alpha2 - 1.0) + 1.0;
+ denom = max(1e-8, denom);
+ return alpha2 / (PI * denom * denom);
+}
+vec3 iTDCalcF(vec3 F0, float VdotH) {
+ return F0 + (vec3(1.0) - F0) * pow(2.0, (-5.55473*VdotH - 6.98316) * VdotH);
+}
+
+float iTDCalcG(float NdotL, float NdotV, float k) {
+ float Gl = 1.0 / (NdotL * (1.0 - k) + k);
+ float Gv = 1.0 / (NdotV * (1.0 - k) + k);
+ return Gl * Gv;
+}
+// 0 - All options
+TDPBRResult TDLightingPBR(int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness)
+{
+ TDPBRResult res;
+ return res;
+}
+// 0 - All options
+void TDLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,inout float shadowStrengthOut,int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness)
+{
+ TDPBRResult res = TDLightingPBR(index,diffuseColor,specularColor,worldSpacePos,normal,shadowStrength,shadowColor,camVector,roughness); diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ shadowStrengthOut = res.shadowStrength;
+}
+// 0 - All options
+void TDLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness)
+{
+ TDPBRResult res = TDLightingPBR(index,diffuseColor,specularColor,worldSpacePos,normal,shadowStrength,shadowColor,camVector,roughness); diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 0 - All options
+TDPBRResult TDEnvLightingPBR(int index,vec3 diffuseColor,vec3 specularColor,vec3 normal,vec3 camVector,float roughness,float ambientOcclusion)
+{
+ TDPBRResult res;
+ return res;
+}
+// 0 - All options
+void TDEnvLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 diffuseColor,vec3 specularColor,vec3 normal,vec3 camVector,float roughness,float ambientOcclusion)
+{
+ TDPBRResult res = TDEnvLightingPBR(index, diffuseColor, specularColor, normal, camVector, roughness, ambientOcclusion);
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 0 - All options
+TDPhongResult TDLighting(int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ return res;
+}
+// 0 - Legacy
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,inout float shadowStrengthOut,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ specularContrib2 = res.specular2;
+ shadowStrengthOut = res.shadowStrength;
+}
+// 0 - Legacy
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ specularContrib2 = res.specular2;
+}
+// 1 - Without specular2
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 2 - Without shadows
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,int index,vec3 worldSpacePos,vec3 normal,vec3 camVector,float shininess,float shininess2)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+ specularContrib2 = res.specular2;
+}
+// 3 - diffuse and specular only
+void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 worldSpacePos,vec3 normal,vec3 camVector,float shininess)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+ specularContrib = res.specular;
+}
+// 4 - Diffuse only
+void TDLighting(inout vec3 diffuseContrib,int index, vec3 worldSpacePos, vec3 normal)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+}
+// 5 - diffuse only with shadows
+void TDLighting(inout vec3 diffuseContrib,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor)
+{
+ TDPhongResult res;
+ switch (index)
+ {
+ default:
+ res.diffuse = vec3(0.0);
+ res.specular = vec3(0.0);
+ res.specular2 = vec3(0.0);
+ res.shadowStrength = 0.0;
+ break;
+ }
+ diffuseContrib = res.diffuse;
+}
+vec4 TDProjMap(int index, vec3 worldSpacePos, vec4 defaultColor) {
+ switch (index)
+ {
+ default: return defaultColor;
+ }
+}
+vec4 TDFog(vec4 color, vec3 lightingSpacePosition, int cameraIndex) {
+ switch (cameraIndex) {
+ default:
+ case 0:
+ {
+ return color;
+ }
+ }
+}
+vec4 TDFog(vec4 color, vec3 lightingSpacePosition)
+{
+ return TDFog(color, lightingSpacePosition, 0);
+}
+vec3 TDInstanceTexCoord(int index, vec3 t) {
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceTexCoord, coord);
+ v[0] = t.s;
+ v[1] = t.t;
+ v[2] = samp[0];
+ t.stp = v.stp;
+ return t;
+}
+bool TDInstanceActive(int index) {
+ index -= uTDInstanceIDOffset;
+ float v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v = samp[0];
+ return v != 0.0;
+}
+vec3 iTDInstanceTranslate(int index, out bool instanceActive) {
+ int origIndex = index;
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ instanceActive = samp[0] != 0.0;
+ return v;
+}
+vec3 TDInstanceTranslate(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ return v;
+}
+mat3 TDInstanceRotateMat(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ mat3 m = mat3(1.0);
+{
+ mat3 r;
+}
+ return m;
+}
+vec3 TDInstanceScale(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(1.0, 1.0, 1.0);
+ return v;
+}
+vec3 TDInstancePivot(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ return v;
+}
+vec3 TDInstanceRotTo(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 1.0);
+ return v;
+}
+vec3 TDInstanceRotUp(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 1.0, 0.0);
+ return v;
+}
+mat4 TDInstanceMat(int id) {
+ bool instanceActive = true;
+ vec3 t = iTDInstanceTranslate(id, instanceActive);
+ if (!instanceActive)
+ {
+ return mat4(0.0);
+ }
+ mat4 m = mat4(1.0);
+ {
+ vec3 tt = t;
+ m[3][0] += m[0][0]*tt.x;
+ m[3][1] += m[0][1]*tt.x;
+ m[3][2] += m[0][2]*tt.x;
+ m[3][3] += m[0][3]*tt.x;
+ m[3][0] += m[1][0]*tt.y;
+ m[3][1] += m[1][1]*tt.y;
+ m[3][2] += m[1][2]*tt.y;
+ m[3][3] += m[1][3]*tt.y;
+ m[3][0] += m[2][0]*tt.z;
+ m[3][1] += m[2][1]*tt.z;
+ m[3][2] += m[2][2]*tt.z;
+ m[3][3] += m[2][3]*tt.z;
+ }
+ return m;
+}
+mat3 TDInstanceMat3(int id) {
+ mat3 m = mat3(1.0);
+ return m;
+}
+mat3 TDInstanceMat3ForNorm(int id) {
+ mat3 m = TDInstanceMat3(id);
+ return m;
+}
+vec4 TDInstanceColor(int index, vec4 curColor) {
+ index -= uTDInstanceIDOffset;
+ vec4 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceColor, coord);
+ v[0] = samp[0];
+ v[1] = samp[1];
+ v[2] = samp[2];
+ v[3] = 1.0;
+ curColor[0] = v[0];
+;
+ curColor[1] = v[1];
+;
+ curColor[2] = v[2];
+;
+ return curColor;
+}
diff --git a/Test/vk.relaxed.stagelink.0.1.vert b/Test/vk.relaxed.stagelink.0.1.vert
new file mode 100755
index 00000000..3c5de986
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.1.vert
@@ -0,0 +1,242 @@
+#version 460
+layout(location = 0) in vec3 P;
+layout(location = 1) in vec3 N;
+layout(location = 2) in vec4 Cd;
+layout(location = 3) in vec3 uv[8];
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDLight
+{
+ vec4 position;
+ vec3 direction;
+ vec3 diffuse;
+ vec4 nearFar;
+ vec4 lightSize;
+ vec4 misc;
+ vec4 coneLookupScaleBias;
+ vec4 attenScaleBiasRoll;
+ mat4 shadowMapMatrix;
+ mat4 shadowMapCamMatrix;
+ vec4 shadowMapRes;
+ mat4 projMapMatrix;
+};
+struct TDEnvLight
+{
+ vec3 color;
+ mat3 rotate;
+};
+layout(std140) uniform TDLightBlock
+{
+ TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE];
+};
+layout(std140) uniform TDEnvLightBlock
+{
+ TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
+};
+layout(std430) readonly restrict buffer TDEnvLightBuffer
+{
+ vec3 shCoeffs[9];
+} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+layout (rgba8) uniform image2D mTD2DImageOutputs[1];
+layout (rgba8) uniform image2DArray mTD2DArrayImageOutputs[1];
+layout (rgba8) uniform image3D mTD3DImageOutputs[1];
+layout (rgba8) uniform imageCube mTDCubeImageOutputs[1];
+
+mat4 TDInstanceMat(int instanceID);
+mat3 TDInstanceMat3(int instanceID);
+vec3 TDInstanceTranslate(int instanceID);
+bool TDInstanceActive(int instanceID);
+mat3 TDInstanceRotateMat(int instanceID);
+vec3 TDInstanceScale(int instanceID);
+vec3 TDInstanceTexCoord(int instanceID, vec3 t);
+vec4 TDInstanceColor(int instanceID, vec4 curColor);
+vec4 TDInstanceCustomAttrib0(int instanceID);
+vec4 TDInstanceCustomAttrib1(int instanceID);
+vec4 TDInstanceCustomAttrib2(int instanceID);
+vec4 TDInstanceCustomAttrib3(int instanceID);
+vec4 TDInstanceCustomAttrib4(int instanceID);
+vec4 TDInstanceCustomAttrib5(int instanceID);
+vec4 TDInstanceCustomAttrib6(int instanceID);
+vec4 TDInstanceCustomAttrib7(int instanceID);
+vec4 TDInstanceCustomAttrib8(int instanceID);
+vec4 TDInstanceCustomAttrib9(int instanceID);
+vec4 TDInstanceCustomAttrib10(int instanceID);
+vec4 TDInstanceCustomAttrib11(int instanceID);
+uint TDInstanceTextureIndex(int instanceIndex);
+vec4 TDInstanceTexture(uint texIndex, vec3 uv);
+vec4 TDInstanceTexture(uint texIndex, vec2 uv);
+
+vec4 TDDeform(vec4 pos);
+vec4 TDDeform(vec3 pos);
+vec4 TDDeform(int instanceID, vec3 pos);
+vec3 TDDeformVec(vec3 v);
+vec3 TDDeformVec(int instanceID, vec3 v);
+vec3 TDDeformNorm(vec3 v);
+vec3 TDDeformNorm(int instanceID, vec3 v);
+vec4 TDSkinnedDeform(vec4 pos);
+vec3 TDSkinnedDeformVec(vec3 vec);
+vec3 TDSkinnedDeformNorm(vec3 vec);
+vec4 TDInstanceDeform(vec4 pos);
+vec3 TDInstanceDeformVec(vec3 vec);
+vec3 TDInstanceDeformNorm(vec3 vec);
+vec4 TDInstanceDeform(int instanceID, vec4 pos);
+vec3 TDInstanceDeformVec(int instanceID, vec3 vec);
+vec3 TDInstanceDeformNorm(int instanceID, vec3 vec);
+vec3 TDFastDeformTangent(vec3 oldNorm, vec4 oldTangent, vec3 deformedNorm);
+mat4 TDBoneMat(int boneIndex);
+mat4 TDInstanceMat();
+mat3 TDInstanceMat3();
+vec3 TDInstanceTranslate();
+bool TDInstanceActive();
+mat3 TDInstanceRotateMat();
+vec3 TDInstanceScale();
+vec3 TDInstanceTexCoord(vec3 t);
+vec4 TDInstanceColor(vec4 curColor);
+vec4 TDPointColor();
+#ifdef TD_PICKING_ACTIVE
+out TDPickVertex {
+ vec3 sopSpacePosition;
+ vec3 camSpacePosition;
+ vec3 worldSpacePosition;
+ vec3 sopSpaceNormal;
+ vec3 camSpaceNormal;
+ vec3 worldSpaceNormal;
+ vec3 uv[1];
+ flat int pickId;
+ flat int instanceId;
+ vec4 color;
+} oTDPickVert;
+#define vTDPickVert oTDPickVert
+#endif
+vec4 iTDCamToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod)
+{
+ if (!TDInstanceActive())
+ return vec4(2, 2, 2, 0);
+ v = uTDMats[0].proj * v;
+ return v;
+}
+vec4 iTDWorldToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod) {
+ if (!TDInstanceActive())
+ return vec4(2, 2, 2, 0);
+ v = uTDMats[0].camProj * v;
+ return v;
+}
+vec4 TDDeform(vec4 pos);
+vec4 TDDeform(vec3 pos);
+vec4 TDInstanceColor(vec4 curColor);
+vec3 TDInstanceTexCoord(vec3 t);
+int TDInstanceID() {
+ return gl_InstanceID + uTDInstanceIDOffset;
+}
+int TDCameraIndex() {
+ return 0;
+}
+vec3 TDUVUnwrapCoord() {
+ return uv[0];
+}
+#ifdef TD_PICKING_ACTIVE
+uniform int uTDPickId;
+#endif
+int TDPickID() {
+#ifdef TD_PICKING_ACTIVE
+ return uTDPickId;
+#else
+ return 0;
+#endif
+}
+float iTDConvertPickId(int id) {
+ id |= 1073741824;
+ return intBitsToFloat(id);
+}
+
+ void TDWritePickingValues() {
+#ifdef TD_PICKING_ACTIVE
+ vec4 worldPos = TDDeform(P);
+ vec4 camPos = uTDMats[TDCameraIndex()].cam * worldPos;
+ oTDPickVert.pickId = TDPickID();
+#endif
+}
+vec4 TDWorldToProj(vec4 v, vec3 uv)
+{
+ return iTDWorldToProj(v, uv, TDCameraIndex(), true);
+}
+vec4 TDWorldToProj(vec3 v, vec3 uv)
+{
+ return TDWorldToProj(vec4(v, 1.0), uv);
+}
+vec4 TDWorldToProj(vec4 v)
+{
+ return TDWorldToProj(v, vec3(0.0));
+}
+vec4 TDWorldToProj(vec3 v)
+{
+ return TDWorldToProj(vec4(v, 1.0));
+}
+vec4 TDPointColor() {
+ return Cd;
+}
diff --git a/Test/vk.relaxed.stagelink.0.2.frag b/Test/vk.relaxed.stagelink.0.2.frag
new file mode 100755
index 00000000..27bd540d
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.2.frag
@@ -0,0 +1,9 @@
+#version 460
+vec4 TDOutputSwizzle(vec4 c)
+{
+ return c.rgba;
+}
+uvec4 TDOutputSwizzle(uvec4 c)
+{
+ return c.rgba;
+}
diff --git a/Test/vk.relaxed.stagelink.0.2.vert b/Test/vk.relaxed.stagelink.0.2.vert
new file mode 100755
index 00000000..69c0b21b
--- /dev/null
+++ b/Test/vk.relaxed.stagelink.0.2.vert
@@ -0,0 +1,320 @@
+#version 460
+uniform int uTDInstanceIDOffset;
+uniform int uTDNumInstances;
+uniform float uTDAlphaTestVal;
+#define TD_NUM_COLOR_BUFFERS 1
+#define TD_NUM_LIGHTS 0
+#define TD_NUM_SHADOWED_LIGHTS 0
+#define TD_NUM_ENV_LIGHTS 0
+#define TD_LIGHTS_ARRAY_SIZE 1
+#define TD_ENV_LIGHTS_ARRAY_SIZE 1
+#define TD_NUM_CAMERAS 1
+struct TDLight
+{
+ vec4 position;
+ vec3 direction;
+ vec3 diffuse;
+ vec4 nearFar;
+ vec4 lightSize;
+ vec4 misc;
+ vec4 coneLookupScaleBias;
+ vec4 attenScaleBiasRoll;
+ mat4 shadowMapMatrix;
+ mat4 shadowMapCamMatrix;
+ vec4 shadowMapRes;
+ mat4 projMapMatrix;
+};
+struct TDEnvLight
+{
+ vec3 color;
+ mat3 rotate;
+};
+layout(std140) uniform TDLightBlock
+{
+ TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE];
+};
+layout(std140) uniform TDEnvLightBlock
+{
+ TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE];
+};
+layout(std430) readonly restrict buffer TDEnvLightBuffer
+{
+ vec3 shCoeffs[9];
+} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE];
+struct TDPhongResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ vec3 specular2;
+ float shadowStrength;
+};
+struct TDPBRResult
+{
+ vec3 diffuse;
+ vec3 specular;
+ float shadowStrength;
+};
+struct TDMatrix
+{
+ mat4 world;
+ mat4 worldInverse;
+ mat4 worldCam;
+ mat4 worldCamInverse;
+ mat4 cam;
+ mat4 camInverse;
+ mat4 camProj;
+ mat4 camProjInverse;
+ mat4 proj;
+ mat4 projInverse;
+ mat4 worldCamProj;
+ mat4 worldCamProjInverse;
+ mat4 quadReproject;
+ mat3 worldForNormals;
+ mat3 camForNormals;
+ mat3 worldCamForNormals;
+};
+layout(std140) uniform TDMatricesBlock {
+ TDMatrix uTDMats[TD_NUM_CAMERAS];
+};
+struct TDCameraInfo
+{
+ vec4 nearFar;
+ vec4 fog;
+ vec4 fogColor;
+ int renderTOPCameraIndex;
+};
+layout(std140) uniform TDCameraInfoBlock {
+ TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS];
+};
+struct TDGeneral
+{
+ vec4 ambientColor;
+ vec4 nearFar;
+ vec4 viewport;
+ vec4 viewportRes;
+ vec4 fog;
+ vec4 fogColor;
+};
+layout(std140) uniform TDGeneralBlock {
+ TDGeneral uTDGeneral;
+};
+
+layout(binding = 15) uniform samplerBuffer sTDInstanceT;
+layout(binding = 16) uniform samplerBuffer sTDInstanceTexCoord;
+layout(binding = 17) uniform samplerBuffer sTDInstanceColor;
+#define TD_NUM_BONES 0
+vec4 TDWorldToProj(vec4 v);
+vec4 TDWorldToProj(vec3 v);
+vec4 TDWorldToProj(vec4 v, vec3 uv);
+vec4 TDWorldToProj(vec3 v, vec3 uv);
+int TDPickID();
+int TDInstanceID();
+int TDCameraIndex();
+vec3 TDUVUnwrapCoord();
+vec3 TDInstanceTexCoord(int index, vec3 t) {
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceTexCoord, coord);
+ v[0] = t.s;
+ v[1] = t.t;
+ v[2] = samp[0];
+ t.stp = v.stp;
+ return t;
+}
+bool TDInstanceActive(int index) {
+ index -= uTDInstanceIDOffset;
+ float v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v = samp[0];
+ return v != 0.0;
+}
+vec3 iTDInstanceTranslate(int index, out bool instanceActive) {
+ int origIndex = index;
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ instanceActive = samp[0] != 0.0;
+ return v;
+}
+vec3 TDInstanceTranslate(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceT, coord);
+ v[0] = samp[1];
+ v[1] = samp[2];
+ v[2] = samp[3];
+ return v;
+}
+mat3 TDInstanceRotateMat(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ mat3 m = mat3(1.0);
+{
+ mat3 r;
+}
+ return m;
+}
+vec3 TDInstanceScale(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(1.0, 1.0, 1.0);
+ return v;
+}
+vec3 TDInstancePivot(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 0.0);
+ return v;
+}
+vec3 TDInstanceRotTo(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 0.0, 1.0);
+ return v;
+}
+vec3 TDInstanceRotUp(int index) {
+ index -= uTDInstanceIDOffset;
+ vec3 v = vec3(0.0, 1.0, 0.0);
+ return v;
+}
+mat4 TDInstanceMat(int id) {
+ bool instanceActive = true;
+ vec3 t = iTDInstanceTranslate(id, instanceActive);
+ if (!instanceActive)
+ {
+ return mat4(0.0);
+ }
+ mat4 m = mat4(1.0);
+ {
+ vec3 tt = t;
+ m[3][0] += m[0][0]*tt.x;
+ m[3][1] += m[0][1]*tt.x;
+ m[3][2] += m[0][2]*tt.x;
+ m[3][3] += m[0][3]*tt.x;
+ m[3][0] += m[1][0]*tt.y;
+ m[3][1] += m[1][1]*tt.y;
+ m[3][2] += m[1][2]*tt.y;
+ m[3][3] += m[1][3]*tt.y;
+ m[3][0] += m[2][0]*tt.z;
+ m[3][1] += m[2][1]*tt.z;
+ m[3][2] += m[2][2]*tt.z;
+ m[3][3] += m[2][3]*tt.z;
+ }
+ return m;
+}
+mat3 TDInstanceMat3(int id) {
+ mat3 m = mat3(1.0);
+ return m;
+}
+mat3 TDInstanceMat3ForNorm(int id) {
+ mat3 m = TDInstanceMat3(id);
+ return m;
+}
+vec4 TDInstanceColor(int index, vec4 curColor) {
+ index -= uTDInstanceIDOffset;
+ vec4 v;
+ int coord = index;
+ vec4 samp = texelFetch(sTDInstanceColor, coord);
+ v[0] = samp[0];
+ v[1] = samp[1];
+ v[2] = samp[2];
+ v[3] = 1.0;
+ curColor[0] = v[0];
+;
+ curColor[1] = v[1];
+;
+ curColor[2] = v[2];
+;
+ return curColor;
+}
+vec4 TDInstanceDeform(int id, vec4 pos) {
+ pos = TDInstanceMat(id) * pos;
+ return uTDMats[TDCameraIndex()].world * pos;
+}
+
+vec3 TDInstanceDeformVec(int id, vec3 vec)
+{
+ mat3 m = TDInstanceMat3(id);
+ return mat3(uTDMats[TDCameraIndex()].world) * (m * vec);
+}
+vec3 TDInstanceDeformNorm(int id, vec3 vec)
+{
+ mat3 m = TDInstanceMat3ForNorm(id);
+ return mat3(uTDMats[TDCameraIndex()].worldForNormals) * (m * vec);
+}
+vec4 TDInstanceDeform(vec4 pos) {
+ return TDInstanceDeform(TDInstanceID(), pos);
+}
+vec3 TDInstanceDeformVec(vec3 vec) {
+ return TDInstanceDeformVec(TDInstanceID(), vec);
+}
+vec3 TDInstanceDeformNorm(vec3 vec) {
+ return TDInstanceDeformNorm(TDInstanceID(), vec);
+}
+bool TDInstanceActive() { return TDInstanceActive(TDInstanceID()); }
+vec3 TDInstanceTranslate() { return TDInstanceTranslate(TDInstanceID()); }
+mat3 TDInstanceRotateMat() { return TDInstanceRotateMat(TDInstanceID()); }
+vec3 TDInstanceScale() { return TDInstanceScale(TDInstanceID()); }
+mat4 TDInstanceMat() { return TDInstanceMat(TDInstanceID());
+ }
+mat3 TDInstanceMat3() { return TDInstanceMat3(TDInstanceID());
+}
+vec3 TDInstanceTexCoord(vec3 t) {
+ return TDInstanceTexCoord(TDInstanceID(), t);
+}
+vec4 TDInstanceColor(vec4 curColor) {
+ return TDInstanceColor(TDInstanceID(), curColor);
+}
+vec4 TDSkinnedDeform(vec4 pos) { return pos; }
+
+vec3 TDSkinnedDeformVec(vec3 vec) { return vec; }
+
+vec3 TDFastDeformTangent(vec3 oldNorm, vec4 oldTangent, vec3 deformedNorm)
+{ return oldTangent.xyz; }
+mat4 TDBoneMat(int index) {
+ return mat4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);
+}
+vec4 TDDeform(vec4 pos) {
+ pos = TDSkinnedDeform(pos);
+ pos = TDInstanceDeform(pos);
+ return pos;
+}
+
+vec4 TDDeform(int instanceID, vec3 p) {
+ vec4 pos = vec4(p, 1.0);
+ pos = TDSkinnedDeform(pos);
+ pos = TDInstanceDeform(instanceID, pos);
+ return pos;
+}
+
+vec4 TDDeform(vec3 pos) {
+ return TDDeform(TDInstanceID(), pos);
+}
+
+vec3 TDDeformVec(int instanceID, vec3 vec) {
+ vec = TDSkinnedDeformVec(vec);
+ vec = TDInstanceDeformVec(instanceID, vec);
+ return vec;
+}
+
+vec3 TDDeformVec(vec3 vec) {
+ return TDDeformVec(TDInstanceID(), vec);
+}
+
+vec3 TDDeformNorm(int instanceID, vec3 vec) {
+ vec = TDSkinnedDeformVec(vec);
+ vec = TDInstanceDeformNorm(instanceID, vec);
+ return vec;
+}
+
+vec3 TDDeformNorm(vec3 vec) {
+ return TDDeformNorm(TDInstanceID(), vec);
+}
+
+vec3 TDSkinnedDeformNorm(vec3 vec) {
+ vec = TDSkinnedDeformVec(vec);
+ return vec;
+}
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index 620be97c..fe376fee 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -580,9 +580,6 @@ void TIntermediate::mergeGlobalUniformBlocks(TInfoSink& infoSink, TIntermediate&
}
void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unit) {
- if (block->getType() == unitBlock->getType()) {
- return;
- }
if (block->getType().getTypeName() != unitBlock->getType().getTypeName() ||
block->getType().getBasicType() != unitBlock->getType().getBasicType() ||
@@ -629,44 +626,42 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl
}
}
- TType unitType;
- unitType.shallowCopy(unitBlock->getType());
-
// update symbol node in unit tree,
// and other nodes that may reference it
class TMergeBlockTraverser : public TIntermTraverser {
public:
- TMergeBlockTraverser(const glslang::TType &type, const glslang::TType& unitType,
- glslang::TIntermediate& unit,
- const std::map<unsigned int, unsigned int>& memberIdxUpdates) :
- newType(type), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates)
- { }
- virtual ~TMergeBlockTraverser() { }
-
- const glslang::TType& newType; // type with modifications
- const glslang::TType& unitType; // copy of original type
- glslang::TIntermediate& unit; // intermediate that is being updated
- const std::map<unsigned int, unsigned int>& memberIndexUpdates;
-
- virtual void visitSymbol(TIntermSymbol* symbol)
+ TMergeBlockTraverser(const TIntermSymbol* newSym)
+ : newSymbol(newSym), unitType(nullptr), unit(nullptr), memberIndexUpdates(nullptr)
{
- glslang::TType& symType = symbol->getWritableType();
+ }
+ TMergeBlockTraverser(const TIntermSymbol* newSym, const glslang::TType* unitType, glslang::TIntermediate* unit,
+ const std::map<unsigned int, unsigned int>* memberIdxUpdates)
+ : newSymbol(newSym), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates)
+ {
+ }
+ virtual ~TMergeBlockTraverser() {}
- if (symType == unitType) {
- // each symbol node has a local copy of the unitType
- // if merging involves changing properties that aren't shared objects
- // they should be updated in all instances
+ const TIntermSymbol* newSymbol;
+ const glslang::TType* unitType; // copy of original type
+ glslang::TIntermediate* unit; // intermediate that is being updated
+ const std::map<unsigned int, unsigned int>* memberIndexUpdates;
- // e.g. the struct list is a ptr to an object, so it can be updated
- // once, outside the traverser
- //*symType.getWritableStruct() = *newType.getStruct();
+ virtual void visitSymbol(TIntermSymbol* symbol)
+ {
+ if (newSymbol->getAccessName() == symbol->getAccessName() &&
+ newSymbol->getQualifier().getBlockStorage() == symbol->getQualifier().getBlockStorage()) {
+ // Each symbol node may have a local copy of the block structure.
+ // Update those structures to match the new one post-merge
+ *(symbol->getWritableType().getWritableStruct()) = *(newSymbol->getType().getStruct());
}
-
}
virtual bool visitBinary(TVisit, glslang::TIntermBinary* node)
{
- if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == unitType) {
+ if (!unit || !unitType || !memberIndexUpdates || memberIndexUpdates->empty())
+ return true;
+
+ if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == *unitType) {
// this is a dereference to a member of the block since the
// member list changed, need to update this to point to the
// right index
@@ -674,8 +669,8 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl
glslang::TIntermConstantUnion* constNode = node->getRight()->getAsConstantUnion();
unsigned int memberIdx = constNode->getConstArray()[0].getUConst();
- unsigned int newIdx = memberIndexUpdates.at(memberIdx);
- TIntermTyped* newConstNode = unit.addConstantUnion(newIdx, node->getRight()->getLoc());
+ unsigned int newIdx = memberIndexUpdates->at(memberIdx);
+ TIntermTyped* newConstNode = unit->addConstantUnion(newIdx, node->getRight()->getLoc());
node->setRight(newConstNode);
delete constNode;
@@ -684,10 +679,20 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl
}
return true;
}
- } finalLinkTraverser(block->getType(), unitType, *unit, memberIndexUpdates);
+ };
+
+ // 'this' may have symbols that are using the old block structure, so traverse the tree to update those
+ // in 'visitSymbol'
+ TMergeBlockTraverser finalLinkTraverser(block);
+ getTreeRoot()->traverse(&finalLinkTraverser);
- // update the tree to use the new type
- unit->getTreeRoot()->traverse(&finalLinkTraverser);
+ // The 'unit' intermediate needs the block structures update, but also structure entry indices
+ // may have changed from the old block to the new one that it was merged into, so update those
+ // in 'visitBinary'
+ TType unitType;
+ unitType.shallowCopy(unitBlock->getType());
+ TMergeBlockTraverser unitFinalLinkTraverser(block, &unitType, unit, &memberIndexUpdates);
+ unit->getTreeRoot()->traverse(&unitFinalLinkTraverser);
// update the member list
(*unitMemberList) = (*memberList);
diff --git a/gtests/VkRelaxed.FromFile.cpp b/gtests/VkRelaxed.FromFile.cpp
index 777134d9..96cd3cf6 100644
--- a/gtests/VkRelaxed.FromFile.cpp
+++ b/gtests/VkRelaxed.FromFile.cpp
@@ -107,8 +107,8 @@ bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) {
auto inQualifier = in.getType()->getQualifier();
auto outQualifier = out->second->getType()->getQualifier();
success &= outQualifier.layoutLocation == inQualifier.layoutLocation;
- }
- else {
+ // These are not part of a matched interface. Other cases still need to be added.
+ } else if (name != "gl_FrontFacing" && name != "gl_FragCoord") {
success &= false;
}
}
@@ -293,6 +293,7 @@ INSTANTIATE_TEST_SUITE_P(
::testing::ValuesIn(std::vector<vkRelaxedData>({
{{"vk.relaxed.frag"}},
{{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}},
+ {{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}},
{{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}},
{{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}},
{{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } },