spv.structure.frag

Linked fragment stage:


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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 45 54
                              ExecutionMode 4 OriginUpperLeft
                              Source GLSL 140
                              Name 4  "main"
                              Name 8  "scale"
                              Name 18  "lunarStruct1"
                              MemberName 18(lunarStruct1) 0  "i"
                              MemberName 18(lunarStruct1) 1  "f"
                              MemberName 18(lunarStruct1) 2  "color"
                              Name 21  "lunarStruct2"
                              MemberName 21(lunarStruct2) 0  "i"
                              MemberName 21(lunarStruct2) 1  "f"
                              MemberName 21(lunarStruct2) 2  "s1_1"
                              Name 24  "foo2"
                              Name 45  "gl_FragColor"
                              Name 50  "samp2D"
                              Name 54  "coord"
                              Name 59  "foo"
                              Decorate 50(samp2D) DescriptorSet 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               9:    6(float) Constant 0
              10:             TypeInt 32 1
              11:             TypeInt 32 0
              12:     11(int) Constant 5
              13:             TypeArray 10(int) 12
              14:     11(int) Constant 4
              15:             TypeArray 6(float) 14
              16:             TypeVector 6(float) 4
              17:             TypeArray 16(fvec4) 12
18(lunarStruct1):             TypeStruct 10(int) 15 17
              19:     11(int) Constant 7
              20:             TypeArray 18(lunarStruct1) 19
21(lunarStruct2):             TypeStruct 13 6(float) 20
              22:             TypeArray 21(lunarStruct2) 12
              23:             TypePointer Private 22
        24(foo2):     23(ptr) Variable Private
              25:     10(int) Constant 3
              26:     10(int) Constant 0
              27:     10(int) Constant 4
              28:             TypePointer Private 10(int)
              31:             TypeBool
              35:     10(int) Constant 2
              36:     11(int) Constant 0
              37:             TypePointer Private 6(float)
              41:     10(int) Constant 1
              44:             TypePointer Output 16(fvec4)
45(gl_FragColor):     44(ptr) Variable Output
              47:             TypeImage 6(float) 2D sampled format:Unknown
              48:             TypeSampledImage 47
              49:             TypePointer UniformConstant 48
      50(samp2D):     49(ptr) Variable UniformConstant
              52:             TypeVector 6(float) 2
              53:             TypePointer Input 52(fvec2)
       54(coord):     53(ptr) Variable Input
              58:             TypePointer Private 18(lunarStruct1)
         59(foo):     58(ptr) Variable Private
         4(main):           2 Function None 3
               5:             Label
        8(scale):      7(ptr) Variable Function
                              Store 8(scale) 9
              29:     28(ptr) AccessChain 24(foo2) 25 26 27
              30:     10(int) Load 29
              32:    31(bool) SGreaterThan 30 26
                              SelectionMerge 34 None
                              BranchConditional 32 33 40
              33:               Label
              38:     37(ptr)   AccessChain 24(foo2) 25 35 35 35 25 36
              39:    6(float)   Load 38
                                Store 8(scale) 39
                                Branch 34
              40:               Label
              42:     37(ptr)   AccessChain 24(foo2) 25 35 35 41 25
              43:    6(float)   Load 42
                                Store 8(scale) 43
                                Branch 34
              34:             Label
              46:    6(float) Load 8(scale)
              51:          48 Load 50(samp2D)
              55:   52(fvec2) Load 54(coord)
              56:   16(fvec4) ImageSampleImplicitLod 51 55
              57:   16(fvec4) VectorTimesScalar 56 46
                              Store 45(gl_FragColor) 57
                              Return
                              FunctionEnd
