hlsl.gather.offset.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:33      Sequence
0:33        move second child to first child ( temp 4-component vector of float)
0:33          'txval20' ( temp 4-component vector of float)
0:33          textureGatherOffset ( temp 4-component vector of float)
0:33            Construct combined texture-sampler ( temp sampler2D)
0:33              'g_tTex2df4' ( uniform texture2D)
0:33              'g_sSamp' (layout( binding=0) uniform sampler)
0:33            Constant:
0:33              0.100000
0:33              0.200000
0:33            Constant:
0:33              1 (const int)
0:33              0 (const int)
0:34      Sequence
0:34        move second child to first child ( temp 4-component vector of int)
0:34          'txval21' ( temp 4-component vector of int)
0:34          textureGatherOffset ( temp 4-component vector of int)
0:34            Construct combined texture-sampler ( temp isampler2D)
0:34              'g_tTex2di4' ( uniform itexture2D)
0:34              'g_sSamp' (layout( binding=0) uniform sampler)
0:34            Constant:
0:34              0.300000
0:34              0.400000
0:34            Constant:
0:34              1 (const int)
0:34              1 (const int)
0:35      Sequence
0:35        move second child to first child ( temp 4-component vector of uint)
0:35          'txval22' ( temp 4-component vector of uint)
0:35          textureGatherOffset ( temp 4-component vector of uint)
0:35            Construct combined texture-sampler ( temp usampler2D)
0:35              'g_tTex2du4' ( uniform utexture2D)
0:35              'g_sSamp' (layout( binding=0) uniform sampler)
0:35            Constant:
0:35              0.500000
0:35              0.600000
0:35            Constant:
0:35              1 (const int)
0:35              -1 (const int)
0:40      move second child to first child ( temp 4-component vector of float)
0:40        Color: direct index for structure ( temp 4-component vector of float)
0:40          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:40          Constant:
0:40            0 (const int)
0:40        Constant:
0:40          1.000000
0:40          1.000000
0:40          1.000000
0:40          1.000000
0:41      move second child to first child ( temp float)
0:41        Depth: direct index for structure ( temp float)
0:41          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:41          Constant:
0:41            1 (const int)
0:41        Constant:
0:41          1.000000
0:43      Branch: Return with expression
0:43        '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:33      Sequence
0:33        move second child to first child ( temp 4-component vector of float)
0:33          'txval20' ( temp 4-component vector of float)
0:33          textureGatherOffset ( temp 4-component vector of float)
0:33            Construct combined texture-sampler ( temp sampler2D)
0:33              'g_tTex2df4' ( uniform texture2D)
0:33              'g_sSamp' (layout( binding=0) uniform sampler)
0:33            Constant:
0:33              0.100000
0:33              0.200000
0:33            Constant:
0:33              1 (const int)
0:33              0 (const int)
0:34      Sequence
0:34        move second child to first child ( temp 4-component vector of int)
0:34          'txval21' ( temp 4-component vector of int)
0:34          textureGatherOffset ( temp 4-component vector of int)
0:34            Construct combined texture-sampler ( temp isampler2D)
0:34              'g_tTex2di4' ( uniform itexture2D)
0:34              'g_sSamp' (layout( binding=0) uniform sampler)
0:34            Constant:
0:34              0.300000
0:34              0.400000
0:34            Constant:
0:34              1 (const int)
0:34              1 (const int)
0:35      Sequence
0:35        move second child to first child ( temp 4-component vector of uint)
0:35          'txval22' ( temp 4-component vector of uint)
0:35          textureGatherOffset ( temp 4-component vector of uint)
0:35            Construct combined texture-sampler ( temp usampler2D)
0:35              'g_tTex2du4' ( uniform utexture2D)
0:35              'g_sSamp' (layout( binding=0) uniform sampler)
0:35            Constant:
0:35              0.500000
0:35              0.600000
0:35            Constant:
0:35              1 (const int)
0:35              -1 (const int)
0:40      move second child to first child ( temp 4-component vector of float)
0:40        Color: direct index for structure ( temp 4-component vector of float)
0:40          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:40          Constant:
0:40            0 (const int)
0:40        Constant:
0:40          1.000000
0:40          1.000000
0:40          1.000000
0:40          1.000000
0:41      move second child to first child ( temp float)
0:41        Depth: direct index for structure ( temp float)
0:41          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
0:41          Constant:
0:41            1 (const int)
0:41        Constant:
0:41          1.000000
0:43      Branch: Return with expression
0:43        '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 114

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