spv.depthUnchanged.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 22

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 9 14 16
                              ExecutionMode 4 OriginUpperLeft
                              ExecutionMode 4 DepthReplacing
                              ExecutionMode 4 DepthUnchanged
                              Source GLSL 430
                              Name 4  "main"
                              Name 9  "outColor"
                              Name 14  "gl_FragDepth"
                              Name 16  "gl_FragCoord"
                              Decorate 9(outColor) Location 0
                              Decorate 14(gl_FragDepth) BuiltIn FragDepth
                              Decorate 16(gl_FragCoord) BuiltIn FragCoord
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Output 7(fvec4)
     9(outColor):      8(ptr) Variable Output
              10:    6(float) Constant 1065353216
              11:    6(float) Constant 0
              12:    7(fvec4) ConstantComposite 10 11 11 10
              13:             TypePointer Output 6(float)
14(gl_FragDepth):     13(ptr) Variable Output
              15:             TypePointer Input 7(fvec4)
16(gl_FragCoord):     15(ptr) Variable Input
              17:             TypeInt 32 0
              18:     17(int) Constant 1
              19:             TypePointer Input 6(float)
         4(main):           2 Function None 3
               5:             Label
                              Store 9(outColor) 12
              20:     19(ptr) AccessChain 16(gl_FragCoord) 18
              21:    6(float) Load 20
                              Store 14(gl_FragDepth) 21
                              Return
                              FunctionEnd
