hlsl.sample.dx9.vert
Shader version: 500
0:? Sequence
0:11  Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:11    Function Parameters: 
0:?     Sequence
0:14      Sequence
0:14        move second child to first child ( temp 4-component vector of float)
0:14          'PosOut' ( temp 4-component vector of float)
0:?           Constant:
0:?             0.000000
0:?             0.000000
0:?             0.000000
0:?             0.000000
0:16      add second child into first child ( temp 4-component vector of float)
0:16        'PosOut' ( temp 4-component vector of float)
0:16        textureLod ( temp 4-component vector of float)
0:16          'g_sam' (layout( binding=0) uniform sampler2D)
0:16          Construct vec2 ( temp 2-component vector of float)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:?               0.000000
0:?               1.000000
0:16          direct index ( temp float)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:?               0.000000
0:?               1.000000
0:16            Constant:
0:16              3 (const int)
0:17      add second child into first child ( temp 4-component vector of float)
0:17        'PosOut' ( temp 4-component vector of float)
0:17        textureLod ( temp 4-component vector of float)
0:17          'g_sam2D' (layout( binding=1) uniform sampler2D)
0:17          Construct vec2 ( temp 2-component vector of float)
0:?             Constant:
0:?               0.500000
0:?               0.600000
0:?               0.000000
0:?               1.000000
0:17          direct index ( temp float)
0:?             Constant:
0:?               0.500000
0:?               0.600000
0:?               0.000000
0:?               1.000000
0:17            Constant:
0:17              3 (const int)
0:19      move second child to first child ( temp 4-component vector of float)
0:19        Pos: direct index for structure ( temp 4-component vector of float)
0:19          'vsout' ( temp structure{ temp 4-component vector of float Pos})
0:19          Constant:
0:19            0 (const int)
0:19        divide ( temp 4-component vector of float)
0:19          'PosOut' ( temp 4-component vector of float)
0:19          Constant:
0:19            2.000000
0:21      Branch: Return with expression
0:21        'vsout' ( temp structure{ temp 4-component vector of float Pos})
0:11  Function Definition: main( ( temp void)
0:11    Function Parameters: 
0:?     Sequence
0:11      Sequence
0:11        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:11          Pos: direct index for structure ( temp 4-component vector of float)
0:11            Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:11            Constant:
0:11              0 (const int)
0:?   Linker Objects
0:?     'g_sam' (layout( binding=0) uniform sampler2D)
0:?     'g_sam2D' (layout( binding=1) uniform sampler2D)
0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)


Linked vertex stage:


