spv.400.frag
Warning, version 400 is not yet complete; most version-specific features are present, but some are missing.


Linked fragment stage:


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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 50 44 11 96 69 119 56
                              ExecutionMode 4 OriginLowerLeft
                              Source GLSL 400
                              SourceExtension  "GL_ARB_separate_shader_objects"
                              Name 4  "main"
                              Name 6  "foo23("
                              Name 11  "outp"
                              Name 15  "u2drs"
                              Name 36  "v"
                              Name 42  "arrayedSampler"
                              Name 44  "i"
                              Name 50  "c2D"
                              Name 56  "gl_ClipDistance"
                              Name 69  "uoutp"
                              Name 73  "samp2dr"
                              Name 96  "ioutp"
                              Name 100  "isamp2DA"
                              Name 117  "gl_FragCoord"
                              Name 119  "vl2"
                              Decorate 44(i) Flat
                              Decorate 56(gl_ClipDistance) BuiltIn ClipDistance
                              Decorate 117(gl_FragCoord) BuiltIn FragCoord
                              Decorate 119(vl2) Location 6
               2:             TypeVoid
               3:             TypeFunction 2
               8:             TypeFloat 32
               9:             TypeVector 8(float) 4
              10:             TypePointer Output 9(fvec4)
        11(outp):     10(ptr) Variable Output
              12:             TypeImage 8(float) Rect depth sampled format:Unknown
              13:             TypeSampledImage 12
              14:             TypePointer UniformConstant 13
       15(u2drs):     14(ptr) Variable UniformConstant
              18:             TypeVector 8(float) 2
              19:    8(float) Constant 0
              20:   18(fvec2) ConstantComposite 19 19
              21:             TypeInt 32 1
              22:             TypeVector 21(int) 2
              23:     21(int) Constant 3
              24:     21(int) Constant 4
              25:   22(ivec2) ConstantComposite 23 24
              28:             TypeInt 32 0
              29:     28(int) Constant 0
              30:             TypePointer Output 8(float)
              35:             TypePointer Function 9(fvec4)
              37:             TypeImage 8(float) 2D sampled format:Unknown
              38:             TypeSampledImage 37
              39:     28(int) Constant 5
              40:             TypeArray 38 39
              41:             TypePointer UniformConstant 40
42(arrayedSampler):     41(ptr) Variable UniformConstant
              43:             TypePointer Input 21(int)
           44(i):     43(ptr) Variable Input
              46:             TypePointer UniformConstant 38
              49:             TypePointer Input 18(fvec2)
         50(c2D):     49(ptr) Variable Input
              53:     28(int) Constant 2
              54:             TypeArray 8(float) 53
              55:             TypePointer Input 54
56(gl_ClipDistance):     55(ptr) Variable Input
              57:     21(int) Constant 1
              58:             TypePointer Input 8(float)
              62:             TypeVector 8(float) 3
              67:             TypeVector 28(int) 4
              68:             TypePointer Output 67(ivec4)
       69(uoutp):     68(ptr) Variable Output
              70:             TypeImage 28(int) Rect sampled format:Unknown
              71:             TypeSampledImage 70
              72:             TypePointer UniformConstant 71
     73(samp2dr):     72(ptr) Variable UniformConstant
              76:     28(int) Constant 4
              77:             TypeArray 22(ivec2) 76
              78:     21(int) Constant 2
              79:   22(ivec2) ConstantComposite 57 78
              80:     21(int) Constant 15
              81:     21(int) Constant 16
              82:   22(ivec2) ConstantComposite 80 81
              83:     21(int) Constant 4294967294
              84:     21(int) Constant 0
              85:   22(ivec2) ConstantComposite 83 84
              86:          77 ConstantComposite 79 25 82 85
              94:             TypeVector 21(int) 4
              95:             TypePointer Output 94(ivec4)
       96(ioutp):     95(ptr) Variable Output
              97:             TypeImage 21(int) 2D array sampled format:Unknown
              98:             TypeSampledImage 97
              99:             TypePointer UniformConstant 98
   100(isamp2DA):     99(ptr) Variable UniformConstant
             102:    8(float) Constant 1036831949
             103:   62(fvec3) ConstantComposite 102 102 102
             104:   22(ivec2) ConstantComposite 57 57
             116:             TypePointer Input 9(fvec4)
117(gl_FragCoord):    116(ptr) Variable Input
        119(vl2):    116(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
           36(v):     35(ptr) Variable Function
              45:     21(int) Load 44(i)
              47:     46(ptr) AccessChain 42(arrayedSampler) 45
              48:          38 Load 47
              51:   18(fvec2) Load 50(c2D)
              52:    9(fvec4) ImageSampleImplicitLod 48 51
                              Store 36(v) 52
              59:     58(ptr) AccessChain 56(gl_ClipDistance) 57
              60:    8(float) Load 59
              61:     30(ptr) AccessChain 11(outp) 29
                              Store 61 60
              63:    9(fvec4) Load 36(v)
              64:   62(fvec3) VectorShuffle 63 63 1 2 3
              65:    9(fvec4) Load 11(outp)
              66:    9(fvec4) VectorShuffle 65 64 0 4 5 6
                              Store 11(outp) 66
              74:          71 Load 73(samp2dr)
              75:   18(fvec2) Load 50(c2D)
              87:   67(ivec4) ImageGather 74 75 78 ConstOffsets 86
                              Store 69(uoutp) 87
              88:     46(ptr) AccessChain 42(arrayedSampler) 84
              89:          38 Load 88
              90:   18(fvec2) Load 50(c2D)
              91:    9(fvec4) ImageGather 89 90 84
              92:    9(fvec4) Load 11(outp)
              93:    9(fvec4) FAdd 92 91
                              Store 11(outp) 93
             101:          98 Load 100(isamp2DA)
             105:   94(ivec4) ImageGather 101 103 23 ConstOffset 104
                              Store 96(ioutp) 105
             106:          98 Load 100(isamp2DA)
             107:   94(ivec4) ImageGather 106 103 23 ConstOffset 104
             108:   94(ivec4) Load 96(ioutp)
             109:   94(ivec4) IAdd 108 107
                              Store 96(ioutp) 109
             110:          98 Load 100(isamp2DA)
             111:     21(int) Load 44(i)
             112:   22(ivec2) CompositeConstruct 111 111
             113:   94(ivec4) ImageGather 110 103 84 Offset 112
             114:   94(ivec4) Load 96(ioutp)
             115:   94(ivec4) IAdd 114 113
                              Store 96(ioutp) 115
             118:    9(fvec4) Load 117(gl_FragCoord)
             120:    9(fvec4) Load 119(vl2)
             121:    9(fvec4) FAdd 118 120
             122:    9(fvec4) Load 11(outp)
             123:    9(fvec4) FAdd 122 121
                              Store 11(outp) 123
             124:           2 FunctionCall 6(foo23()
                              Return
                              FunctionEnd
       6(foo23():           2 Function None 3
               7:             Label
              16:          13 Load 15(u2drs)
              17:    9(fvec4) Load 11(outp)
              26:    8(float) CompositeExtract 17 3
              27:    8(float) ImageSampleProjDrefExplicitLod 16 17 26 Grad ConstOffset 20 20 25
              31:     30(ptr) AccessChain 11(outp) 29
              32:    8(float) Load 31
              33:    8(float) FAdd 32 27
              34:     30(ptr) AccessChain 11(outp) 29
                              Store 34 33
                              Return
                              FunctionEnd
