hlsl.intrinsics.d3dcolortoubyte4.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5  Function Definition: @main( ( temp 4-component vector of int)
0:5    Function Parameters: 
0:?     Sequence
0:6      Branch: Return with expression
0:6        Convert float to int ( temp 4-component vector of int)
0:6          vector-scale ( temp 4-component vector of float)
0:6            Constant:
0:6              255.001953
0:6            vector swizzle ( temp 4-component vector of float)
0:6              col4: direct index for structure ( uniform 4-component vector of float)
0:6                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float col4})
0:6                Constant:
0:6                  0 (const uint)
0:6              Sequence
0:6                Constant:
0:6                  2 (const int)
0:6                Constant:
0:6                  1 (const int)
0:6                Constant:
0:6                  0 (const int)
0:6                Constant:
0:6                  3 (const int)
0:5  Function Definition: main( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:5      move second child to first child ( temp 4-component vector of int)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of int)
0:5        Function Call: @main( ( temp 4-component vector of int)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float col4})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of int)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:5  Function Definition: @main( ( temp 4-component vector of int)
0:5    Function Parameters: 
0:?     Sequence
0:6      Branch: Return with expression
0:6        Convert float to int ( temp 4-component vector of int)
0:6          vector-scale ( temp 4-component vector of float)
0:6            Constant:
0:6              255.001953
0:6            vector swizzle ( temp 4-component vector of float)
0:6              col4: direct index for structure ( uniform 4-component vector of float)
0:6                'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float col4})
0:6                Constant:
0:6                  0 (const uint)
0:6              Sequence
0:6                Constant:
0:6                  2 (const int)
0:6                Constant:
0:6                  1 (const int)
0:6                Constant:
0:6                  0 (const int)
0:6                Constant:
0:6                  3 (const int)
0:5  Function Definition: main( ( temp void)
0:5    Function Parameters: 
0:?     Sequence
0:5      move second child to first child ( temp 4-component vector of int)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of int)
0:5        Function Call: @main( ( temp 4-component vector of int)
0:?   Linker Objects
0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float col4})
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of int)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 27
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "@main("
                              Name 14  "$Global"
                              MemberName 14($Global) 0  "col4"
                              Name 16  ""
                              Name 27  "@entryPointOutput"
                              MemberDecorate 14($Global) 0 Offset 0
                              Decorate 14($Global) Block
                              Decorate 16 DescriptorSet 0
                              Decorate 16 Binding 0
                              Decorate 27(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 1
               7:             TypeVector 6(int) 4
               8:             TypeFunction 7(ivec4)
              11:             TypeFloat 32
              12:   11(float) Constant 1132396672
              13:             TypeVector 11(float) 4
     14($Global):             TypeStruct 13(fvec4)
              15:             TypePointer Uniform 14($Global)
              16:     15(ptr) Variable Uniform
              17:      6(int) Constant 0
              18:             TypePointer Uniform 13(fvec4)
              26:             TypePointer Output 7(ivec4)
27(@entryPointOutput):     26(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              28:    7(ivec4) FunctionCall 9(@main()
                              Store 27(@entryPointOutput) 28
                              Return
                              FunctionEnd
       9(@main():    7(ivec4) Function None 8
              10:             Label
              19:     18(ptr) AccessChain 16 17
              20:   13(fvec4) Load 19
              21:   13(fvec4) VectorShuffle 20 20 2 1 0 3
              22:   13(fvec4) VectorTimesScalar 21 12
              23:    7(ivec4) ConvertFToS 22
                              ReturnValue 23
                              FunctionEnd
