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): 8000a
// 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 1
                              Decorate 41(coords2D) Location 2
                              Decorate 53(gl_FragColor) Location 0
                              Decorate 56(u) Location 1
                              Decorate 59(blend) 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
