hlsl.getdimensions.dx10.vert
Shader version: 450
0:? Sequence
0:11  Function Definition: main( (temp 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:26      Sequence
0:26        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( (temp 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:26      Sequence
0:26        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
