remap.basic.strip.frag
Warning, version 450 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 20

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 15 17
                              ExecutionMode 4 OriginUpperLeft
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
               8:             TypeFunction 7(fvec3)
              11:    6(float) Constant 0
              12:    7(fvec3) ConstantComposite 11 11 11
              13:             TypeVector 6(float) 4
              14:             TypePointer Output 13(fvec4)
              15:     14(ptr) Variable Output
              16:             TypePointer Input 6(float)
              17:     16(ptr) Variable Input
               4:           2 Function None 3
               5:             Label
              18:    6(float) Load 17
              19:   13(fvec4) CompositeConstruct 18 18 18 18
                              Store 15 19
                              Return
                              FunctionEnd
               9:    7(fvec3) Function None 8
              10:             Label
                              ReturnValue 12
                              FunctionEnd
