1deee662创建于 2025年8月1日历史提交
hlsl.buffer_ref_parameter.comp
Shader version: 500
local_size = (64, 1, 1)
0:? Sequence
0:4  Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
0:4    Function Parameters: 
0:4      'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:4      'vertex_id' ( in uint)
0:?     Sequence
0:5      Branch: Return with expression
0:?         intBitsToFloat ( temp 3-component vector of float)
0:?           Sequence
0:5            move second child to first child ( temp int)
0:5              'byteAddrTemp' ( temp int)
0:5              right-shift ( temp int)
0:5                component-wise multiply ( temp uint)
0:5                  component-wise multiply ( temp uint)
0:5                    'vertex_id' ( in uint)
0:5                    Constant:
0:5                      3 (const uint)
0:5                  Constant:
0:5                    4 (const uint)
0:5                Constant:
0:5                  2 (const int)
0:?             Construct vec3 ( temp 3-component vector of uint)
0:5              indirect index ( temp uint)
0:5                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:5                  'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:5                  Constant:
0:5                    0 (const uint)
0:5                'byteAddrTemp' ( temp int)
0:5              indirect index ( temp uint)
0:5                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:5                  'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:5                  Constant:
0:5                    0 (const uint)
0:5                add ( temp int)
0:5                  'byteAddrTemp' ( temp int)
0:5                  Constant:
0:5                    1 (const int)
0:5              indirect index ( temp uint)
0:5                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:5                  'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:5                  Constant:
0:5                    0 (const uint)
0:5                add ( temp int)
0:5                  'byteAddrTemp' ( temp int)
0:5                  Constant:
0:5                    2 (const int)
0:9  Function Definition: @main(u1; ( temp void)
0:9    Function Parameters: 
0:9      'gi' ( in uint)
0:?     Sequence
0:10      Sequence
0:10        move second child to first child ( temp 3-component vector of float)
0:10          'position_ms' ( temp 3-component vector of float)
0:10          Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
0:10            'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:10            'gi' ( in uint)
0:?       Sequence
0:12        move second child to first child ( temp int)
0:12          'byteAddrTemp' ( temp int)
0:12          right-shift ( temp int)
0:12            Constant:
0:12              0 (const int)
0:12            Constant:
0:12              2 (const int)
0:12        move second child to first child ( temp uint)
0:12          indirect index (layout( row_major std430) buffer uint)
0:12            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:12              'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:12              Constant:
0:12                0 (const uint)
0:12            'byteAddrTemp' ( temp int)
0:12          direct index ( temp uint)
0:12            floatBitsToUint ( temp 3-component vector of uint)
0:12              'position_ms' ( temp 3-component vector of float)
0:12            Constant:
0:12              0 (const int)
0:12        move second child to first child ( temp uint)
0:12          indirect index (layout( row_major std430) buffer uint)
0:12            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:12              'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:12              Constant:
0:12                0 (const uint)
0:12            add ( temp int)
0:12              'byteAddrTemp' ( temp int)
0:12              Constant:
0:12                1 (const int)
0:12          direct index ( temp uint)
0:12            floatBitsToUint ( temp 3-component vector of uint)
0:12              'position_ms' ( temp 3-component vector of float)
0:12            Constant:
0:12              1 (const int)
0:12        move second child to first child ( temp uint)
0:12          indirect index (layout( row_major std430) buffer uint)
0:12            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:12              'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:12              Constant:
0:12                0 (const uint)
0:12            add ( temp int)
0:12              'byteAddrTemp' ( temp int)
0:12              Constant:
0:12                2 (const int)
0:12          direct index ( temp uint)
0:12            floatBitsToUint ( temp 3-component vector of uint)
0:12              'position_ms' ( temp 3-component vector of float)
0:12            Constant:
0:12              2 (const int)
0:9  Function Definition: main( ( temp void)
0:9    Function Parameters: 
0:?     Sequence
0:9      move second child to first child ( temp uint)
0:?         'gi' ( temp uint)
0:?         'gi' ( in uint LocalInvocationIndex)
0:9      Function Call: @main(u1; ( temp void)
0:?         'gi' ( temp uint)
0:?   Linker Objects
0:?     'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:?     'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:?     'gi' ( in uint LocalInvocationIndex)


Linked compute stage:


Shader version: 500
local_size = (64, 1, 1)
0:? Sequence
0:4  Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
0:4    Function Parameters: 
0:4      'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:4      'vertex_id' ( in uint)
0:?     Sequence
0:5      Branch: Return with expression
0:?         intBitsToFloat ( temp 3-component vector of float)
0:?           Sequence
0:5            move second child to first child ( temp int)
0:5              'byteAddrTemp' ( temp int)
0:5              right-shift ( temp int)
0:5                component-wise multiply ( temp uint)
0:5                  component-wise multiply ( temp uint)
0:5                    'vertex_id' ( in uint)
0:5                    Constant:
0:5                      3 (const uint)
0:5                  Constant:
0:5                    4 (const uint)
0:5                Constant:
0:5                  2 (const int)
0:?             Construct vec3 ( temp 3-component vector of uint)
0:5              indirect index ( temp uint)
0:5                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:5                  'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:5                  Constant:
0:5                    0 (const uint)
0:5                'byteAddrTemp' ( temp int)
0:5              indirect index ( temp uint)
0:5                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:5                  'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:5                  Constant:
0:5                    0 (const uint)
0:5                add ( temp int)
0:5                  'byteAddrTemp' ( temp int)
0:5                  Constant:
0:5                    1 (const int)
0:5              indirect index ( temp uint)
0:5                @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:5                  'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:5                  Constant:
0:5                    0 (const uint)
0:5                add ( temp int)
0:5                  'byteAddrTemp' ( temp int)
0:5                  Constant:
0:5                    2 (const int)
0:9  Function Definition: @main(u1; ( temp void)
0:9    Function Parameters: 
0:9      'gi' ( in uint)
0:?     Sequence
0:10      Sequence
0:10        move second child to first child ( temp 3-component vector of float)
0:10          'position_ms' ( temp 3-component vector of float)
0:10          Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float)
0:10            'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:10            'gi' ( in uint)
0:?       Sequence
0:12        move second child to first child ( temp int)
0:12          'byteAddrTemp' ( temp int)
0:12          right-shift ( temp int)
0:12            Constant:
0:12              0 (const int)
0:12            Constant:
0:12              2 (const int)
0:12        move second child to first child ( temp uint)
0:12          indirect index (layout( row_major std430) buffer uint)
0:12            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:12              'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:12              Constant:
0:12                0 (const uint)
0:12            'byteAddrTemp' ( temp int)
0:12          direct index ( temp uint)
0:12            floatBitsToUint ( temp 3-component vector of uint)
0:12              'position_ms' ( temp 3-component vector of float)
0:12            Constant:
0:12              0 (const int)
0:12        move second child to first child ( temp uint)
0:12          indirect index (layout( row_major std430) buffer uint)
0:12            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:12              'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:12              Constant:
0:12                0 (const uint)
0:12            add ( temp int)
0:12              'byteAddrTemp' ( temp int)
0:12              Constant:
0:12                1 (const int)
0:12          direct index ( temp uint)
0:12            floatBitsToUint ( temp 3-component vector of uint)
0:12              'position_ms' ( temp 3-component vector of float)
0:12            Constant:
0:12              1 (const int)
0:12        move second child to first child ( temp uint)
0:12          indirect index (layout( row_major std430) buffer uint)
0:12            @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint)
0:12              'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:12              Constant:
0:12                0 (const uint)
0:12            add ( temp int)
0:12              'byteAddrTemp' ( temp int)
0:12              Constant:
0:12                2 (const int)
0:12          direct index ( temp uint)
0:12            floatBitsToUint ( temp 3-component vector of uint)
0:12              'position_ms' ( temp 3-component vector of float)
0:12            Constant:
0:12              2 (const int)
0:9  Function Definition: main( ( temp void)
0:9    Function Parameters: 
0:?     Sequence
0:9      move second child to first child ( temp uint)
0:?         'gi' ( temp uint)
0:?         'gi' ( in uint LocalInvocationIndex)
0:9      Function Call: @main(u1; ( temp void)
0:?         'gi' ( temp uint)
0:?   Linker Objects
0:?     'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:?     'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
0:?     'gi' ( in uint LocalInvocationIndex)

// Module Version 10400
// Generated by (magic number): 8000b
// Id's are bound by 90

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint GLCompute 4  "main" 53 62 85
                              ExecutionMode 4 LocalSize 64 1 1
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  ""
                              MemberName 8 0  "@data"
                              Name 16  "pull_position(block--u1[0]1;u1;"
                              Name 14  "buffer_position"
                              Name 15  "vertex_id"
                              Name 20  "@main(u1;"
                              Name 19  "gi"
                              Name 24  "byteAddrTemp"
                              Name 52  "position_ms"
                              Name 53  "buffer_position_ms"
                              Name 54  "param"
                              Name 57  "byteAddrTemp"
                              Name 60  "r"
                              MemberName 60(r) 0  "@data"
                              Name 62  "r"
                              Name 83  "gi"
                              Name 85  "gi"
                              Name 87  "param"
                              Decorate 7 ArrayStride 4
                              Decorate 8 Block
                              MemberDecorate 8 0 NonWritable
                              MemberDecorate 8 0 Offset 0
                              Decorate 14(buffer_position) NonWritable
                              Decorate 53(buffer_position_ms) NonWritable
                              Decorate 53(buffer_position_ms) Binding 0
                              Decorate 53(buffer_position_ms) DescriptorSet 0
                              Decorate 59 ArrayStride 4
                              Decorate 60(r) Block
                              MemberDecorate 60(r) 0 Offset 0
                              Decorate 62(r) Binding 1
                              Decorate 62(r) DescriptorSet 0
                              Decorate 85(gi) BuiltIn LocalInvocationIndex
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeRuntimeArray 6(int)
               8:             TypeStruct 7
               9:             TypePointer StorageBuffer 8(struct)
              10:             TypePointer Function 6(int)
              11:             TypeFloat 32
              12:             TypeVector 11(float) 3
              13:             TypeFunction 12(fvec3) 9(ptr) 10(ptr)
              18:             TypeFunction 2 10(ptr)
              22:             TypeInt 32 1
              23:             TypePointer Function 22(int)
              26:      6(int) Constant 3
              28:      6(int) Constant 4
              30:     22(int) Constant 2
              32:     22(int) Constant 0
              34:             TypePointer StorageBuffer 6(int)
              38:     22(int) Constant 1
              46:             TypeVector 6(int) 3
              51:             TypePointer Function 12(fvec3)
53(buffer_position_ms):      9(ptr) Variable StorageBuffer
              59:             TypeRuntimeArray 6(int)
           60(r):             TypeStruct 59
              61:             TypePointer StorageBuffer 60(r)
           62(r):     61(ptr) Variable StorageBuffer
              66:      6(int) Constant 0
              73:      6(int) Constant 1
              80:      6(int) Constant 2
              84:             TypePointer Input 6(int)
          85(gi):     84(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
          83(gi):     10(ptr) Variable Function
       87(param):     10(ptr) Variable Function
              86:      6(int) Load 85(gi)
                              Store 83(gi) 86
              88:      6(int) Load 83(gi)
                              Store 87(param) 88
              89:           2 FunctionCall 20(@main(u1;) 87(param)
                              Return
                              FunctionEnd
16(pull_position(block--u1[0]1;u1;):   12(fvec3) Function None 13
14(buffer_position):      9(ptr) FunctionParameter
   15(vertex_id):     10(ptr) FunctionParameter
              17:             Label
24(byteAddrTemp):     23(ptr) Variable Function
              25:      6(int) Load 15(vertex_id)
              27:      6(int) IMul 25 26
              29:      6(int) IMul 27 28
              31:     22(int) ShiftRightLogical 29 30
                              Store 24(byteAddrTemp) 31
              33:     22(int) Load 24(byteAddrTemp)
              35:     34(ptr) AccessChain 14(buffer_position) 32 33
              36:      6(int) Load 35
              37:     22(int) Load 24(byteAddrTemp)
              39:     22(int) IAdd 37 38
              40:     34(ptr) AccessChain 14(buffer_position) 32 39
              41:      6(int) Load 40
              42:     22(int) Load 24(byteAddrTemp)
              43:     22(int) IAdd 42 30
              44:     34(ptr) AccessChain 14(buffer_position) 32 43
              45:      6(int) Load 44
              47:   46(ivec3) CompositeConstruct 36 41 45
              48:   12(fvec3) Bitcast 47
                              ReturnValue 48
                              FunctionEnd
   20(@main(u1;):           2 Function None 18
          19(gi):     10(ptr) FunctionParameter
              21:             Label
 52(position_ms):     51(ptr) Variable Function
       54(param):     10(ptr) Variable Function
57(byteAddrTemp):     23(ptr) Variable Function
              55:      6(int) Load 19(gi)
                              Store 54(param) 55
              56:   12(fvec3) FunctionCall 16(pull_position(block--u1[0]1;u1;) 53(buffer_position_ms) 54(param)
                              Store 52(position_ms) 56
              58:     22(int) ShiftRightArithmetic 32 30
                              Store 57(byteAddrTemp) 58
              63:     22(int) Load 57(byteAddrTemp)
              64:   12(fvec3) Load 52(position_ms)
              65:   46(ivec3) Bitcast 64
              67:      6(int) CompositeExtract 65 0
              68:     34(ptr) AccessChain 62(r) 32 63
                              Store 68 67
              69:     22(int) Load 57(byteAddrTemp)
              70:     22(int) IAdd 69 38
              71:   12(fvec3) Load 52(position_ms)
              72:   46(ivec3) Bitcast 71
              74:      6(int) CompositeExtract 72 1
              75:     34(ptr) AccessChain 62(r) 32 70
                              Store 75 74
              76:     22(int) Load 57(byteAddrTemp)
              77:     22(int) IAdd 76 30
              78:   12(fvec3) Load 52(position_ms)
              79:   46(ivec3) Bitcast 78
              81:      6(int) CompositeExtract 79 2
              82:     34(ptr) AccessChain 62(r) 32 77
                              Store 82 81
                              Return
                              FunctionEnd