hlsl.samplelevel.basic.dx10.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:29  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29    Function Parameters: 
0:?     Sequence
0:32      Sequence
0:32        move second child to first child ( temp 4-component vector of float)
0:32          'txval10' ( temp 4-component vector of float)
0:32          textureLod ( temp 4-component vector of float)
0:32            Construct combined texture-sampler ( temp sampler1D)
0:32              'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:32              'g_sSamp' (layout( binding=0) uniform sampler)
0:32            Constant:
0:32              0.100000
0:32            Constant:
0:32              0.750000
0:33      Sequence
0:33        move second child to first child ( temp 4-component vector of int)
0:33          'txval11' ( temp 4-component vector of int)
0:33          textureLod ( temp 4-component vector of int)
0:33            Construct combined texture-sampler ( temp isampler1D)
0:33              'g_tTex1di4' ( uniform itexture1D)
0:33              'g_sSamp' (layout( binding=0) uniform sampler)
0:33            Constant:
0:33              0.200000
0:33            Constant:
0:33              0.750000
0:34      Sequence
0:34        move second child to first child ( temp 4-component vector of uint)
0:34          'txval12' ( temp 4-component vector of uint)
0:34          textureLod ( temp 4-component vector of uint)
0:34            Construct combined texture-sampler ( temp usampler1D)
0:34              'g_tTex1du4' ( uniform utexture1D)
0:34              'g_sSamp' (layout( binding=0) uniform sampler)
0:34            Constant:
0:34              0.300000
0:34            Constant:
0:34              0.750000
0:36      Sequence
0:36        move second child to first child ( temp 4-component vector of float)
0:36          'txval20' ( temp 4-component vector of float)
0:36          textureLod ( temp 4-component vector of float)
0:36            Construct combined texture-sampler ( temp sampler2D)
0:36              'g_tTex2df4' ( uniform texture2D)
0:36              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:36            Constant:
0:36              0.750000
0:37      Sequence
0:37        move second child to first child ( temp 4-component vector of int)
0:37          'txval21' ( temp 4-component vector of int)
0:37          textureLod ( temp 4-component vector of int)
0:37            Construct combined texture-sampler ( temp isampler2D)
0:37              'g_tTex2di4' ( uniform itexture2D)
0:37              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:37            Constant:
0:37              0.750000
0:38      Sequence
0:38        move second child to first child ( temp 4-component vector of uint)
0:38          'txval22' ( temp 4-component vector of uint)
0:38          textureLod ( temp 4-component vector of uint)
0:38            Construct combined texture-sampler ( temp usampler2D)
0:38              'g_tTex2du4' ( uniform utexture2D)
0:38              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.500000
0:?               0.600000
0:38            Constant:
0:38              0.750000
0:40      Sequence
0:40        move second child to first child ( temp 4-component vector of float)
0:40          'txval30' ( temp 4-component vector of float)
0:40          textureLod ( temp 4-component vector of float)
0:40            Construct combined texture-sampler ( temp sampler3D)
0:40              'g_tTex3df4' ( uniform texture3D)
0:40              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:?               0.300000
0:40            Constant:
0:40              0.750000
0:41      Sequence
0:41        move second child to first child ( temp 4-component vector of int)
0:41          'txval31' ( temp 4-component vector of int)
0:41          textureLod ( temp 4-component vector of int)
0:41            Construct combined texture-sampler ( temp isampler3D)
0:41              'g_tTex3di4' ( uniform itexture3D)
0:41              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.400000
0:?               0.500000
0:?               0.600000
0:41            Constant:
0:41              0.750000
0:42      Sequence
0:42        move second child to first child ( temp 4-component vector of uint)
0:42          'txval32' ( temp 4-component vector of uint)
0:42          textureLod ( temp 4-component vector of uint)
0:42            Construct combined texture-sampler ( temp usampler3D)
0:42              'g_tTex3du4' ( uniform utexture3D)
0:42              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.700000
0:?               0.800000
0:?               0.900000
0:42            Constant:
0:42              0.750000
0:44      Sequence
0:44        move second child to first child ( temp 4-component vector of float)
0:44          'txval40' ( temp 4-component vector of float)
0:44          textureLod ( temp 4-component vector of float)
0:44            Construct combined texture-sampler ( temp samplerCube)
0:44              'g_tTexcdf4' ( uniform textureCube)
0:44              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:?               0.300000
0:44            Constant:
0:44              0.750000
0:45      Sequence
0:45        move second child to first child ( temp 4-component vector of int)
0:45          'txval41' ( temp 4-component vector of int)
0:45          textureLod ( temp 4-component vector of int)
0:45            Construct combined texture-sampler ( temp isamplerCube)
0:45              'g_tTexcdi4' ( uniform itextureCube)
0:45              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.400000
0:?               0.500000
0:?               0.600000
0:45            Constant:
0:45              0.750000
0:46      Sequence
0:46        move second child to first child ( temp 4-component vector of uint)
0:46          'txval42' ( temp 4-component vector of uint)
0:46          textureLod ( temp 4-component vector of uint)
0:46            Construct combined texture-sampler ( temp usamplerCube)
0:46              'g_tTexcdu4' ( uniform utextureCube)
0:46              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.700000
0:?               0.800000
0:?               0.900000
0:46            Constant:
0:46              0.750000
0:48      move second child to first child ( temp 4-component vector of float)
0:48        Color: direct index for structure ( temp 4-component vector of float)
0:48          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:48          Constant:
0:48            0 (const int)
0:48        Constant:
0:48          1.000000
0:48          1.000000
0:48          1.000000
0:48          1.000000
0:49      move second child to first child ( temp float)
0:49        Depth: direct index for structure ( temp float)
0:49          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:49          Constant:
0:49            1 (const int)
0:49        Constant:
0:49          1.000000
0:51      Branch: Return with expression
0:51        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29  Function Definition: main( ( temp void)
0:29    Function Parameters: 
0:?     Sequence
0:29      Sequence
0:29        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29        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:29          Color: direct index for structure ( temp 4-component vector of float)
0:29            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29            Constant:
0:29              0 (const int)
0:29        move second child to first child ( temp float)
0:?           '@entryPointOutput.Depth' ( out float FragDepth)
0:29          Depth: direct index for structure ( temp float)
0:29            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29            Constant:
0:29              1 (const int)
0:?   Linker Objects
0:?     'g_sSamp' (layout( binding=0) uniform sampler)
0:?     'g_sSamp2d' ( 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
0:? Sequence
0:29  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29    Function Parameters: 
0:?     Sequence
0:32      Sequence
0:32        move second child to first child ( temp 4-component vector of float)
0:32          'txval10' ( temp 4-component vector of float)
0:32          textureLod ( temp 4-component vector of float)
0:32            Construct combined texture-sampler ( temp sampler1D)
0:32              'g_tTex1df4' (layout( binding=0) uniform texture1D)
0:32              'g_sSamp' (layout( binding=0) uniform sampler)
0:32            Constant:
0:32              0.100000
0:32            Constant:
0:32              0.750000
0:33      Sequence
0:33        move second child to first child ( temp 4-component vector of int)
0:33          'txval11' ( temp 4-component vector of int)
0:33          textureLod ( temp 4-component vector of int)
0:33            Construct combined texture-sampler ( temp isampler1D)
0:33              'g_tTex1di4' ( uniform itexture1D)
0:33              'g_sSamp' (layout( binding=0) uniform sampler)
0:33            Constant:
0:33              0.200000
0:33            Constant:
0:33              0.750000
0:34      Sequence
0:34        move second child to first child ( temp 4-component vector of uint)
0:34          'txval12' ( temp 4-component vector of uint)
0:34          textureLod ( temp 4-component vector of uint)
0:34            Construct combined texture-sampler ( temp usampler1D)
0:34              'g_tTex1du4' ( uniform utexture1D)
0:34              'g_sSamp' (layout( binding=0) uniform sampler)
0:34            Constant:
0:34              0.300000
0:34            Constant:
0:34              0.750000
0:36      Sequence
0:36        move second child to first child ( temp 4-component vector of float)
0:36          'txval20' ( temp 4-component vector of float)
0:36          textureLod ( temp 4-component vector of float)
0:36            Construct combined texture-sampler ( temp sampler2D)
0:36              'g_tTex2df4' ( uniform texture2D)
0:36              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:36            Constant:
0:36              0.750000
0:37      Sequence
0:37        move second child to first child ( temp 4-component vector of int)
0:37          'txval21' ( temp 4-component vector of int)
0:37          textureLod ( temp 4-component vector of int)
0:37            Construct combined texture-sampler ( temp isampler2D)
0:37              'g_tTex2di4' ( uniform itexture2D)
0:37              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:37            Constant:
0:37              0.750000
0:38      Sequence
0:38        move second child to first child ( temp 4-component vector of uint)
0:38          'txval22' ( temp 4-component vector of uint)
0:38          textureLod ( temp 4-component vector of uint)
0:38            Construct combined texture-sampler ( temp usampler2D)
0:38              'g_tTex2du4' ( uniform utexture2D)
0:38              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.500000
0:?               0.600000
0:38            Constant:
0:38              0.750000
0:40      Sequence
0:40        move second child to first child ( temp 4-component vector of float)
0:40          'txval30' ( temp 4-component vector of float)
0:40          textureLod ( temp 4-component vector of float)
0:40            Construct combined texture-sampler ( temp sampler3D)
0:40              'g_tTex3df4' ( uniform texture3D)
0:40              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:?               0.300000
0:40            Constant:
0:40              0.750000
0:41      Sequence
0:41        move second child to first child ( temp 4-component vector of int)
0:41          'txval31' ( temp 4-component vector of int)
0:41          textureLod ( temp 4-component vector of int)
0:41            Construct combined texture-sampler ( temp isampler3D)
0:41              'g_tTex3di4' ( uniform itexture3D)
0:41              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.400000
0:?               0.500000
0:?               0.600000
0:41            Constant:
0:41              0.750000
0:42      Sequence
0:42        move second child to first child ( temp 4-component vector of uint)
0:42          'txval32' ( temp 4-component vector of uint)
0:42          textureLod ( temp 4-component vector of uint)
0:42            Construct combined texture-sampler ( temp usampler3D)
0:42              'g_tTex3du4' ( uniform utexture3D)
0:42              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.700000
0:?               0.800000
0:?               0.900000
0:42            Constant:
0:42              0.750000
0:44      Sequence
0:44        move second child to first child ( temp 4-component vector of float)
0:44          'txval40' ( temp 4-component vector of float)
0:44          textureLod ( temp 4-component vector of float)
0:44            Construct combined texture-sampler ( temp samplerCube)
0:44              'g_tTexcdf4' ( uniform textureCube)
0:44              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:?               0.300000
0:44            Constant:
0:44              0.750000
0:45      Sequence
0:45        move second child to first child ( temp 4-component vector of int)
0:45          'txval41' ( temp 4-component vector of int)
0:45          textureLod ( temp 4-component vector of int)
0:45            Construct combined texture-sampler ( temp isamplerCube)
0:45              'g_tTexcdi4' ( uniform itextureCube)
0:45              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.400000
0:?               0.500000
0:?               0.600000
0:45            Constant:
0:45              0.750000
0:46      Sequence
0:46        move second child to first child ( temp 4-component vector of uint)
0:46          'txval42' ( temp 4-component vector of uint)
0:46          textureLod ( temp 4-component vector of uint)
0:46            Construct combined texture-sampler ( temp usamplerCube)
0:46              'g_tTexcdu4' ( uniform utextureCube)
0:46              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.700000
0:?               0.800000
0:?               0.900000
0:46            Constant:
0:46              0.750000
0:48      move second child to first child ( temp 4-component vector of float)
0:48        Color: direct index for structure ( temp 4-component vector of float)
0:48          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:48          Constant:
0:48            0 (const int)
0:48        Constant:
0:48          1.000000
0:48          1.000000
0:48          1.000000
0:48          1.000000
0:49      move second child to first child ( temp float)
0:49        Depth: direct index for structure ( temp float)
0:49          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:49          Constant:
0:49            1 (const int)
0:49        Constant:
0:49          1.000000
0:51      Branch: Return with expression
0:51        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29  Function Definition: main( ( temp void)
0:29    Function Parameters: 
0:?     Sequence
0:29      Sequence
0:29        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29        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:29          Color: direct index for structure ( temp 4-component vector of float)
0:29            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29            Constant:
0:29              0 (const int)
0:29        move second child to first child ( temp float)
0:?           '@entryPointOutput.Depth' ( out float FragDepth)
0:29          Depth: direct index for structure ( temp float)
0:29            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:29            Constant:
0:29              1 (const int)
0:?   Linker Objects
0:?     'g_sSamp' (layout( binding=0) uniform sampler)
0:?     'g_sSamp2d' ( 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): 80006
// Id's are bound by 172

                              Capability Shader
                              Capability Sampled1D
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 163 167
                              ExecutionMode 4 OriginUpperLeft
                              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 87  "txval30"
                              Name 90  "g_tTex3df4"
                              Name 98  "txval31"
                              Name 101  "g_tTex3di4"
                              Name 108  "txval32"
                              Name 111  "g_tTex3du4"
                              Name 121  "txval40"
                              Name 124  "g_tTexcdf4"
                              Name 130  "txval41"
                              Name 133  "g_tTexcdi4"
                              Name 139  "txval42"
                              Name 142  "g_tTexcdu4"
                              Name 149  "psout"
                              Name 160  "flattenTemp"
                              Name 163  "@entryPointOutput.Color"
                              Name 167  "@entryPointOutput.Depth"
                              Name 170  "g_sSamp2d"
                              Name 171  "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 46(g_tTex1du4) DescriptorSet 0
                              Decorate 56(g_tTex2df4) DescriptorSet 0
                              Decorate 67(g_tTex2di4) DescriptorSet 0
                              Decorate 78(g_tTex2du4) DescriptorSet 0
                              Decorate 90(g_tTex3df4) DescriptorSet 0
                              Decorate 101(g_tTex3di4) DescriptorSet 0
                              Decorate 111(g_tTex3du4) DescriptorSet 0
                              Decorate 124(g_tTexcdf4) DescriptorSet 0
                              Decorate 133(g_tTexcdi4) DescriptorSet 0
                              Decorate 142(g_tTexcdu4) DescriptorSet 0
                              Decorate 163(@entryPointOutput.Color) Location 0
                              Decorate 167(@entryPointOutput.Depth) BuiltIn FragDepth
                              Decorate 170(g_sSamp2d) DescriptorSet 0
                              Decorate 171(g_tTex1df4a) DescriptorSet 0
                              Decorate 171(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 1061158912
              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 1056964608
              84:    6(float) Constant 1058642330
              85:   61(fvec2) ConstantComposite 83 84
              88:             TypeImage 6(float) 3D sampled format:Unknown
              89:             TypePointer UniformConstant 88
  90(g_tTex3df4):     89(ptr) Variable UniformConstant
              93:             TypeSampledImage 88
              95:             TypeVector 6(float) 3
              96:   95(fvec3) ConstantComposite 24 38 51
              99:             TypeImage 27(int) 3D sampled format:Unknown
             100:             TypePointer UniformConstant 99
 101(g_tTex3di4):    100(ptr) Variable UniformConstant
             104:             TypeSampledImage 99
             106:   95(fvec3) ConstantComposite 72 83 84
             109:             TypeImage 40(int) 3D sampled format:Unknown
             110:             TypePointer UniformConstant 109
 111(g_tTex3du4):    110(ptr) Variable UniformConstant
             114:             TypeSampledImage 109
             116:    6(float) Constant 1060320051
             117:    6(float) Constant 1061997773
             118:    6(float) Constant 1063675494
             119:   95(fvec3) ConstantComposite 116 117 118
             122:             TypeImage 6(float) Cube sampled format:Unknown
             123:             TypePointer UniformConstant 122
 124(g_tTexcdf4):    123(ptr) Variable UniformConstant
             127:             TypeSampledImage 122
             131:             TypeImage 27(int) Cube sampled format:Unknown
             132:             TypePointer UniformConstant 131
 133(g_tTexcdi4):    132(ptr) Variable UniformConstant
             136:             TypeSampledImage 131
             140:             TypeImage 40(int) Cube sampled format:Unknown
             141:             TypePointer UniformConstant 140
 142(g_tTexcdu4):    141(ptr) Variable UniformConstant
             145:             TypeSampledImage 140
             148:             TypePointer Function 8(PS_OUTPUT)
             150:     27(int) Constant 0
             151:    6(float) Constant 1065353216
             152:    7(fvec4) ConstantComposite 151 151 151 151
             154:     27(int) Constant 1
             155:             TypePointer Function 6(float)
             162:             TypePointer Output 7(fvec4)
163(@entryPointOutput.Color):    162(ptr) Variable Output
             166:             TypePointer Output 6(float)
167(@entryPointOutput.Depth):    166(ptr) Variable Output
  170(g_sSamp2d):     19(ptr) Variable UniformConstant
171(g_tTex1df4a):     15(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
160(flattenTemp):    148(ptr) Variable Function
             161:8(PS_OUTPUT) FunctionCall 10(@main()
                              Store 160(flattenTemp) 161
             164:     12(ptr) AccessChain 160(flattenTemp) 150
             165:    7(fvec4) Load 164
                              Store 163(@entryPointOutput.Color) 165
             168:    155(ptr) AccessChain 160(flattenTemp) 154
             169:    6(float) Load 168
                              Store 167(@entryPointOutput.Depth) 169
                              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
     87(txval30):     12(ptr) Variable Function
     98(txval31):     29(ptr) Variable Function
    108(txval32):     42(ptr) Variable Function
    121(txval40):     12(ptr) Variable Function
    130(txval41):     29(ptr) Variable Function
    139(txval42):     42(ptr) Variable Function
      149(psout):    148(ptr) Variable Function
              17:          14 Load 16(g_tTex1df4)
              21:          18 Load 20(g_sSamp)
              23:          22 SampledImage 17 21
              26:    7(fvec4) ImageSampleExplicitLod 23 24 Lod 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) ImageSampleExplicitLod 37 38 Lod 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) ImageSampleExplicitLod 50 51 Lod 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) ImageSampleExplicitLod 60 62 Lod 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) ImageSampleExplicitLod 71 73 Lod 25
                              Store 64(txval21) 74
              79:          76 Load 78(g_tTex2du4)
              80:          18 Load 20(g_sSamp)
              82:          81 SampledImage 79 80
              86:   41(ivec4) ImageSampleExplicitLod 82 85 Lod 25
                              Store 75(txval22) 86
              91:          88 Load 90(g_tTex3df4)
              92:          18 Load 20(g_sSamp)
              94:          93 SampledImage 91 92
              97:    7(fvec4) ImageSampleExplicitLod 94 96 Lod 25
                              Store 87(txval30) 97
             102:          99 Load 101(g_tTex3di4)
             103:          18 Load 20(g_sSamp)
             105:         104 SampledImage 102 103
             107:   28(ivec4) ImageSampleExplicitLod 105 106 Lod 25
                              Store 98(txval31) 107
             112:         109 Load 111(g_tTex3du4)
             113:          18 Load 20(g_sSamp)
             115:         114 SampledImage 112 113
             120:   41(ivec4) ImageSampleExplicitLod 115 119 Lod 25
                              Store 108(txval32) 120
             125:         122 Load 124(g_tTexcdf4)
             126:          18 Load 20(g_sSamp)
             128:         127 SampledImage 125 126
             129:    7(fvec4) ImageSampleExplicitLod 128 96 Lod 25
                              Store 121(txval40) 129
             134:         131 Load 133(g_tTexcdi4)
             135:          18 Load 20(g_sSamp)
             137:         136 SampledImage 134 135
             138:   28(ivec4) ImageSampleExplicitLod 137 106 Lod 25
                              Store 130(txval41) 138
             143:         140 Load 142(g_tTexcdu4)
             144:          18 Load 20(g_sSamp)
             146:         145 SampledImage 143 144
             147:   41(ivec4) ImageSampleExplicitLod 146 119 Lod 25
                              Store 139(txval42) 147
             153:     12(ptr) AccessChain 149(psout) 150
                              Store 153 152
             156:    155(ptr) AccessChain 149(psout) 154
                              Store 156 151
             157:8(PS_OUTPUT) Load 149(psout)
                              ReturnValue 157
                              FunctionEnd
