hlsl.getdimensions.dx10.vert
Shader version: 450
0:? Sequence
0:11  Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:11    Function Parameters: 
0:?     Sequence
0:21      Sequence
0:21        move second child to first child (temp uint)
0:21          'sizeQueryTemp' (temp uint)
0:21          textureSize (temp uint)
0:21            'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:21        move second child to first child (temp uint)
0:21          'WidthU' (temp uint)
0:21          'sizeQueryTemp' (temp uint)
0:22      Sequence
0:22        move second child to first child (temp uint)
0:22          'sizeQueryTemp' (temp uint)
0:22          textureSize (temp uint)
0:22            'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:22            Constant:
0:22              6 (const uint)
0:22        move second child to first child (temp uint)
0:22          'WidthU' (temp uint)
0:22          'sizeQueryTemp' (temp uint)
0:22        move second child to first child (temp uint)
0:22          'NumberOfLevelsU' (temp uint)
0:22          textureQueryLevels (temp uint)
0:22            'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:24      move second child to first child (temp 4-component vector of float)
0:24        Pos: direct index for structure (temp 4-component vector of float)
0:24          'vsout' (temp structure{temp 4-component vector of float Pos})
0:24          Constant:
0:24            0 (const int)
0:?         Constant:
0:?           0.000000
0:?           0.000000
0:?           0.000000
0:?           0.000000
0:?       Sequence
0:?         Sequence
0:26          move second child to first child (temp 4-component vector of float)
0:?             'Pos' (out 4-component vector of float Position)
0:26            Pos: direct index for structure (temp 4-component vector of float)
0:26              'vsout' (temp structure{temp 4-component vector of float Pos})
0:26              Constant:
0:26                0 (const int)
0:26        Branch: Return
0:?   Linker Objects
0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:?     'Pos' (out 4-component vector of float Position)


Linked vertex stage:


Shader version: 450
0:? Sequence
0:11  Function Definition: main( (global structure{temp 4-component vector of float Pos})
0:11    Function Parameters: 
0:?     Sequence
0:21      Sequence
0:21        move second child to first child (temp uint)
0:21          'sizeQueryTemp' (temp uint)
0:21          textureSize (temp uint)
0:21            'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:21        move second child to first child (temp uint)
0:21          'WidthU' (temp uint)
0:21          'sizeQueryTemp' (temp uint)
0:22      Sequence
0:22        move second child to first child (temp uint)
0:22          'sizeQueryTemp' (temp uint)
0:22          textureSize (temp uint)
0:22            'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:22            Constant:
0:22              6 (const uint)
0:22        move second child to first child (temp uint)
0:22          'WidthU' (temp uint)
0:22          'sizeQueryTemp' (temp uint)
0:22        move second child to first child (temp uint)
0:22          'NumberOfLevelsU' (temp uint)
0:22          textureQueryLevels (temp uint)
0:22            'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:24      move second child to first child (temp 4-component vector of float)
0:24        Pos: direct index for structure (temp 4-component vector of float)
0:24          'vsout' (temp structure{temp 4-component vector of float Pos})
0:24          Constant:
0:24            0 (const int)
0:?         Constant:
0:?           0.000000
0:?           0.000000
0:?           0.000000
0:?           0.000000
0:?       Sequence
0:?         Sequence
0:26          move second child to first child (temp 4-component vector of float)
0:?             'Pos' (out 4-component vector of float Position)
0:26            Pos: direct index for structure (temp 4-component vector of float)
0:26              'vsout' (temp structure{temp 4-component vector of float Pos})
0:26              Constant:
0:26                0 (const int)
0:26        Branch: Return
0:?   Linker Objects
0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
0:?     'Pos' (out 4-component vector of float Position)

// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 43

                              Capability Shader
                              Capability Sampled1D
                              Capability ImageQuery
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 36
                              Name 4  "main"
                              Name 8  "sizeQueryTemp"
                              Name 12  "g_tTex1df4"
                              Name 16  "WidthU"
                              Name 18  "sizeQueryTemp"
                              Name 23  "NumberOfLevelsU"
                              Name 27  "VS_OUTPUT"
                              MemberName 27(VS_OUTPUT) 0  "Pos"
                              Name 29  "vsout"
                              Name 36  "Pos"
                              Name 42  "g_sSamp"
                              Decorate 12(g_tTex1df4) DescriptorSet 0
                              Decorate 12(g_tTex1df4) Binding 0
                              Decorate 36(Pos) BuiltIn Position
                              Decorate 42(g_sSamp) DescriptorSet 0
                              Decorate 42(g_sSamp) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer Function 6(int)
               9:             TypeFloat 32
              10:             TypeImage 9(float) 1D sampled format:Unknown
              11:             TypePointer UniformConstant 10
  12(g_tTex1df4):     11(ptr) Variable UniformConstant
              14:             TypeInt 32 1
              20:      6(int) Constant 6
              26:             TypeVector 9(float) 4
   27(VS_OUTPUT):             TypeStruct 26(fvec4)
              28:             TypePointer Function 27(VS_OUTPUT)
              30:     14(int) Constant 0
              31:    9(float) Constant 0
              32:   26(fvec4) ConstantComposite 31 31 31 31
              33:             TypePointer Function 26(fvec4)
              35:             TypePointer Output 26(fvec4)
         36(Pos):     35(ptr) Variable Output
              40:             TypeSampler
              41:             TypePointer UniformConstant 40
     42(g_sSamp):     41(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
8(sizeQueryTemp):      7(ptr) Variable Function
      16(WidthU):      7(ptr) Variable Function
18(sizeQueryTemp):      7(ptr) Variable Function
23(NumberOfLevelsU):      7(ptr) Variable Function
       29(vsout):     28(ptr) Variable Function
              13:          10 Load 12(g_tTex1df4)
              15:     14(int) ImageQuerySize 13
                              Store 8(sizeQueryTemp) 15
              17:      6(int) Load 8(sizeQueryTemp)
                              Store 16(WidthU) 17
              19:          10 Load 12(g_tTex1df4)
              21:     14(int) ImageQuerySizeLod 19 20
                              Store 18(sizeQueryTemp) 21
              22:      6(int) Load 18(sizeQueryTemp)
                              Store 16(WidthU) 22
              24:          10 Load 12(g_tTex1df4)
              25:     14(int) ImageQueryLevels 24
                              Store 23(NumberOfLevelsU) 25
              34:     33(ptr) AccessChain 29(vsout) 30
                              Store 34 32
              37:     33(ptr) AccessChain 29(vsout) 30
              38:   26(fvec4) Load 37
                              Store 36(Pos) 38
                              Return
                              FunctionEnd
