hlsl.depthGreater.frag
Shader version: 500
gl_FragCoord origin is upper left
using depth_greater
0:? Sequence
0:2  Function Definition: @PixelShaderFunction(f1; ( temp void)
0:2    Function Parameters: 
0:2      'depth' ( out float)
0:?     Sequence
0:3      move second child to first child ( temp float)
0:3        'depth' ( out float)
0:3        Constant:
0:3          0.200000
0:2  Function Definition: PixelShaderFunction( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      Function Call: @PixelShaderFunction(f1; ( temp void)
0:?         'depth' ( temp float)
0:2      move second child to first child ( temp float)
0:?         'depth' ( out float FragDepth)
0:?         'depth' ( temp float)
0:?   Linker Objects
0:?     'depth' ( out float FragDepth)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
using depth_greater
0:? Sequence
0:2  Function Definition: @PixelShaderFunction(f1; ( temp void)
0:2    Function Parameters: 
0:2      'depth' ( out float)
0:?     Sequence
0:3      move second child to first child ( temp float)
0:3        'depth' ( out float)
0:3        Constant:
0:3          0.200000
0:2  Function Definition: PixelShaderFunction( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      Function Call: @PixelShaderFunction(f1; ( temp void)
0:?         'depth' ( temp float)
0:2      move second child to first child ( temp float)
0:?         'depth' ( out float FragDepth)
0:?         'depth' ( temp float)
0:?   Linker Objects
0:?     'depth' ( out float FragDepth)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction" 18
                              ExecutionMode 4 OriginUpperLeft
                              ExecutionMode 4 DepthGreater
                              Source HLSL 500
                              Name 4  "PixelShaderFunction"
                              Name 10  "@PixelShaderFunction(f1;"
                              Name 9  "depth"
                              Name 13  "depth"
                              Name 14  "param"
                              Name 18  "depth"
                              Decorate 18(depth) BuiltIn FragDepth
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeFunction 2 7(ptr)
              12:    6(float) Constant 1045220557
              17:             TypePointer Output 6(float)
       18(depth):     17(ptr) Variable Output
4(PixelShaderFunction):           2 Function None 3
               5:             Label
       13(depth):      7(ptr) Variable Function
       14(param):      7(ptr) Variable Function
              15:           2 FunctionCall 10(@PixelShaderFunction(f1;) 14(param)
              16:    6(float) Load 14(param)
                              Store 13(depth) 16
              19:    6(float) Load 13(depth)
                              Store 18(depth) 19
                              Return
                              FunctionEnd
10(@PixelShaderFunction(f1;):           2 Function None 8
        9(depth):      7(ptr) FunctionParameter
              11:             Label
                              Store 9(depth) 12
                              Return
                              FunctionEnd
