spv.structAssignment.frag
WARNING: 0:4: varying deprecated in version 130; may be removed in future release


Linked fragment stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 51

                              Source GLSL 130
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginLowerLeft
                              Name 4  "main"
                              Name 9  "lunarStruct1"
                              MemberName 9(lunarStruct1) 0  "i"
                              MemberName 9(lunarStruct1) 1  "f"
                              Name 10  "lunarStruct2"
                              MemberName 10(lunarStruct2) 0  "i"
                              MemberName 10(lunarStruct2) 1  "f"
                              MemberName 10(lunarStruct2) 2  "s1_1"
                              Name 11  "lunarStruct3"
                              MemberName 11(lunarStruct3) 0  "s2_1"
                              MemberName 11(lunarStruct3) 1  "i"
                              MemberName 11(lunarStruct3) 2  "f"
                              MemberName 11(lunarStruct3) 3  "s1_1"
                              Name 13  "foo3"
                              Name 23  "locals2"
                              Name 28  "foo2"
                              Name 32  "gl_FragColor"
                              Name 41  "sampler"
                              Name 45  "coord"
                              Name 50  "foo"
                              Decorate 32(gl_FragColor) BuiltIn FragColor
                              Decorate 45(coord) Smooth
                              Decorate 50(foo) NoStaticUse
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeInt 32 1
               8:             TypeFloat 32
 9(lunarStruct1):             TypeStruct 7(int) 8(float)
10(lunarStruct2):             TypeStruct 7(int) 8(float) 9(lunarStruct1)
11(lunarStruct3):             TypeStruct 10(lunarStruct2) 7(int) 8(float) 9(lunarStruct1)
              12:             TypePointer UniformConstant 11(lunarStruct3)
        13(foo3):     12(ptr) Variable UniformConstant
              14:      7(int) Constant 0
              15:             TypePointer UniformConstant 7(int)
              18:             TypeBool
              22:             TypePointer Function 10(lunarStruct2)
              24:             TypePointer UniformConstant 10(lunarStruct2)
        28(foo2):     24(ptr) Variable UniformConstant
              30:             TypeVector 8(float) 4
              31:             TypePointer Output 30(fvec4)
32(gl_FragColor):     31(ptr) Variable Output
              33:      7(int) Constant 2
              34:      7(int) Constant 1
              35:             TypePointer Function 8(float)
              38:             TypeImage 8(float) 2D sampled format:Unknown
              39:             TypeSampledImage 38
              40:             TypePointer UniformConstant 39
     41(sampler):     40(ptr) Variable UniformConstant
              43:             TypeVector 8(float) 2
              44:             TypePointer Input 43(fvec2)
       45(coord):     44(ptr) Variable Input
              49:             TypePointer UniformConstant 9(lunarStruct1)
         50(foo):     49(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
     23(locals2):     22(ptr) Variable Function
              16:     15(ptr) AccessChain 13(foo3) 14 14
              17:      7(int) Load 16
              19:    18(bool) SGreaterThan 17 14
                              SelectionMerge 21 None
                              BranchConditional 19 20 27
              20:               Label
              25:     24(ptr)   AccessChain 13(foo3) 14
              26:10(lunarStruct2)   Load 25
                                Store 23(locals2) 26
                                Branch 21
              27:               Label
              29:10(lunarStruct2)   Load 28(foo2)
                                Store 23(locals2) 29
                                Branch 21
              21:             Label
              36:     35(ptr) AccessChain 23(locals2) 33 34
              37:    8(float) Load 36
              42:          39 Load 41(sampler)
              46:   43(fvec2) Load 45(coord)
              47:   30(fvec4) ImageSampleImplicitLod 42 46
              48:   30(fvec4) VectorTimesScalar 47 37
                              Store 32(gl_FragColor) 48
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
