hlsl.samplebias.basic.dx10.frag
Shader version: 500
gl_FragCoord origin is upper left
using depth_any
0:? Sequence
0:28  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28    Function Parameters: 
0:?     Sequence
0:31      Sequence
0:31        move second child to first child ( temp 4-component vector of float)
0:31          'txval10' ( temp 4-component vector of float)
0:31          texture ( temp 4-component vector of float)
0:31            Construct combined texture-sampler ( temp sampler1D)
0:31              'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:31              'g_sSamp' (layout( binding=0) uniform sampler)
0:31            Constant:
0:31              0.100000
0:31            Constant:
0:31              0.500000
0:32      Sequence
0:32        move second child to first child ( temp 4-component vector of int)
0:32          'txval11' ( temp 4-component vector of int)
0:32          texture ( temp 4-component vector of int)
0:32            Construct combined texture-sampler ( temp isampler1D)
0:32              'g_tTex1di4' ( uniform itexture1D)
0:32              'g_sSamp' (layout( binding=0) uniform sampler)
0:32            Constant:
0:32              0.200000
0:32            Constant:
0:32              0.500000
0:33      Sequence
0:33        move second child to first child ( temp 4-component vector of uint)
0:33          'txval12' ( temp 4-component vector of uint)
0:33          texture ( temp 4-component vector of uint)
0:33            Construct combined texture-sampler ( temp usampler1D)
0:33              'g_tTex1du4' ( uniform utexture1D)
0:33              'g_sSamp' (layout( binding=0) uniform sampler)
0:33            Constant:
0:33              0.300000
0:33            Constant:
0:33              0.500000
0:35      Sequence
0:35        move second child to first child ( temp 4-component vector of float)
0:35          'txval20' ( temp 4-component vector of float)
0:35          texture ( temp 4-component vector of float)
0:35            Construct combined texture-sampler ( temp sampler2D)
0:35              'g_tTex2df4' ( uniform texture2D)
0:35              'g_sSamp' (layout( binding=0) uniform sampler)
0:35            Constant:
0:35              0.100000
0:35              0.200000
0:35            Constant:
0:35              0.500000
0:36      Sequence
0:36        move second child to first child ( temp 4-component vector of int)
0:36          'txval21' ( temp 4-component vector of int)
0:36          texture ( temp 4-component vector of int)
0:36            Construct combined texture-sampler ( temp isampler2D)
0:36              'g_tTex2di4' ( uniform itexture2D)
0:36              'g_sSamp' (layout( binding=0) uniform sampler)
0:36            Constant:
0:36              0.300000
0:36              0.400000
0:36            Constant:
0:36              0.500000
0:37      Sequence
0:37        move second child to first child ( temp 4-component vector of uint)
0:37          'txval22' ( temp 4-component vector of uint)
0:37          texture ( temp 4-component vector of uint)
0:37            Construct combined texture-sampler ( temp usampler2D)
0:37              'g_tTex2du4' ( uniform utexture2D)
0:37              'g_sSamp' (layout( binding=0) uniform sampler)
0:37            Constant:
0:37              0.500000
0:37              0.600000
0:37            Constant:
0:37              0.500000
0:39      Sequence
0:39        move second child to first child ( temp 4-component vector of float)
0:39          'txval30' ( temp 4-component vector of float)
0:39          texture ( temp 4-component vector of float)
0:39            Construct combined texture-sampler ( temp sampler3D)
0:39              'g_tTex3df4' ( uniform texture3D)
0:39              'g_sSamp' (layout( binding=0) uniform sampler)
0:39            Constant:
0:39              0.100000
0:39              0.200000
0:39              0.300000
0:39            Constant:
0:39              0.500000
0:40      Sequence
0:40        move second child to first child ( temp 4-component vector of int)
0:40          'txval31' ( temp 4-component vector of int)
0:40          texture ( temp 4-component vector of int)
0:40            Construct combined texture-sampler ( temp isampler3D)
0:40              'g_tTex3di4' ( uniform itexture3D)
0:40              'g_sSamp' (layout( binding=0) uniform sampler)
0:40            Constant:
0:40              0.400000
0:40              0.500000
0:40              0.600000
0:40            Constant:
0:40              0.500000
0:41      Sequence
0:41        move second child to first child ( temp 4-component vector of uint)
0:41          'txval32' ( temp 4-component vector of uint)
0:41          texture ( temp 4-component vector of uint)
0:41            Construct combined texture-sampler ( temp usampler3D)
0:41              'g_tTex3du4' ( uniform utexture3D)
0:41              'g_sSamp' (layout( binding=0) uniform sampler)
0:41            Constant:
0:41              0.700000
0:41              0.800000
0:41              0.900000
0:41            Constant:
0:41              0.500000
0:43      Sequence
0:43        move second child to first child ( temp 4-component vector of float)
0:43          'txval40' ( temp 4-component vector of float)
0:43          texture ( temp 4-component vector of float)
0:43            Construct combined texture-sampler ( temp samplerCube)
0:43              'g_tTexcdf4' ( uniform textureCube)
0:43              'g_sSamp' (layout( binding=0) uniform sampler)
0:43            Constant:
0:43              0.100000
0:43              0.200000
0:43              0.300000
0:43            Constant:
0:43              0.500000
0:44      Sequence
0:44        move second child to first child ( temp 4-component vector of int)
0:44          'txval41' ( temp 4-component vector of int)
0:44          texture ( temp 4-component vector of int)
0:44            Construct combined texture-sampler ( temp isamplerCube)
0:44              'g_tTexcdi4' ( uniform itextureCube)
0:44              'g_sSamp' (layout( binding=0) uniform sampler)
0:44            Constant:
0:44              0.400000
0:44              0.500000
0:44              0.600000
0:44            Constant:
0:44              0.500000
0:45      Sequence
0:45        move second child to first child ( temp 4-component vector of uint)
0:45          'txval42' ( temp 4-component vector of uint)
0:45          texture ( temp 4-component vector of uint)
0:45            Construct combined texture-sampler ( temp usamplerCube)
0:45              'g_tTexcdu4' ( uniform utextureCube)
0:45              'g_sSamp' (layout( binding=0) uniform sampler)
0:45            Constant:
0:45              0.700000
0:45              0.800000
0:45              0.900000
0:45            Constant:
0:45              0.500000
0:47      move second child to first child ( temp 4-component vector of float)
0:47        Color: direct index for structure ( temp 4-component vector of float)
0:47          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:47          Constant:
0:47            0 (const int)
0:47        Constant:
0:47          1.000000
0:47          1.000000
0:47          1.000000
0:47          1.000000
0:48      move second child to first child ( temp float)
0:48        Depth: direct index for structure ( temp float)
0:48          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:48          Constant:
0:48            1 (const int)
0:48        Constant:
0:48          1.000000
0:50      Branch: Return with expression
0:50        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28  Function Definition: main( ( temp void)
0:28    Function Parameters: 
0:?     Sequence
0:28      Sequence
0:28        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28          Color: direct index for structure ( temp 4-component vector of float)
0:28            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28            Constant:
0:28              0 (const int)
0:28        move second child to first child ( temp float)
0:?           '@entryPointOutput.Depth' ( out float FragDepth)
0:28          Depth: direct index for structure ( temp float)
0:28            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28            Constant:
0:28              1 (const int)
0:?   Linker Objects
0:?     'g_sSamp' (layout( binding=0) uniform sampler)
0:?     'g_tTex1df4a' (layout( binding=1) uniform texture1D)
0:?     'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:?     'g_tTex1di4' ( uniform itexture1D)
0:?     'g_tTex1du4' ( uniform utexture1D)
0:?     'g_tTex2df4' ( uniform texture2D)
0:?     'g_tTex2di4' ( uniform itexture2D)
0:?     'g_tTex2du4' ( uniform utexture2D)
0:?     'g_tTex3df4' ( uniform texture3D)
0:?     'g_tTex3di4' ( uniform itexture3D)
0:?     'g_tTex3du4' ( uniform utexture3D)
0:?     'g_tTexcdf4' ( uniform textureCube)
0:?     'g_tTexcdi4' ( uniform itextureCube)
0:?     'g_tTexcdu4' ( uniform utextureCube)
0:?     '@entryPointOutput.Depth' ( out float FragDepth)
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
using depth_any
0:? Sequence
0:28  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28    Function Parameters: 
0:?     Sequence
0:31      Sequence
0:31        move second child to first child ( temp 4-component vector of float)
0:31          'txval10' ( temp 4-component vector of float)
0:31          texture ( temp 4-component vector of float)
0:31            Construct combined texture-sampler ( temp sampler1D)
0:31              'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:31              'g_sSamp' (layout( binding=0) uniform sampler)
0:31            Constant:
0:31              0.100000
0:31            Constant:
0:31              0.500000
0:32      Sequence
0:32        move second child to first child ( temp 4-component vector of int)
0:32          'txval11' ( temp 4-component vector of int)
0:32          texture ( temp 4-component vector of int)
0:32            Construct combined texture-sampler ( temp isampler1D)
0:32              'g_tTex1di4' ( uniform itexture1D)
0:32              'g_sSamp' (layout( binding=0) uniform sampler)
0:32            Constant:
0:32              0.200000
0:32            Constant:
0:32              0.500000
0:33      Sequence
0:33        move second child to first child ( temp 4-component vector of uint)
0:33          'txval12' ( temp 4-component vector of uint)
0:33          texture ( temp 4-component vector of uint)
0:33            Construct combined texture-sampler ( temp usampler1D)
0:33              'g_tTex1du4' ( uniform utexture1D)
0:33              'g_sSamp' (layout( binding=0) uniform sampler)
0:33            Constant:
0:33              0.300000
0:33            Constant:
0:33              0.500000
0:35      Sequence
0:35        move second child to first child ( temp 4-component vector of float)
0:35          'txval20' ( temp 4-component vector of float)
0:35          texture ( temp 4-component vector of float)
0:35            Construct combined texture-sampler ( temp sampler2D)
0:35              'g_tTex2df4' ( uniform texture2D)
0:35              'g_sSamp' (layout( binding=0) uniform sampler)
0:35            Constant:
0:35              0.100000
0:35              0.200000
0:35            Constant:
0:35              0.500000
0:36      Sequence
0:36        move second child to first child ( temp 4-component vector of int)
0:36          'txval21' ( temp 4-component vector of int)
0:36          texture ( temp 4-component vector of int)
0:36            Construct combined texture-sampler ( temp isampler2D)
0:36              'g_tTex2di4' ( uniform itexture2D)
0:36              'g_sSamp' (layout( binding=0) uniform sampler)
0:36            Constant:
0:36              0.300000
0:36              0.400000
0:36            Constant:
0:36              0.500000
0:37      Sequence
0:37        move second child to first child ( temp 4-component vector of uint)
0:37          'txval22' ( temp 4-component vector of uint)
0:37          texture ( temp 4-component vector of uint)
0:37            Construct combined texture-sampler ( temp usampler2D)
0:37              'g_tTex2du4' ( uniform utexture2D)
0:37              'g_sSamp' (layout( binding=0) uniform sampler)
0:37            Constant:
0:37              0.500000
0:37              0.600000
0:37            Constant:
0:37              0.500000
0:39      Sequence
0:39        move second child to first child ( temp 4-component vector of float)
0:39          'txval30' ( temp 4-component vector of float)
0:39          texture ( temp 4-component vector of float)
0:39            Construct combined texture-sampler ( temp sampler3D)
0:39              'g_tTex3df4' ( uniform texture3D)
0:39              'g_sSamp' (layout( binding=0) uniform sampler)
0:39            Constant:
0:39              0.100000
0:39              0.200000
0:39              0.300000
0:39            Constant:
0:39              0.500000
0:40      Sequence
0:40        move second child to first child ( temp 4-component vector of int)
0:40          'txval31' ( temp 4-component vector of int)
0:40          texture ( temp 4-component vector of int)
0:40            Construct combined texture-sampler ( temp isampler3D)
0:40              'g_tTex3di4' ( uniform itexture3D)
0:40              'g_sSamp' (layout( binding=0) uniform sampler)
0:40            Constant:
0:40              0.400000
0:40              0.500000
0:40              0.600000
0:40            Constant:
0:40              0.500000
0:41      Sequence
0:41        move second child to first child ( temp 4-component vector of uint)
0:41          'txval32' ( temp 4-component vector of uint)
0:41          texture ( temp 4-component vector of uint)
0:41            Construct combined texture-sampler ( temp usampler3D)
0:41              'g_tTex3du4' ( uniform utexture3D)
0:41              'g_sSamp' (layout( binding=0) uniform sampler)
0:41            Constant:
0:41              0.700000
0:41              0.800000
0:41              0.900000
0:41            Constant:
0:41              0.500000
0:43      Sequence
0:43        move second child to first child ( temp 4-component vector of float)
0:43          'txval40' ( temp 4-component vector of float)
0:43          texture ( temp 4-component vector of float)
0:43            Construct combined texture-sampler ( temp samplerCube)
0:43              'g_tTexcdf4' ( uniform textureCube)
0:43              'g_sSamp' (layout( binding=0) uniform sampler)
0:43            Constant:
0:43              0.100000
0:43              0.200000
0:43              0.300000
0:43            Constant:
0:43              0.500000
0:44      Sequence
0:44        move second child to first child ( temp 4-component vector of int)
0:44          'txval41' ( temp 4-component vector of int)
0:44          texture ( temp 4-component vector of int)
0:44            Construct combined texture-sampler ( temp isamplerCube)
0:44              'g_tTexcdi4' ( uniform itextureCube)
0:44              'g_sSamp' (layout( binding=0) uniform sampler)
0:44            Constant:
0:44              0.400000
0:44              0.500000
0:44              0.600000
0:44            Constant:
0:44              0.500000
0:45      Sequence
0:45        move second child to first child ( temp 4-component vector of uint)
0:45          'txval42' ( temp 4-component vector of uint)
0:45          texture ( temp 4-component vector of uint)
0:45            Construct combined texture-sampler ( temp usamplerCube)
0:45              'g_tTexcdu4' ( uniform utextureCube)
0:45              'g_sSamp' (layout( binding=0) uniform sampler)
0:45            Constant:
0:45              0.700000
0:45              0.800000
0:45              0.900000
0:45            Constant:
0:45              0.500000
0:47      move second child to first child ( temp 4-component vector of float)
0:47        Color: direct index for structure ( temp 4-component vector of float)
0:47          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:47          Constant:
0:47            0 (const int)
0:47        Constant:
0:47          1.000000
0:47          1.000000
0:47          1.000000
0:47          1.000000
0:48      move second child to first child ( temp float)
0:48        Depth: direct index for structure ( temp float)
0:48          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:48          Constant:
0:48            1 (const int)
0:48        Constant:
0:48          1.000000
0:50      Branch: Return with expression
0:50        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28  Function Definition: main( ( temp void)
0:28    Function Parameters: 
0:?     Sequence
0:28      Sequence
0:28        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
0:28          Color: direct index for structure ( temp 4-component vector of float)
0:28            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28            Constant:
0:28              0 (const int)
0:28        move second child to first child ( temp float)
0:?           '@entryPointOutput.Depth' ( out float FragDepth)
0:28          Depth: direct index for structure ( temp float)
0:28            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:28            Constant:
0:28              1 (const int)
0:?   Linker Objects
0:?     'g_sSamp' (layout( binding=0) uniform sampler)
0:?     'g_tTex1df4a' (layout( binding=1) uniform texture1D)
0:?     'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:?     'g_tTex1di4' ( uniform itexture1D)
0:?     'g_tTex1du4' ( uniform utexture1D)
0:?     'g_tTex2df4' ( uniform texture2D)
0:?     'g_tTex2di4' ( uniform itexture2D)
0:?     'g_tTex2du4' ( uniform utexture2D)
0:?     'g_tTex3df4' ( uniform texture3D)
0:?     'g_tTex3di4' ( uniform itexture3D)
0:?     'g_tTex3du4' ( uniform utexture3D)
0:?     'g_tTexcdf4' ( uniform textureCube)
0:?     'g_tTexcdi4' ( uniform itextureCube)
0:?     'g_tTexcdu4' ( uniform utextureCube)
0:?     '@entryPointOutput.Depth' ( out float FragDepth)
0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)

// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 170

                              Capability Shader
                              Capability Sampled1D
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 162 166
                              ExecutionMode 4 OriginUpperLeft
                              ExecutionMode 4 DepthReplacing
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PS_OUTPUT"
                              MemberName 8(PS_OUTPUT) 0  "Color"
                              MemberName 8(PS_OUTPUT) 1  "Depth"
                              Name 10  "@main("
                              Name 13  "txval10"
                              Name 16  "g_tTex1df4"
                              Name 20  "g_sSamp"
                              Name 30  "txval11"
                              Name 33  "g_tTex1di4"
                              Name 43  "txval12"
                              Name 46  "g_tTex1du4"
                              Name 53  "txval20"
                              Name 56  "g_tTex2df4"
                              Name 64  "txval21"
                              Name 67  "g_tTex2di4"
                              Name 75  "txval22"
                              Name 78  "g_tTex2du4"
                              Name 86  "txval30"
                              Name 89  "g_tTex3df4"
                              Name 97  "txval31"
                              Name 100  "g_tTex3di4"
                              Name 107  "txval32"
                              Name 110  "g_tTex3du4"
                              Name 120  "txval40"
                              Name 123  "g_tTexcdf4"
                              Name 129  "txval41"
                              Name 132  "g_tTexcdi4"
                              Name 138  "txval42"
                              Name 141  "g_tTexcdu4"
                              Name 148  "psout"
                              Name 159  "flattenTemp"
                              Name 162  "@entryPointOutput.Color"
                              Name 166  "@entryPointOutput.Depth"
                              Name 169  "g_tTex1df4a"
                              Decorate 16(g_tTex1df4) DescriptorSet 0
                              Decorate 16(g_tTex1df4) Binding 0
                              Decorate 20(g_sSamp) DescriptorSet 0
                              Decorate 20(g_sSamp) Binding 0
                              Decorate 33(g_tTex1di4) DescriptorSet 0
                              Decorate 33(g_tTex1di4) Binding 2
                              Decorate 46(g_tTex1du4) DescriptorSet 0
                              Decorate 46(g_tTex1du4) Binding 3
                              Decorate 56(g_tTex2df4) DescriptorSet 0
                              Decorate 56(g_tTex2df4) Binding 4
                              Decorate 67(g_tTex2di4) DescriptorSet 0
                              Decorate 67(g_tTex2di4) Binding 5
                              Decorate 78(g_tTex2du4) DescriptorSet 0
                              Decorate 78(g_tTex2du4) Binding 6
                              Decorate 89(g_tTex3df4) DescriptorSet 0
                              Decorate 89(g_tTex3df4) Binding 7
                              Decorate 100(g_tTex3di4) DescriptorSet 0
                              Decorate 100(g_tTex3di4) Binding 8
                              Decorate 110(g_tTex3du4) DescriptorSet 0
                              Decorate 110(g_tTex3du4) Binding 9
                              Decorate 123(g_tTexcdf4) DescriptorSet 0
                              Decorate 123(g_tTexcdf4) Binding 10
                              Decorate 132(g_tTexcdi4) DescriptorSet 0
                              Decorate 132(g_tTexcdi4) Binding 11
                              Decorate 141(g_tTexcdu4) DescriptorSet 0
                              Decorate 141(g_tTexcdu4) Binding 12
                              Decorate 162(@entryPointOutput.Color) Location 0
                              Decorate 166(@entryPointOutput.Depth) BuiltIn FragDepth
                              Decorate 169(g_tTex1df4a) DescriptorSet 0
                              Decorate 169(g_tTex1df4a) Binding 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
    8(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
               9:             TypeFunction 8(PS_OUTPUT)
              12:             TypePointer Function 7(fvec4)
              14:             TypeImage 6(float) 1D sampled format:Unknown
              15:             TypePointer UniformConstant 14
  16(g_tTex1df4):     15(ptr) Variable UniformConstant
              18:             TypeSampler
              19:             TypePointer UniformConstant 18
     20(g_sSamp):     19(ptr) Variable UniformConstant
              22:             TypeSampledImage 14
              24:    6(float) Constant 1036831949
              25:    6(float) Constant 1056964608
              27:             TypeInt 32 1
              28:             TypeVector 27(int) 4
              29:             TypePointer Function 28(ivec4)
              31:             TypeImage 27(int) 1D sampled format:Unknown
              32:             TypePointer UniformConstant 31
  33(g_tTex1di4):     32(ptr) Variable UniformConstant
              36:             TypeSampledImage 31
              38:    6(float) Constant 1045220557
              40:             TypeInt 32 0
              41:             TypeVector 40(int) 4
              42:             TypePointer Function 41(ivec4)
              44:             TypeImage 40(int) 1D sampled format:Unknown
              45:             TypePointer UniformConstant 44
  46(g_tTex1du4):     45(ptr) Variable UniformConstant
              49:             TypeSampledImage 44
              51:    6(float) Constant 1050253722
              54:             TypeImage 6(float) 2D sampled format:Unknown
              55:             TypePointer UniformConstant 54
  56(g_tTex2df4):     55(ptr) Variable UniformConstant
              59:             TypeSampledImage 54
              61:             TypeVector 6(float) 2
              62:   61(fvec2) ConstantComposite 24 38
              65:             TypeImage 27(int) 2D sampled format:Unknown
              66:             TypePointer UniformConstant 65
  67(g_tTex2di4):     66(ptr) Variable UniformConstant
              70:             TypeSampledImage 65
              72:    6(float) Constant 1053609165
              73:   61(fvec2) ConstantComposite 51 72
              76:             TypeImage 40(int) 2D sampled format:Unknown
              77:             TypePointer UniformConstant 76
  78(g_tTex2du4):     77(ptr) Variable UniformConstant
              81:             TypeSampledImage 76
              83:    6(float) Constant 1058642330
              84:   61(fvec2) ConstantComposite 25 83
              87:             TypeImage 6(float) 3D sampled format:Unknown
              88:             TypePointer UniformConstant 87
  89(g_tTex3df4):     88(ptr) Variable UniformConstant
              92:             TypeSampledImage 87
              94:             TypeVector 6(float) 3
              95:   94(fvec3) ConstantComposite 24 38 51
              98:             TypeImage 27(int) 3D sampled format:Unknown
              99:             TypePointer UniformConstant 98
 100(g_tTex3di4):     99(ptr) Variable UniformConstant
             103:             TypeSampledImage 98
             105:   94(fvec3) ConstantComposite 72 25 83
             108:             TypeImage 40(int) 3D sampled format:Unknown
             109:             TypePointer UniformConstant 108
 110(g_tTex3du4):    109(ptr) Variable UniformConstant
             113:             TypeSampledImage 108
             115:    6(float) Constant 1060320051
             116:    6(float) Constant 1061997773
             117:    6(float) Constant 1063675494
             118:   94(fvec3) ConstantComposite 115 116 117
             121:             TypeImage 6(float) Cube sampled format:Unknown
             122:             TypePointer UniformConstant 121
 123(g_tTexcdf4):    122(ptr) Variable UniformConstant
             126:             TypeSampledImage 121
             130:             TypeImage 27(int) Cube sampled format:Unknown
             131:             TypePointer UniformConstant 130
 132(g_tTexcdi4):    131(ptr) Variable UniformConstant
             135:             TypeSampledImage 130
             139:             TypeImage 40(int) Cube sampled format:Unknown
             140:             TypePointer UniformConstant 139
 141(g_tTexcdu4):    140(ptr) Variable UniformConstant
             144:             TypeSampledImage 139
             147:             TypePointer Function 8(PS_OUTPUT)
             149:     27(int) Constant 0
             150:    6(float) Constant 1065353216
             151:    7(fvec4) ConstantComposite 150 150 150 150
             153:     27(int) Constant 1
             154:             TypePointer Function 6(float)
             161:             TypePointer Output 7(fvec4)
162(@entryPointOutput.Color):    161(ptr) Variable Output
             165:             TypePointer Output 6(float)
166(@entryPointOutput.Depth):    165(ptr) Variable Output
169(g_tTex1df4a):     15(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
159(flattenTemp):    147(ptr) Variable Function
             160:8(PS_OUTPUT) FunctionCall 10(@main()
                              Store 159(flattenTemp) 160
             163:     12(ptr) AccessChain 159(flattenTemp) 149
             164:    7(fvec4) Load 163
                              Store 162(@entryPointOutput.Color) 164
             167:    154(ptr) AccessChain 159(flattenTemp) 153
             168:    6(float) Load 167
                              Store 166(@entryPointOutput.Depth) 168
                              Return
                              FunctionEnd
      10(@main():8(PS_OUTPUT) Function None 9
              11:             Label
     13(txval10):     12(ptr) Variable Function
     30(txval11):     29(ptr) Variable Function
     43(txval12):     42(ptr) Variable Function
     53(txval20):     12(ptr) Variable Function
     64(txval21):     29(ptr) Variable Function
     75(txval22):     42(ptr) Variable Function
     86(txval30):     12(ptr) Variable Function
     97(txval31):     29(ptr) Variable Function
    107(txval32):     42(ptr) Variable Function
    120(txval40):     12(ptr) Variable Function
    129(txval41):     29(ptr) Variable Function
    138(txval42):     42(ptr) Variable Function
      148(psout):    147(ptr) Variable Function
              17:          14 Load 16(g_tTex1df4)
              21:          18 Load 20(g_sSamp)
              23:          22 SampledImage 17 21
              26:    7(fvec4) ImageSampleImplicitLod 23 24 Bias 25
                              Store 13(txval10) 26
              34:          31 Load 33(g_tTex1di4)
              35:          18 Load 20(g_sSamp)
              37:          36 SampledImage 34 35
              39:   28(ivec4) ImageSampleImplicitLod 37 38 Bias 25
                              Store 30(txval11) 39
              47:          44 Load 46(g_tTex1du4)
              48:          18 Load 20(g_sSamp)
              50:          49 SampledImage 47 48
              52:   41(ivec4) ImageSampleImplicitLod 50 51 Bias 25
                              Store 43(txval12) 52
              57:          54 Load 56(g_tTex2df4)
              58:          18 Load 20(g_sSamp)
              60:          59 SampledImage 57 58
              63:    7(fvec4) ImageSampleImplicitLod 60 62 Bias 25
                              Store 53(txval20) 63
              68:          65 Load 67(g_tTex2di4)
              69:          18 Load 20(g_sSamp)
              71:          70 SampledImage 68 69
              74:   28(ivec4) ImageSampleImplicitLod 71 73 Bias 25
                              Store 64(txval21) 74
              79:          76 Load 78(g_tTex2du4)
              80:          18 Load 20(g_sSamp)
              82:          81 SampledImage 79 80
              85:   41(ivec4) ImageSampleImplicitLod 82 84 Bias 25
                              Store 75(txval22) 85
              90:          87 Load 89(g_tTex3df4)
              91:          18 Load 20(g_sSamp)
              93:          92 SampledImage 90 91
              96:    7(fvec4) ImageSampleImplicitLod 93 95 Bias 25
                              Store 86(txval30) 96
             101:          98 Load 100(g_tTex3di4)
             102:          18 Load 20(g_sSamp)
             104:         103 SampledImage 101 102
             106:   28(ivec4) ImageSampleImplicitLod 104 105 Bias 25
                              Store 97(txval31) 106
             111:         108 Load 110(g_tTex3du4)
             112:          18 Load 20(g_sSamp)
             114:         113 SampledImage 111 112
             119:   41(ivec4) ImageSampleImplicitLod 114 118 Bias 25
                              Store 107(txval32) 119
             124:         121 Load 123(g_tTexcdf4)
             125:          18 Load 20(g_sSamp)
             127:         126 SampledImage 124 125
             128:    7(fvec4) ImageSampleImplicitLod 127 95 Bias 25
                              Store 120(txval40) 128
             133:         130 Load 132(g_tTexcdi4)
             134:          18 Load 20(g_sSamp)
             136:         135 SampledImage 133 134
             137:   28(ivec4) ImageSampleImplicitLod 136 105 Bias 25
                              Store 129(txval41) 137
             142:         139 Load 141(g_tTexcdu4)
             143:          18 Load 20(g_sSamp)
             145:         144 SampledImage 142 143
             146:   41(ivec4) ImageSampleImplicitLod 145 118 Bias 25
                              Store 138(txval42) 146
             152:     12(ptr) AccessChain 148(psout) 149
                              Store 152 151
             155:    154(ptr) AccessChain 148(psout) 153
                              Store 155 150
             156:8(PS_OUTPUT) Load 148(psout)
                              ReturnValue 156
                              FunctionEnd
