spv.pp.line.frag
WARNING: spv.pp.line.frag:6: varying deprecated in version 130; may be removed in future release
WARNING: spv.pp.line.frag:7: varying deprecated in version 130; may be removed in future release

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

                              Capability Shader
                              Capability Sampled1D
               2:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 5  "main" 41 53 56 59
                              ExecutionMode 5 OriginUpperLeft
               1:             String  "spv.pp.line.frag"
                              Source GLSL 140 1  "// OpModuleProcessed auto-map-locations
// OpModuleProcessed auto-map-bindings
// OpModuleProcessed client vulkan100
// OpModuleProcessed target-env vulkan1.0
// OpModuleProcessed keep-uncalled
// OpModuleProcessed entry-point main
#line 1
#version 140

uniform sampler1D       texSampler1D;
uniform sampler2D       texSampler2D;

varying float blend;
varying vec4 u;

in  vec2 coords2D;

void main()
{
    float blendscale = 1.789;
    float bias       = 2.0;
    float coords1D   = 1.789;
    vec4  color      = vec4(0.0, 0.0, 0.0, 0.0);
#line 53
    color += texture    (texSampler1D, coords1D);
    color += texture    (texSampler1D, coords1D, bias);
#line 102
    color += texture        (texSampler2D, coords2D);
    color += texture        (texSampler2D, coords2D, bias);

    gl_FragColor = mix(color, u, blend * blendscale);
}
"
                              Name 5  "main"
                              Name 9  "blendscale"
                              Name 11  "bias"
                              Name 13  "coords1D"
                              Name 16  "color"
                              Name 22  "texSampler1D"
                              Name 37  "texSampler2D"
                              Name 41  "coords2D"
                              Name 53  "gl_FragColor"
                              Name 56  "u"
                              Name 59  "blend"
                              Decorate 22(texSampler1D) DescriptorSet 0
                              Decorate 22(texSampler1D) Binding 0
                              Decorate 37(texSampler2D) DescriptorSet 0
                              Decorate 37(texSampler2D) Binding 0
                              Decorate 53(gl_FragColor) Location 0
               3:             TypeVoid
               4:             TypeFunction 3
               7:             TypeFloat 32
               8:             TypePointer Function 7(float)
              10:    7(float) Constant 1071971828
              12:    7(float) Constant 1073741824
              14:             TypeVector 7(float) 4
              15:             TypePointer Function 14(fvec4)
              17:    7(float) Constant 0
              18:   14(fvec4) ConstantComposite 17 17 17 17
              19:             TypeImage 7(float) 1D sampled format:Unknown
              20:             TypeSampledImage 19
              21:             TypePointer UniformConstant 20
22(texSampler1D):     21(ptr) Variable UniformConstant
              34:             TypeImage 7(float) 2D sampled format:Unknown
              35:             TypeSampledImage 34
              36:             TypePointer UniformConstant 35
37(texSampler2D):     36(ptr) Variable UniformConstant
              39:             TypeVector 7(float) 2
              40:             TypePointer Input 39(fvec2)
    41(coords2D):     40(ptr) Variable Input
              52:             TypePointer Output 14(fvec4)
53(gl_FragColor):     52(ptr) Variable Output
              55:             TypePointer Input 14(fvec4)
           56(u):     55(ptr) Variable Input
              58:             TypePointer Input 7(float)
       59(blend):     58(ptr) Variable Input
         5(main):           3 Function None 4
               6:             Label
   9(blendscale):      8(ptr) Variable Function
        11(bias):      8(ptr) Variable Function
    13(coords1D):      8(ptr) Variable Function
       16(color):     15(ptr) Variable Function
                              Line 1 13 0
                              Store 9(blendscale) 10
                              Line 1 14 0
                              Store 11(bias) 12
                              Line 1 15 0
                              Store 13(coords1D) 10
                              Line 1 16 0
                              Store 16(color) 18
                              Line 1 54 0
              23:          20 Load 22(texSampler1D)
              24:    7(float) Load 13(coords1D)
              25:   14(fvec4) ImageSampleImplicitLod 23 24
              26:   14(fvec4) Load 16(color)
              27:   14(fvec4) FAdd 26 25
                              Store 16(color) 27
                              Line 1 55 0
              28:          20 Load 22(texSampler1D)
              29:    7(float) Load 13(coords1D)
              30:    7(float) Load 11(bias)
              31:   14(fvec4) ImageSampleImplicitLod 28 29 Bias 30
              32:   14(fvec4) Load 16(color)
              33:   14(fvec4) FAdd 32 31
                              Store 16(color) 33
                              Line 1 103 0
              38:          35 Load 37(texSampler2D)
              42:   39(fvec2) Load 41(coords2D)
              43:   14(fvec4) ImageSampleImplicitLod 38 42
              44:   14(fvec4) Load 16(color)
              45:   14(fvec4) FAdd 44 43
                              Store 16(color) 45
                              Line 1 104 0
              46:          35 Load 37(texSampler2D)
              47:   39(fvec2) Load 41(coords2D)
              48:    7(float) Load 11(bias)
              49:   14(fvec4) ImageSampleImplicitLod 46 47 Bias 48
              50:   14(fvec4) Load 16(color)
              51:   14(fvec4) FAdd 50 49
                              Store 16(color) 51
                              Line 1 106 0
              54:   14(fvec4) Load 16(color)
              57:   14(fvec4) Load 56(u)
              60:    7(float) Load 59(blend)
              61:    7(float) Load 9(blendscale)
              62:    7(float) FMul 60 61
              63:   14(fvec4) CompositeConstruct 62 62 62 62
              64:   14(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 54 57 63
                              Store 53(gl_FragColor) 64
                              Return
                              FunctionEnd
