hlsl.intrinsics.evalfns.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:3  Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
0:3    Function Parameters: 
0:3      'inF1' (layout(location=0 ) in float)
0:3      'inF2' (layout(location=1 ) in 2-component vector of float)
0:3      'inF3' (layout(location=2 ) in 3-component vector of float)
0:3      'inF4' (layout(location=3 ) in 4-component vector of float)
0:3      'inI2' (layout(location=4 ) in 2-component vector of int)
0:?     Sequence
0:4      interpolateAtOffset (temp float)
0:4        'inF1' (layout(location=0 ) in float)
0:?         Constant:
0:?           -0.500000
0:?           -0.062500
0:5      interpolateAtOffset (temp 2-component vector of float)
0:5        'inF2' (layout(location=1 ) in 2-component vector of float)
0:?         Constant:
0:?           0.000000
0:?           0.062500
0:6      interpolateAtOffset (temp 3-component vector of float)
0:6        'inF3' (layout(location=2 ) in 3-component vector of float)
0:?         Constant:
0:?           0.187500
0:?           -0.375000
0:7      interpolateAtOffset (temp 4-component vector of float)
0:7        'inF4' (layout(location=3 ) in 4-component vector of float)
0:?         Constant:
0:?           0.437500
0:?           -0.500000
0:9      interpolateAtOffset (temp float)
0:9        'inF1' (layout(location=0 ) in float)
0:9        vector-scale (temp 2-component vector of float)
0:9          Convert int to float (temp 2-component vector of float)
0:9            right-shift (temp 2-component vector of int)
0:9              left-shift (temp 2-component vector of int)
0:9                'inI2' (layout(location=4 ) in 2-component vector of int)
0:9                Constant:
0:9                  28 (const int)
0:9              Constant:
0:9                28 (const int)
0:9          Constant:
0:9            0.062500
0:?   Linker Objects
0:?     'inF1' (layout(location=0 ) in float)
0:?     'inF2' (layout(location=1 ) in 2-component vector of float)
0:?     'inF3' (layout(location=2 ) in 3-component vector of float)
0:?     'inF4' (layout(location=3 ) in 4-component vector of float)
0:?     'inI2' (layout(location=4 ) in 2-component vector of int)


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:3  Function Definition: main(f1;vf2;vf3;vf4;vi2; (temp void)
0:3    Function Parameters: 
0:3      'inF1' (layout(location=0 ) in float)
0:3      'inF2' (layout(location=1 ) in 2-component vector of float)
0:3      'inF3' (layout(location=2 ) in 3-component vector of float)
0:3      'inF4' (layout(location=3 ) in 4-component vector of float)
0:3      'inI2' (layout(location=4 ) in 2-component vector of int)
0:?     Sequence
0:4      interpolateAtOffset (temp float)
0:4        'inF1' (layout(location=0 ) in float)
0:?         Constant:
0:?           -0.500000
0:?           -0.062500
0:5      interpolateAtOffset (temp 2-component vector of float)
0:5        'inF2' (layout(location=1 ) in 2-component vector of float)
0:?         Constant:
0:?           0.000000
0:?           0.062500
0:6      interpolateAtOffset (temp 3-component vector of float)
0:6        'inF3' (layout(location=2 ) in 3-component vector of float)
0:?         Constant:
0:?           0.187500
0:?           -0.375000
0:7      interpolateAtOffset (temp 4-component vector of float)
0:7        'inF4' (layout(location=3 ) in 4-component vector of float)
0:?         Constant:
0:?           0.437500
0:?           -0.500000
0:9      interpolateAtOffset (temp float)
0:9        'inF1' (layout(location=0 ) in float)
0:9        vector-scale (temp 2-component vector of float)
0:9          Convert int to float (temp 2-component vector of float)
0:9            right-shift (temp 2-component vector of int)
0:9              left-shift (temp 2-component vector of int)
0:9                'inI2' (layout(location=4 ) in 2-component vector of int)
0:9                Constant:
0:9                  28 (const int)
0:9              Constant:
0:9                28 (const int)
0:9          Constant:
0:9            0.062500
0:?   Linker Objects
0:?     'inF1' (layout(location=0 ) in float)
0:?     'inF2' (layout(location=1 ) in 2-component vector of float)
0:?     'inF3' (layout(location=2 ) in 3-component vector of float)
0:?     'inF4' (layout(location=3 ) in 4-component vector of float)
0:?     'inI2' (layout(location=4 ) in 2-component vector of int)

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

                              Capability Shader
                              Capability InterpolationFunction
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 8 15 22 29 36
                              ExecutionMode 4 OriginUpperLeft
                              Name 4  "main"
                              Name 8  "inF1"
                              Name 15  "inF2"
                              Name 22  "inF3"
                              Name 29  "inF4"
                              Name 36  "inI2"
                              Decorate 8(inF1) Location 0
                              Decorate 15(inF2) Location 1
                              Decorate 22(inF3) Location 2
                              Decorate 29(inF4) Location 3
                              Decorate 36(inI2) Location 4
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypePointer Input 6(float)
         8(inF1):      7(ptr) Variable Input
               9:             TypeVector 6(float) 2
              10:    6(float) Constant 3204448256
              11:    6(float) Constant 3179282432
              12:    9(fvec2) ConstantComposite 10 11
              14:             TypePointer Input 9(fvec2)
        15(inF2):     14(ptr) Variable Input
              16:    6(float) Constant 0
              17:    6(float) Constant 1031798784
              18:    9(fvec2) ConstantComposite 16 17
              20:             TypeVector 6(float) 3
              21:             TypePointer Input 20(fvec3)
        22(inF3):     21(ptr) Variable Input
              23:    6(float) Constant 1044381696
              24:    6(float) Constant 3200253952
              25:    9(fvec2) ConstantComposite 23 24
              27:             TypeVector 6(float) 4
              28:             TypePointer Input 27(fvec4)
        29(inF4):     28(ptr) Variable Input
              30:    6(float) Constant 1054867456
              31:    9(fvec2) ConstantComposite 30 10
              33:             TypeInt 32 1
              34:             TypeVector 33(int) 2
              35:             TypePointer Input 34(ivec2)
        36(inI2):     35(ptr) Variable Input
              38:     33(int) Constant 28
         4(main):           2 Function None 3
               5:             Label
              13:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 8(inF1) 12
              19:    9(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 15(inF2) 18
              26:   20(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 22(inF3) 25
              32:   27(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 29(inF4) 31
              37:   34(ivec2) Load 36(inI2)
              39:   34(ivec2) CompositeConstruct 38 38
              40:   34(ivec2) ShiftLeftLogical 37 39
              41:   34(ivec2) CompositeConstruct 38 38
              42:   34(ivec2) ShiftRightArithmetic 40 41
              43:    9(fvec2) ConvertSToF 42
              44:    9(fvec2) VectorTimesScalar 43 17
              45:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 8(inF1) 44
                              Return
                              FunctionEnd
