hlsl.intrinsics.lit.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: @PixelShaderFunction(f1;f1;f1; ( temp void)
0:2    Function Parameters: 
0:2      'n_dot_l' ( in float)
0:2      'n_dot_h' ( in float)
0:2      'm' ( in float)
0:?     Sequence
0:3      Sequence
0:3        move second child to first child ( temp 4-component vector of float)
0:3          'r0' ( temp 4-component vector of float)
0:3          Construct vec4 ( temp 4-component vector of float)
0:3            Constant:
0:3              1.000000
0:3            max ( temp float)
0:3              'n_dot_l' ( in float)
0:3              Constant:
0:3                0.000000
0:3            Test condition and select ( temp float): no shortcircuit
0:3              Condition
0:3              Compare Less Than ( temp bool)
0:3                min ( temp float)
0:3                  'n_dot_l' ( in float)
0:3                  'n_dot_h' ( in float)
0:3                Constant:
0:3                  0.000000
0:3              true case
0:3              Constant:
0:3                0.000000
0:3              false case
0:3              component-wise multiply ( temp float)
0:3                'n_dot_h' ( in float)
0:3                'm' ( in float)
0:3            Constant:
0:3              1.000000
0:2  Function Definition: PixelShaderFunction( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      move second child to first child ( temp float)
0:?         'n_dot_l' ( temp float)
0:?         'n_dot_l' (layout( location=0) in float)
0:2      move second child to first child ( temp float)
0:?         'n_dot_h' ( temp float)
0:?         'n_dot_h' (layout( location=1) in float)
0:2      move second child to first child ( temp float)
0:?         'm' ( temp float)
0:?         'm' (layout( location=2) in float)
0:2      Function Call: @PixelShaderFunction(f1;f1;f1; ( temp void)
0:?         'n_dot_l' ( temp float)
0:?         'n_dot_h' ( temp float)
0:?         'm' ( temp float)
0:?   Linker Objects
0:?     'n_dot_l' (layout( location=0) in float)
0:?     'n_dot_h' (layout( location=1) in float)
0:?     'm' (layout( location=2) in float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: @PixelShaderFunction(f1;f1;f1; ( temp void)
0:2    Function Parameters: 
0:2      'n_dot_l' ( in float)
0:2      'n_dot_h' ( in float)
0:2      'm' ( in float)
0:?     Sequence
0:3      Sequence
0:3        move second child to first child ( temp 4-component vector of float)
0:3          'r0' ( temp 4-component vector of float)
0:3          Construct vec4 ( temp 4-component vector of float)
0:3            Constant:
0:3              1.000000
0:3            max ( temp float)
0:3              'n_dot_l' ( in float)
0:3              Constant:
0:3                0.000000
0:3            Test condition and select ( temp float): no shortcircuit
0:3              Condition
0:3              Compare Less Than ( temp bool)
0:3                min ( temp float)
0:3                  'n_dot_l' ( in float)
0:3                  'n_dot_h' ( in float)
0:3                Constant:
0:3                  0.000000
0:3              true case
0:3              Constant:
0:3                0.000000
0:3              false case
0:3              component-wise multiply ( temp float)
0:3                'n_dot_h' ( in float)
0:3                'm' ( in float)
0:3            Constant:
0:3              1.000000
0:2  Function Definition: PixelShaderFunction( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      move second child to first child ( temp float)
0:?         'n_dot_l' ( temp float)
0:?         'n_dot_l' (layout( location=0) in float)
0:2      move second child to first child ( temp float)
0:?         'n_dot_h' ( temp float)
0:?         'n_dot_h' (layout( location=1) in float)
0:2      move second child to first child ( temp float)
0:?         'm' ( temp float)
0:?         'm' (layout( location=2) in float)
0:2      Function Call: @PixelShaderFunction(f1;f1;f1; ( temp void)
0:?         'n_dot_l' ( temp float)
0:?         'n_dot_h' ( temp float)
0:?         'm' ( temp float)
0:?   Linker Objects
0:?     'n_dot_l' (layout( location=0) in float)
0:?     'n_dot_h' (layout( location=1) in float)
0:?     'm' (layout( location=2) in float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction" 33 36 39
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "PixelShaderFunction"
                              Name 12  "@PixelShaderFunction(f1;f1;f1;"
                              Name 9  "n_dot_l"
                              Name 10  "n_dot_h"
                              Name 11  "m"
                              Name 16  "r0"
                              Name 31  "n_dot_l"
                              Name 33  "n_dot_l"
                              Name 35  "n_dot_h"
                              Name 36  "n_dot_h"
                              Name 38  "m"
                              Name 39  "m"
                              Name 41  "param"
                              Name 43  "param"
                              Name 45  "param"
                              Decorate 33(n_dot_l) Location 0
                              Decorate 36(n_dot_h) Location 1
                              Decorate 39(m) Location 2
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Function 6(float)
               8:             TypeFunction 2 7(ptr) 7(ptr) 7(ptr)
              14:             TypeVector 6(float) 4
              15:             TypePointer Function 14(fvec4)
              17:    6(float) Constant 1065353216
              19:    6(float) Constant 0
              24:             TypeBool
              32:             TypePointer Input 6(float)
     33(n_dot_l):     32(ptr) Variable Input
     36(n_dot_h):     32(ptr) Variable Input
           39(m):     32(ptr) Variable Input
4(PixelShaderFunction):           2 Function None 3
               5:             Label
     31(n_dot_l):      7(ptr) Variable Function
     35(n_dot_h):      7(ptr) Variable Function
           38(m):      7(ptr) Variable Function
       41(param):      7(ptr) Variable Function
       43(param):      7(ptr) Variable Function
       45(param):      7(ptr) Variable Function
              34:    6(float) Load 33(n_dot_l)
                              Store 31(n_dot_l) 34
              37:    6(float) Load 36(n_dot_h)
                              Store 35(n_dot_h) 37
              40:    6(float) Load 39(m)
                              Store 38(m) 40
              42:    6(float) Load 31(n_dot_l)
                              Store 41(param) 42
              44:    6(float) Load 35(n_dot_h)
                              Store 43(param) 44
              46:    6(float) Load 38(m)
                              Store 45(param) 46
              47:           2 FunctionCall 12(@PixelShaderFunction(f1;f1;f1;) 41(param) 43(param) 45(param)
                              Return
                              FunctionEnd
12(@PixelShaderFunction(f1;f1;f1;):           2 Function None 8
      9(n_dot_l):      7(ptr) FunctionParameter
     10(n_dot_h):      7(ptr) FunctionParameter
           11(m):      7(ptr) FunctionParameter
              13:             Label
          16(r0):     15(ptr) Variable Function
              18:    6(float) Load 9(n_dot_l)
              20:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 18 19
              21:    6(float) Load 9(n_dot_l)
              22:    6(float) Load 10(n_dot_h)
              23:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 21 22
              25:    24(bool) FOrdLessThan 23 19
              26:    6(float) Load 10(n_dot_h)
              27:    6(float) Load 11(m)
              28:    6(float) FMul 26 27
              29:    6(float) Select 25 19 28
              30:   14(fvec4) CompositeConstruct 17 20 29 17
                              Store 16(r0) 30
                              Return
                              FunctionEnd
