spv.prepost.frag

Linked fragment stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 97

                              Source GLSL 140
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginLowerLeft
                              Name 4  "main"
                              Name 9  "index"
                              Name 15  "s"
                              MemberName 15(s) 0  "y"
                              Name 17  "str"
                              Name 23  "t"
                              Name 51  "x"
                              Name 62  "y"
                              Name 67  "z"
                              Name 74  "v"
                              Name 93  "gl_FragColor"
                              Decorate 93(gl_FragColor) BuiltIn FragColor
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeInt 32 1
               8:             TypePointer Function 7(int)
              10:      7(int) Constant 5
              11:             TypeFloat 32
              12:             TypeInt 32 0
              13:     12(int) Constant 5
              14:             TypeArray 11(float) 13
           15(s):             TypeStruct 14
              16:             TypePointer Function 15(s)
              18:      7(int) Constant 0
              19:      7(int) Constant 4
              20:   11(float) Constant 1073741824
              21:             TypePointer Function 11(float)
              25:      7(int) Constant 1
              29:   11(float) Constant 1065353216
              72:             TypeVector 11(float) 4
              73:             TypePointer Function 72(fvec4)
              75:   11(float) Constant 1077936128
              76:   11(float) Constant 1082130432
              77:   72(fvec4) ConstantComposite 29 20 75 76
              92:             TypePointer Output 72(fvec4)
93(gl_FragColor):     92(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
        9(index):      8(ptr) Variable Function
         17(str):     16(ptr) Variable Function
           23(t):     21(ptr) Variable Function
           51(x):     21(ptr) Variable Function
           62(y):     21(ptr) Variable Function
           67(z):     21(ptr) Variable Function
           74(v):     73(ptr) Variable Function
                              Store 9(index) 10
              22:     21(ptr) AccessChain 17(str) 18 19
                              Store 22 20
              24:      7(int) Load 9(index)
              26:      7(int) ISub 24 25
                              Store 9(index) 26
              27:     21(ptr) AccessChain 17(str) 18 26
              28:   11(float) Load 27
              30:   11(float) FAdd 28 29
                              Store 27 30
                              Store 23(t) 30
              31:   11(float) Load 23(t)
              32:     21(ptr) AccessChain 17(str) 18 19
              33:   11(float) Load 32
              34:   11(float) FAdd 33 31
              35:     21(ptr) AccessChain 17(str) 18 19
                              Store 35 34
              36:     21(ptr) AccessChain 17(str) 18 19
              37:   11(float) Load 36
              38:   11(float) FSub 37 29
                              Store 36 38
                              Store 23(t) 37
              39:      7(int) Load 9(index)
              40:      7(int) IAdd 39 25
                              Store 9(index) 40
              41:   11(float) Load 23(t)
              42:     21(ptr) AccessChain 17(str) 18 39
              43:   11(float) Load 42
              44:   11(float) FAdd 43 41
              45:     21(ptr) AccessChain 17(str) 18 39
                              Store 45 44
              46:      7(int) Load 9(index)
              47:      7(int) ISub 46 25
                              Store 9(index) 47
              48:     21(ptr) AccessChain 17(str) 18 47
              49:   11(float) Load 48
              50:   11(float) FSub 49 29
                              Store 48 50
              52:     21(ptr) AccessChain 17(str) 18 19
              53:   11(float) Load 52
                              Store 51(x) 53
              54:   11(float) Load 51(x)
              55:   11(float) FAdd 54 29
                              Store 51(x) 55
              56:   11(float) Load 51(x)
              57:   11(float) FSub 56 29
                              Store 51(x) 57
              58:   11(float) Load 51(x)
              59:   11(float) FAdd 58 29
                              Store 51(x) 59
              60:   11(float) Load 51(x)
              61:   11(float) FSub 60 29
                              Store 51(x) 61
              63:   11(float) Load 51(x)
              64:   11(float) Load 51(x)
              65:   11(float) FAdd 64 29
                              Store 51(x) 65
              66:   11(float) FMul 63 65
                              Store 62(y) 66
              68:   11(float) Load 62(y)
              69:   11(float) Load 51(x)
              70:   11(float) FSub 69 29
                              Store 51(x) 70
              71:   11(float) FMul 68 69
                              Store 67(z) 71
                              Store 74(v) 77
              78:   72(fvec4) Load 74(v)
              79:   11(float) CompositeExtract 78 2
              80:   11(float) FSub 79 29
              81:   72(fvec4) Load 74(v)
              82:   72(fvec4) CompositeInsert 80 81 2
                              Store 74(v) 82
              83:   72(fvec4) Load 74(v)
              84:   72(fvec4) CompositeInsert 79 83 1
                              Store 74(v) 84
              85:   72(fvec4) Load 74(v)
              86:   11(float) CompositeExtract 85 3
              87:   11(float) FSub 86 29
              88:   72(fvec4) Load 74(v)
              89:   72(fvec4) CompositeInsert 87 88 3
                              Store 74(v) 89
              90:   72(fvec4) Load 74(v)
              91:   72(fvec4) CompositeInsert 87 90 0
                              Store 74(v) 91
              94:   11(float) Load 67(z)
              95:   72(fvec4) Load 74(v)
              96:   72(fvec4) VectorTimesScalar 95 94
                              Store 93(gl_FragColor) 96
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