Shader version: 500
0:? Sequence
0:11  Function Definition: @main( ( temp structure{ temp 4-component vector of float Pos})
0:11    Function Parameters: 
0:?     Sequence
0:14      Sequence
0:14        move second child to first child ( temp 4-component vector of float)
0:14          'PosOut' ( temp 4-component vector of float)
0:?           Constant:
0:?             0.000000
0:?             0.000000
0:?             0.000000
0:?             0.000000
0:16      add second child into first child ( temp 4-component vector of float)
0:16        'PosOut' ( temp 4-component vector of float)
0:16        textureLod ( temp 4-component vector of float)
0:16          'g_sam' (layout( binding=0) uniform sampler2D)
0:16          Construct vec2 ( temp 2-component vector of float)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:?               0.000000
0:?               1.000000
0:16          direct index ( temp float)
0:?             Constant:
0:?               0.300000
0:?               0.400000
0:?               0.000000
0:?               1.000000
0:16            Constant:
0:16              3 (const int)
0:17      add second child into first child ( temp 4-component vector of float)
0:17        'PosOut' ( temp 4-component vector of float)
0:17        textureLod ( temp 4-component vector of float)
0:17          'g_sam2D' (layout( binding=1) uniform sampler2D)
0:17          Construct vec2 ( temp 2-component vector of float)
0:?             Constant:
0:?               0.500000
0:?               0.600000
0:?               0.000000
0:?               1.000000
0:17          direct index ( temp float)
0:?             Constant:
0:?               0.500000
0:?               0.600000
0:?               0.000000
0:?               1.000000
0:17            Constant:
0:17              3 (const int)
0:19      move second child to first child ( temp 4-component vector of float)
0:19        Pos: direct index for structure ( temp 4-component vector of float)
0:19          'vsout' ( temp structure{ temp 4-component vector of float Pos})
0:19          Constant:
0:19            0 (const int)
0:19        divide ( temp 4-component vector of float)
0:19          'PosOut' ( temp 4-component vector of float)
0:19          Constant:
0:19            2.000000
0:21      Branch: Return with expression
0:21        'vsout' ( temp structure{ temp 4-component vector of float Pos})
0:11  Function Definition: main( ( temp void)
0:11    Function Parameters: 
0:?     Sequence
0:11      Sequence
0:11        move second child to first child ( temp 4-component vector of float)
0:?           '@entryPointOutput.Pos' ( out 4-component vector of float Position)
0:11          Pos: direct index for structure ( temp 4-component vector of float)
0:11            Function Call: @main( ( temp structure{ temp 4-component vector of float Pos})
0:11            Constant:
0:11              0 (const int)
0:?   Linker Objects
0:?     'g_sam' (layout( binding=0) uniform sampler2D)
0:?     'g_sam2D' (layout( binding=1) uniform sampler2D)
0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)

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

                              Capability Shader
               2:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 5  "main" 61
               1:             String  ""
                              Source HLSL 500 1  "// OpModuleProcessed auto-map-locations
// OpModuleProcessed auto-map-bindings
// OpModuleProcessed entry-point main
// OpModuleProcessed client vulkan100
// OpModuleProcessed target-env vulkan1.0
// OpModuleProcessed keep-uncalled
// OpModuleProcessed hlsl-offsets
#line 1
"
                              Name 5  "main"
                              Name 9  "VS_OUTPUT"
                              MemberName 9(VS_OUTPUT) 0  "Pos"
                              Name 11  "@main("
                              Name 14  "PosOut"
                              Name 20  "g_sam"
                              Name 36  "g_sam2D"
                              Name 49  "vsout"
                              Name 61  "@entryPointOutput.Pos"
                              Decorate 20(g_sam) DescriptorSet 0
                              Decorate 20(g_sam) Binding 0
                              Decorate 36(g_sam2D) DescriptorSet 0
                              Decorate 36(g_sam2D) Binding 1
                              Decorate 61(@entryPointOutput.Pos) BuiltIn Position
               3:             TypeVoid
               4:             TypeFunction 3
               7:             TypeFloat 32
               8:             TypeVector 7(float) 4
    9(VS_OUTPUT):             TypeStruct 8(fvec4)
              10:             TypeFunction 9(VS_OUTPUT)
              13:             TypePointer Function 8(fvec4)
              15:    7(float) Constant 0
              16:    8(fvec4) ConstantComposite 15 15 15 15
              17:             TypeImage 7(float) 2D sampled format:Unknown
              18:             TypeSampledImage 17
              19:             TypePointer UniformConstant 18
       20(g_sam):     19(ptr) Variable UniformConstant
              22:    7(float) Constant 1050253722
              23:    7(float) Constant 1053609165
              24:    7(float) Constant 1065353216
              25:    8(fvec4) ConstantComposite 22 23 15 24
              26:             TypeVector 7(float) 2
              30:             TypeInt 32 0
              31:     30(int) Constant 3
     36(g_sam2D):     19(ptr) Variable UniformConstant
              38:    7(float) Constant 1056964608
              39:    7(float) Constant 1058642330
              40:    8(fvec4) ConstantComposite 38 39 15 24
              48:             TypePointer Function 9(VS_OUTPUT)
              50:             TypeInt 32 1
              51:     50(int) Constant 0
              53:    7(float) Constant 1073741824
              60:             TypePointer Output 8(fvec4)
61(@entryPointOutput.Pos):     60(ptr) Variable Output
         5(main):           3 Function None 4
               6:             Label
                              Line 1 11 0
              62:9(VS_OUTPUT) FunctionCall 11(@main()
              63:    8(fvec4) CompositeExtract 62 0
                              Store 61(@entryPointOutput.Pos) 63
                              Return
                              FunctionEnd
      11(@main():9(VS_OUTPUT) Function None 10
              12:             Label
      14(PosOut):     13(ptr) Variable Function
       49(vsout):     48(ptr) Variable Function
                              Line 1 14 0
                              Store 14(PosOut) 16
                              Line 1 16 0
              21:          18 Load 20(g_sam)
              27:    7(float) CompositeExtract 25 0
              28:    7(float) CompositeExtract 25 1
              29:   26(fvec2) CompositeConstruct 27 28
              32:    7(float) CompositeExtract 25 3
              33:    8(fvec4) ImageSampleExplicitLod 21 29 Lod 32
              34:    8(fvec4) Load 14(PosOut)
              35:    8(fvec4) FAdd 34 33
                              Store 14(PosOut) 35
                              Line 1 17 0
              37:          18 Load 36(g_sam2D)
              41:    7(float) CompositeExtract 40 0
              42:    7(float) CompositeExtract 40 1
              43:   26(fvec2) CompositeConstruct 41 42
              44:    7(float) CompositeExtract 40 3
              45:    8(fvec4) ImageSampleExplicitLod 37 43 Lod 44
              46:    8(fvec4) Load 14(PosOut)
              47:    8(fvec4) FAdd 46 45
                              Store 14(PosOut) 47
                              Line 1 19 0
              52:    8(fvec4) Load 14(PosOut)
              54:    8(fvec4) CompositeConstruct 53 53 53 53
              55:    8(fvec4) FDiv 52 54
              56:     13(ptr) AccessChain 49(vsout) 51
                              Store 56 55
                              Line 1 21 0
              57:9(VS_OUTPUT) Load 49(vsout)
                              ReturnValue 57
                              FunctionEnd
