hlsl.cast.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:2    Function Parameters: 
0:2      'input' ( in 4-component vector of float)
0:?     Sequence
0:3      Branch: Return with expression
0:3        add ( temp 4-component vector of float)
0:3          add ( temp 4-component vector of float)
0:3            Construct vec4 ( temp 4-component vector of float)
0:3              'input' ( in 4-component vector of float)
0:3            Convert int to float ( temp 4-component vector of float)
0:3              Convert float to int ( temp 4-component vector of int)
0:3                'input' ( in 4-component vector of float)
0:3          Constant:
0:3            1.198000
0:3            1.198000
0:3            1.198000
0:3            1.198000
0:2  Function Definition: PixelShaderFunction( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=0) in 4-component vector of float)
0:2      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:2        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:?           'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'input' (layout( location=0) in 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:2  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:2    Function Parameters: 
0:2      'input' ( in 4-component vector of float)
0:?     Sequence
0:3      Branch: Return with expression
0:3        add ( temp 4-component vector of float)
0:3          add ( temp 4-component vector of float)
0:3            Construct vec4 ( temp 4-component vector of float)
0:3              'input' ( in 4-component vector of float)
0:3            Convert int to float ( temp 4-component vector of float)
0:3              Convert float to int ( temp 4-component vector of int)
0:3                'input' ( in 4-component vector of float)
0:3          Constant:
0:3            1.198000
0:3            1.198000
0:3            1.198000
0:3            1.198000
0:2  Function Definition: PixelShaderFunction( ( temp void)
0:2    Function Parameters: 
0:?     Sequence
0:2      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=0) in 4-component vector of float)
0:2      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:2        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:?           'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'input' (layout( location=0) in 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction" 32 35
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "PixelShaderFunction"
                              Name 11  "@PixelShaderFunction(vf4;"
                              Name 10  "input"
                              Name 30  "input"
                              Name 32  "input"
                              Name 35  "@entryPointOutput"
                              Name 36  "param"
                              Decorate 32(input) Location 0
                              Decorate 35(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
               9:             TypeFunction 7(fvec4) 8(ptr)
              20:             TypeInt 32 1
              21:             TypeVector 20(int) 4
              25:    6(float) Constant 1067014160
              26:    7(fvec4) ConstantComposite 25 25 25 25
              31:             TypePointer Input 7(fvec4)
       32(input):     31(ptr) Variable Input
              34:             TypePointer Output 7(fvec4)
35(@entryPointOutput):     34(ptr) Variable Output
4(PixelShaderFunction):           2 Function None 3
               5:             Label
       30(input):      8(ptr) Variable Function
       36(param):      8(ptr) Variable Function
              33:    7(fvec4) Load 32(input)
                              Store 30(input) 33
              37:    7(fvec4) Load 30(input)
                              Store 36(param) 37
              38:    7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 36(param)
                              Store 35(@entryPointOutput) 38
                              Return
                              FunctionEnd
11(@PixelShaderFunction(vf4;):    7(fvec4) Function None 9
       10(input):      8(ptr) FunctionParameter
              12:             Label
              13:    7(fvec4) Load 10(input)
              14:    6(float) CompositeExtract 13 0
              15:    6(float) CompositeExtract 13 1
              16:    6(float) CompositeExtract 13 2
              17:    6(float) CompositeExtract 13 3
              18:    7(fvec4) CompositeConstruct 14 15 16 17
              19:    7(fvec4) Load 10(input)
              22:   21(ivec4) ConvertFToS 19
              23:    7(fvec4) ConvertSToF 22
              24:    7(fvec4) FAdd 18 23
              27:    7(fvec4) FAdd 24 26
                              ReturnValue 27
                              FunctionEnd
