hlsl.struct.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:40  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:31    Function Parameters: 
0:31      'input' (in 4-component vector of float)
0:?     Sequence
0:36      Compare Equal (temp bool)
0:36        's3' (temp structure{temp 3-component vector of bool b3})
0:36        's3' (temp structure{temp 3-component vector of bool b3})
0:37      move second child to first child (temp 4-component vector of float)
0:37        i: direct index for structure (temp 4-component vector of float)
0:37          's2' (global structure{temp 4-component vector of float i})
0:37          Constant:
0:37            0 (const int)
0:37        ff4: direct index for structure (temp 4-component vector of float FragCoord)
0:37          's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:37          Constant:
0:37            7 (const int)
0:39      Branch: Return with expression
0:39        'input' (in 4-component vector of float)
0:?   Linker Objects
0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:?     's2' (global structure{temp 4-component vector of float i})
0:?     's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:40  Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
0:31    Function Parameters: 
0:31      'input' (in 4-component vector of float)
0:?     Sequence
0:36      Compare Equal (temp bool)
0:36        's3' (temp structure{temp 3-component vector of bool b3})
0:36        's3' (temp structure{temp 3-component vector of bool b3})
0:37      move second child to first child (temp 4-component vector of float)
0:37        i: direct index for structure (temp 4-component vector of float)
0:37          's2' (global structure{temp 4-component vector of float i})
0:37          Constant:
0:37            0 (const int)
0:37        ff4: direct index for structure (temp 4-component vector of float FragCoord)
0:37          's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})
0:37          Constant:
0:37            7 (const int)
0:39      Branch: Return with expression
0:39        'input' (in 4-component vector of float)
0:?   Linker Objects
0:?     's1' (global structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d})
0:?     's2' (global structure{temp 4-component vector of float i})
0:?     's4' (global structure{smooth in 4-component vector of float a, flat temp bool b, centroid noperspective temp 1-component vector of float c, centroid sample temp 2-component vector of float d, temp bool Face ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float FragCoord ff4})

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "PixelShaderFunction" 34
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 450
                              Name 4  "PixelShaderFunction"
                              Name 8  "FS"
                              MemberName 8(FS) 0  "b3"
                              Name 10  "s3"
                              Name 19  ""
                              MemberName 19 0  "i"
                              Name 21  "s2"
                              Name 25  ""
                              MemberName 25 0  "a"
                              MemberName 25 1  "b"
                              MemberName 25 2  "c"
                              MemberName 25 3  "d"
                              MemberName 25 4  "ff1"
                              MemberName 25 5  "ff2"
                              MemberName 25 6  "ff3"
                              MemberName 25 7  "ff4"
                              Name 27  "s4"
                              Name 34  "input"
                              Name 37  "myS"
                              MemberName 37(myS) 0  "b"
                              MemberName 37(myS) 1  "c"
                              MemberName 37(myS) 2  "a"
                              MemberName 37(myS) 3  "d"
                              Name 39  "s1"
                              MemberDecorate 25 4 BuiltIn FrontFacing
                              MemberDecorate 25 7 BuiltIn FragCoord
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeBool
               7:             TypeVector 6(bool) 3
           8(FS):             TypeStruct 7(bvec3)
               9:             TypePointer Function 8(FS)
              17:             TypeFloat 32
              18:             TypeVector 17(float) 4
              19:             TypeStruct 18(fvec4)
              20:             TypePointer Private 19(struct)
          21(s2):     20(ptr) Variable Private
              22:             TypeInt 32 1
              23:     22(int) Constant 0
              24:             TypeVector 17(float) 2
              25:             TypeStruct 18(fvec4) 6(bool) 17(float) 24(fvec2) 6(bool) 6(bool) 6(bool) 18(fvec4)
              26:             TypePointer Private 25(struct)
          27(s4):     26(ptr) Variable Private
              28:     22(int) Constant 7
              29:             TypePointer Private 18(fvec4)
              33:             TypePointer Input 18(fvec4)
       34(input):     33(ptr) Variable Input
         37(myS):             TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
              38:             TypePointer Private 37(myS)
          39(s1):     38(ptr) Variable Private
4(PixelShaderFunction):           2 Function None 3
               5:             Label
          10(s3):      9(ptr) Variable Function
              11:       8(FS) Load 10(s3)
              12:       8(FS) Load 10(s3)
              13:    7(bvec3) CompositeExtract 11 0
              14:    7(bvec3) CompositeExtract 12 0
              15:    7(bvec3) LogicalEqual 13 14
              16:     6(bool) All 15
              30:     29(ptr) AccessChain 27(s4) 28
              31:   18(fvec4) Load 30
              32:     29(ptr) AccessChain 21(s2) 23
                              Store 32 31
              35:   18(fvec4) Load 34(input)
                              ReturnValue 35
                              FunctionEnd
