hlsl.samplelevel.offsetarray.dx10.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:20  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20    Function Parameters: 
0:?     Sequence
0:23      Sequence
0:23        move second child to first child ( temp 4-component vector of float)
0:23          'txval10' ( temp 4-component vector of float)
0:23          textureLodOffset ( temp 4-component vector of float)
0:23            Construct combined texture-sampler ( temp sampler1DArray)
0:23              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
0:23              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:23            Constant:
0:23              0.750000
0:23            Constant:
0:23              0 (const int)
0:24      Sequence
0:24        move second child to first child ( temp 4-component vector of int)
0:24          'txval11' ( temp 4-component vector of int)
0:24          textureLodOffset ( temp 4-component vector of int)
0:24            Construct combined texture-sampler ( temp isampler1DArray)
0:24              'g_tTex1di4' ( uniform itexture1DArray)
0:24              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.200000
0:?               0.300000
0:24            Constant:
0:24              0.750000
0:24            Constant:
0:24              1 (const int)
0:25      Sequence
0:25        move second child to first child ( temp 4-component vector of uint)
0:25          'txval12' ( temp 4-component vector of uint)
0:25          textureLodOffset ( temp 4-component vector of uint)
0:25            Construct combined texture-sampler ( temp usampler1DArray)
0:25              'g_tTex1du4' ( uniform utexture1DArray)
0:25              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:25            Constant:
0:25              0.750000
0:25            Constant:
0:25              2 (const int)
0:27      Sequence
0:27        move second child to first child ( temp 4-component vector of float)
0:27          'txval20' ( temp 4-component vector of float)
0:27          textureLodOffset ( temp 4-component vector of float)
0:27            Construct combined texture-sampler ( temp sampler2DArray)
0:27              'g_tTex2df4' ( uniform texture2DArray)
0:27              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:?               0.300000
0:27            Constant:
0:27              0.750000
0:?             Constant:
0:?               0 (const int)
0:?               0 (const int)
0:28      Sequence
0:28        move second child to first child ( temp 4-component vector of int)
0:28          'txval21' ( temp 4-component vector of int)
0:28          textureLodOffset ( temp 4-component vector of int)
0:28            Construct combined texture-sampler ( temp isampler2DArray)
0:28              'g_tTex2di4' ( uniform itexture2DArray)
0:28              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:?               0.500000
0:28            Constant:
0:28              0.750000
0:?             Constant:
0:?               0 (const int)
0:?               0 (const int)
0:29      Sequence
0:29        move second child to first child ( temp 4-component vector of uint)
0:29          'txval22' ( temp 4-component vector of uint)
0:29          textureLodOffset ( temp 4-component vector of uint)
0:29            Construct combined texture-sampler ( temp usampler2DArray)
0:29              'g_tTex2du4' ( uniform utexture2DArray)
0:29              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.500000
0:?               0.600000
0:?               0.700000
0:29            Constant:
0:29              0.750000
0:?             Constant:
0:?               0 (const int)
0:?               1 (const int)
0:33      move second child to first child ( temp 4-component vector of float)
0:33        Color: direct index for structure ( temp 4-component vector of float)
0:33          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:33          Constant:
0:33            0 (const int)
0:33        Constant:
0:33          1.000000
0:33          1.000000
0:33          1.000000
0:33          1.000000
0:34      move second child to first child ( temp float)
0:34        Depth: direct index for structure ( temp float)
0:34          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:34          Constant:
0:34            1 (const int)
0:34        Constant:
0:34          1.000000
0:36      Branch: Return with expression
0:36        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20  Function Definition: main( ( temp void)
0:20    Function Parameters: 
0:?     Sequence
0:20      Sequence
0:20        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20        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:20          Color: direct index for structure ( temp 4-component vector of float)
0:20            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20            Constant:
0:20              0 (const int)
0:20        move second child to first child ( temp float)
0:?           '@entryPointOutput.Depth' ( out float FragDepth)
0:20          Depth: direct index for structure ( temp float)
0:20            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20            Constant:
0:20              1 (const int)
0:?   Linker Objects
0:?     'g_sSamp' (layout( binding=0) uniform sampler)
0:?     'g_tTex1df4a' (layout( binding=1) uniform texture1DArray)
0:?     'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
0:?     'g_tTex1di4' ( uniform itexture1DArray)
0:?     'g_tTex1du4' ( uniform utexture1DArray)
0:?     'g_tTex2df4' ( uniform texture2DArray)
0:?     'g_tTex2di4' ( uniform itexture2DArray)
0:?     'g_tTex2du4' ( uniform utexture2DArray)
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:20  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20    Function Parameters: 
0:?     Sequence
0:23      Sequence
0:23        move second child to first child ( temp 4-component vector of float)
0:23          'txval10' ( temp 4-component vector of float)
0:23          textureLodOffset ( temp 4-component vector of float)
0:23            Construct combined texture-sampler ( temp sampler1DArray)
0:23              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
0:23              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:23            Constant:
0:23              0.750000
0:23            Constant:
0:23              0 (const int)
0:24      Sequence
0:24        move second child to first child ( temp 4-component vector of int)
0:24          'txval11' ( temp 4-component vector of int)
0:24          textureLodOffset ( temp 4-component vector of int)
0:24            Construct combined texture-sampler ( temp isampler1DArray)
0:24              'g_tTex1di4' ( uniform itexture1DArray)
0:24              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.200000
0:?               0.300000
0:24            Constant:
0:24              0.750000
0:24            Constant:
0:24              1 (const int)
0:25      Sequence
0:25        move second child to first child ( temp 4-component vector of uint)
0:25          'txval12' ( temp 4-component vector of uint)
0:25          textureLodOffset ( temp 4-component vector of uint)
0:25            Construct combined texture-sampler ( temp usampler1DArray)
0:25              'g_tTex1du4' ( uniform utexture1DArray)
0:25              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:25            Constant:
0:25              0.750000
0:25            Constant:
0:25              2 (const int)
0:27      Sequence
0:27        move second child to first child ( temp 4-component vector of float)
0:27          'txval20' ( temp 4-component vector of float)
0:27          textureLodOffset ( temp 4-component vector of float)
0:27            Construct combined texture-sampler ( temp sampler2DArray)
0:27              'g_tTex2df4' ( uniform texture2DArray)
0:27              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.100000
0:?               0.200000
0:?               0.300000
0:27            Constant:
0:27              0.750000
0:?             Constant:
0:?               0 (const int)
0:?               0 (const int)
0:28      Sequence
0:28        move second child to first child ( temp 4-component vector of int)
0:28          'txval21' ( temp 4-component vector of int)
0:28          textureLodOffset ( temp 4-component vector of int)
0:28            Construct combined texture-sampler ( temp isampler2DArray)
0:28              'g_tTex2di4' ( uniform itexture2DArray)
0:28              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:?               0.500000
0:28            Constant:
0:28              0.750000
0:?             Constant:
0:?               0 (const int)
0:?               0 (const int)
0:29      Sequence
0:29        move second child to first child ( temp 4-component vector of uint)
0:29          'txval22' ( temp 4-component vector of uint)
0:29          textureLodOffset ( temp 4-component vector of uint)
0:29            Construct combined texture-sampler ( temp usampler2DArray)
0:29              'g_tTex2du4' ( uniform utexture2DArray)
0:29              'g_sSamp' (layout( binding=0) uniform sampler)
0:?             Constant:
0:?               0.500000
0:?               0.600000
0:?               0.700000
0:29            Constant:
0:29              0.750000
0:?             Constant:
0:?               0 (const int)
0:?               1 (const int)
0:33      move second child to first child ( temp 4-component vector of float)
0:33        Color: direct index for structure ( temp 4-component vector of float)
0:33          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:33          Constant:
0:33            0 (const int)
0:33        Constant:
0:33          1.000000
0:33          1.000000
0:33          1.000000
0:33          1.000000
0:34      move second child to first child ( temp float)
0:34        Depth: direct index for structure ( temp float)
0:34          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:34          Constant:
0:34            1 (const int)
0:34        Constant:
0:34          1.000000
0:36      Branch: Return with expression
0:36        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20  Function Definition: main( ( temp void)
0:20    Function Parameters: 
0:?     Sequence
0:20      Sequence
0:20        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20        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:20          Color: direct index for structure ( temp 4-component vector of float)
0:20            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20            Constant:
0:20              0 (const int)
0:20        move second child to first child ( temp float)
0:?           '@entryPointOutput.Depth' ( out float FragDepth)
0:20          Depth: direct index for structure ( temp float)
0:20            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:20            Constant:
0:20              1 (const int)
0:?   Linker Objects
0:?     'g_sSamp' (layout( binding=0) uniform sampler)
0:?     'g_tTex1df4a' (layout( binding=1) uniform texture1DArray)
0:?     'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
0:?     'g_tTex1di4' ( uniform itexture1DArray)
0:?     'g_tTex1du4' ( uniform utexture1DArray)
0:?     'g_tTex2df4' ( uniform texture2DArray)
0:?     'g_tTex2di4' ( uniform itexture2DArray)
0:?     'g_tTex2du4' ( uniform utexture2DArray)
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 119

                              Capability Shader
                              Capability Sampled1D
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 111 115
                              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 34  "txval11"
                              Name 37  "g_tTex1di4"
                              Name 49  "txval12"
                              Name 52  "g_tTex1du4"
                              Name 61  "txval20"
                              Name 64  "g_tTex2df4"
                              Name 74  "txval21"
                              Name 77  "g_tTex2di4"
                              Name 85  "txval22"
                              Name 88  "g_tTex2du4"
                              Name 99  "psout"
                              Name 108  "flattenTemp"
                              Name 111  "@entryPointOutput.Color"
                              Name 115  "@entryPointOutput.Depth"
                              Name 118  "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 37(g_tTex1di4) DescriptorSet 0
                              Decorate 52(g_tTex1du4) DescriptorSet 0
                              Decorate 64(g_tTex2df4) DescriptorSet 0
                              Decorate 77(g_tTex2di4) DescriptorSet 0
                              Decorate 88(g_tTex2du4) DescriptorSet 0
                              Decorate 111(@entryPointOutput.Color) Location 0
                              Decorate 115(@entryPointOutput.Depth) BuiltIn FragDepth
                              Decorate 118(g_tTex1df4a) DescriptorSet 0
                              Decorate 118(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 array 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:             TypeVector 6(float) 2
              25:    6(float) Constant 1036831949
              26:    6(float) Constant 1045220557
              27:   24(fvec2) ConstantComposite 25 26
              28:    6(float) Constant 1061158912
              29:             TypeInt 32 1
              30:     29(int) Constant 0
              32:             TypeVector 29(int) 4
              33:             TypePointer Function 32(ivec4)
              35:             TypeImage 29(int) 1D array sampled format:Unknown
              36:             TypePointer UniformConstant 35
  37(g_tTex1di4):     36(ptr) Variable UniformConstant
              40:             TypeSampledImage 35
              42:    6(float) Constant 1050253722
              43:   24(fvec2) ConstantComposite 26 42
              44:     29(int) Constant 1
              46:             TypeInt 32 0
              47:             TypeVector 46(int) 4
              48:             TypePointer Function 47(ivec4)
              50:             TypeImage 46(int) 1D array sampled format:Unknown
              51:             TypePointer UniformConstant 50
  52(g_tTex1du4):     51(ptr) Variable UniformConstant
              55:             TypeSampledImage 50
              57:    6(float) Constant 1053609165
              58:   24(fvec2) ConstantComposite 42 57
              59:     29(int) Constant 2
              62:             TypeImage 6(float) 2D array sampled format:Unknown
              63:             TypePointer UniformConstant 62
  64(g_tTex2df4):     63(ptr) Variable UniformConstant
              67:             TypeSampledImage 62
              69:             TypeVector 6(float) 3
              70:   69(fvec3) ConstantComposite 25 26 42
              71:             TypeVector 29(int) 2
              72:   71(ivec2) ConstantComposite 30 30
              75:             TypeImage 29(int) 2D array sampled format:Unknown
              76:             TypePointer UniformConstant 75
  77(g_tTex2di4):     76(ptr) Variable UniformConstant
              80:             TypeSampledImage 75
              82:    6(float) Constant 1056964608
              83:   69(fvec3) ConstantComposite 42 57 82
              86:             TypeImage 46(int) 2D array sampled format:Unknown
              87:             TypePointer UniformConstant 86
  88(g_tTex2du4):     87(ptr) Variable UniformConstant
              91:             TypeSampledImage 86
              93:    6(float) Constant 1058642330
              94:    6(float) Constant 1060320051
              95:   69(fvec3) ConstantComposite 82 93 94
              96:   71(ivec2) ConstantComposite 30 44
              98:             TypePointer Function 8(PS_OUTPUT)
             100:    6(float) Constant 1065353216
             101:    7(fvec4) ConstantComposite 100 100 100 100
             103:             TypePointer Function 6(float)
             110:             TypePointer Output 7(fvec4)
111(@entryPointOutput.Color):    110(ptr) Variable Output
             114:             TypePointer Output 6(float)
115(@entryPointOutput.Depth):    114(ptr) Variable Output
118(g_tTex1df4a):     15(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
108(flattenTemp):     98(ptr) Variable Function
             109:8(PS_OUTPUT) FunctionCall 10(@main()
                              Store 108(flattenTemp) 109
             112:     12(ptr) AccessChain 108(flattenTemp) 30
             113:    7(fvec4) Load 112
                              Store 111(@entryPointOutput.Color) 113
             116:    103(ptr) AccessChain 108(flattenTemp) 44
             117:    6(float) Load 116
                              Store 115(@entryPointOutput.Depth) 117
                              Return
                              FunctionEnd
      10(@main():8(PS_OUTPUT) Function None 9
              11:             Label
     13(txval10):     12(ptr) Variable Function
     34(txval11):     33(ptr) Variable Function
     49(txval12):     48(ptr) Variable Function
     61(txval20):     12(ptr) Variable Function
     74(txval21):     33(ptr) Variable Function
     85(txval22):     48(ptr) Variable Function
       99(psout):     98(ptr) Variable Function
              17:          14 Load 16(g_tTex1df4)
              21:          18 Load 20(g_sSamp)
              23:          22 SampledImage 17 21
              31:    7(fvec4) ImageSampleExplicitLod 23 27 Lod ConstOffset 28 30
                              Store 13(txval10) 31
              38:          35 Load 37(g_tTex1di4)
              39:          18 Load 20(g_sSamp)
              41:          40 SampledImage 38 39
              45:   32(ivec4) ImageSampleExplicitLod 41 43 Lod ConstOffset 28 44
                              Store 34(txval11) 45
              53:          50 Load 52(g_tTex1du4)
              54:          18 Load 20(g_sSamp)
              56:          55 SampledImage 53 54
              60:   47(ivec4) ImageSampleExplicitLod 56 58 Lod ConstOffset 28 59
                              Store 49(txval12) 60
              65:          62 Load 64(g_tTex2df4)
              66:          18 Load 20(g_sSamp)
              68:          67 SampledImage 65 66
              73:    7(fvec4) ImageSampleExplicitLod 68 70 Lod ConstOffset 28 72
                              Store 61(txval20) 73
              78:          75 Load 77(g_tTex2di4)
              79:          18 Load 20(g_sSamp)
              81:          80 SampledImage 78 79
              84:   32(ivec4) ImageSampleExplicitLod 81 83 Lod ConstOffset 28 72
                              Store 74(txval21) 84
              89:          86 Load 88(g_tTex2du4)
              90:          18 Load 20(g_sSamp)
              92:          91 SampledImage 89 90
              97:   47(ivec4) ImageSampleExplicitLod 92 95 Lod ConstOffset 28 96
                              Store 85(txval22) 97
             102:     12(ptr) AccessChain 99(psout) 30
                              Store 102 101
             104:    103(ptr) AccessChain 99(psout) 44
                              Store 104 100
             105:8(PS_OUTPUT) Load 99(psout)
                              ReturnValue 105
                              FunctionEnd
