remap.basic.strip.frag
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 17 19
                              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
              15:             TypeVector 6(float) 4
              16:             TypePointer Output 15(fvec4)
              17:     16(ptr) Variable Output
              18:             TypePointer Input 6(float)
              19:     18(ptr) Variable Input
               4:           2 Function None 3
               5:             Label
              20:    6(float) Load 19
              21:   15(fvec4) CompositeConstruct 20 20 20 20
                              Store 17 21
                              Return
                              FunctionEnd
               9:    7(fvec3) Function None 8
              10:             Label
                              ReturnValue 12
                              FunctionEnd
