
This needs some render testing, but is destined to be part of master. This also leads to a variety of other simplifications. - IO are global symbols, so only need one list of linkage nodes (deferred) - no longer need parse-context-wide 'inEntryPoint' state, entry-point is localized - several parts of splitting/flattening are now localized
403 lines
17 KiB
Plaintext
Executable File
403 lines
17 KiB
Plaintext
Executable File
hlsl.conditional.frag
|
|
Shader version: 450
|
|
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 Sequence
|
|
0:3 move second child to first child (temp int)
|
|
0:3 'a' (temp int)
|
|
0:3 Constant:
|
|
0:3 5 (const int)
|
|
0:4 Sequence
|
|
0:4 move second child to first child (temp int)
|
|
0:4 'b' (temp int)
|
|
0:4 Constant:
|
|
0:4 6 (const int)
|
|
0:5 Sequence
|
|
0:5 move second child to first child (temp int)
|
|
0:5 'c' (temp int)
|
|
0:5 Constant:
|
|
0:5 7 (const int)
|
|
0:6 Sequence
|
|
0:6 move second child to first child (temp int)
|
|
0:6 'd' (temp int)
|
|
0:6 Constant:
|
|
0:6 7 (const int)
|
|
0:7 Sequence
|
|
0:7 move second child to first child (temp 4-component vector of float)
|
|
0:7 'ret' (temp 4-component vector of float)
|
|
0:9 add (temp 4-component vector of float)
|
|
0:8 add (temp 4-component vector of float)
|
|
0:7 add (temp 4-component vector of float)
|
|
0:7 vector-scale (temp 4-component vector of float)
|
|
0:7 Convert int to float (temp float)
|
|
0:7 'a' (temp int)
|
|
0:7 'input' (in 4-component vector of float)
|
|
0:8 vector-scale (temp 4-component vector of float)
|
|
0:8 Convert int to float (temp float)
|
|
0:8 'b' (temp int)
|
|
0:8 'input' (in 4-component vector of float)
|
|
0:9 vector-scale (temp 4-component vector of float)
|
|
0:9 Convert int to float (temp float)
|
|
0:9 'c' (temp int)
|
|
0:9 'input' (in 4-component vector of float)
|
|
0:10 vector-scale (temp 4-component vector of float)
|
|
0:10 Convert int to float (temp float)
|
|
0:10 'd' (temp int)
|
|
0:10 'input' (in 4-component vector of float)
|
|
0:12 Comma (temp int)
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'e' (temp int)
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'a' (temp int)
|
|
0:12 Test condition and select (temp int)
|
|
0:12 Condition
|
|
0:12 'b' (temp int)
|
|
0:12 true case
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'c' (temp int)
|
|
0:12 'd' (temp int)
|
|
0:12 false case
|
|
0:12 Constant:
|
|
0:12 10 (const int)
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'b' (temp int)
|
|
0:12 Test condition and select (temp int)
|
|
0:12 Condition
|
|
0:12 'a' (temp int)
|
|
0:12 true case
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'd' (temp int)
|
|
0:12 'c' (temp int)
|
|
0:12 false case
|
|
0:12 Constant:
|
|
0:12 11 (const int)
|
|
0:14 move second child to first child (temp 4-component vector of float)
|
|
0:14 'f' (temp 4-component vector of float)
|
|
0:14 Test condition and select (temp 4-component vector of float)
|
|
0:14 Condition
|
|
0:14 Compare Less Than (temp bool)
|
|
0:14 direct index (temp float)
|
|
0:14 'ret' (temp 4-component vector of float)
|
|
0:14 Constant:
|
|
0:14 0 (const int)
|
|
0:14 direct index (temp float)
|
|
0:14 'input' (in 4-component vector of float)
|
|
0:14 Constant:
|
|
0:14 1 (const int)
|
|
0:14 true case
|
|
0:14 vector-scale (temp 4-component vector of float)
|
|
0:14 Convert int to float (temp float)
|
|
0:14 'c' (temp int)
|
|
0:14 'input' (in 4-component vector of float)
|
|
0:14 false case
|
|
0:14 vector-scale (temp 4-component vector of float)
|
|
0:14 Convert int to float (temp float)
|
|
0:14 'd' (temp int)
|
|
0:14 'input' (in 4-component vector of float)
|
|
0:15 Branch: Return with expression
|
|
0:15 add (temp 4-component vector of float)
|
|
0:15 vector-scale (temp 4-component vector of float)
|
|
0:15 Convert int to float (temp float)
|
|
0:15 'e' (temp int)
|
|
0:15 'ret' (temp 4-component vector of float)
|
|
0:15 'f' (temp 4-component vector of float)
|
|
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: 450
|
|
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 Sequence
|
|
0:3 move second child to first child (temp int)
|
|
0:3 'a' (temp int)
|
|
0:3 Constant:
|
|
0:3 5 (const int)
|
|
0:4 Sequence
|
|
0:4 move second child to first child (temp int)
|
|
0:4 'b' (temp int)
|
|
0:4 Constant:
|
|
0:4 6 (const int)
|
|
0:5 Sequence
|
|
0:5 move second child to first child (temp int)
|
|
0:5 'c' (temp int)
|
|
0:5 Constant:
|
|
0:5 7 (const int)
|
|
0:6 Sequence
|
|
0:6 move second child to first child (temp int)
|
|
0:6 'd' (temp int)
|
|
0:6 Constant:
|
|
0:6 7 (const int)
|
|
0:7 Sequence
|
|
0:7 move second child to first child (temp 4-component vector of float)
|
|
0:7 'ret' (temp 4-component vector of float)
|
|
0:9 add (temp 4-component vector of float)
|
|
0:8 add (temp 4-component vector of float)
|
|
0:7 add (temp 4-component vector of float)
|
|
0:7 vector-scale (temp 4-component vector of float)
|
|
0:7 Convert int to float (temp float)
|
|
0:7 'a' (temp int)
|
|
0:7 'input' (in 4-component vector of float)
|
|
0:8 vector-scale (temp 4-component vector of float)
|
|
0:8 Convert int to float (temp float)
|
|
0:8 'b' (temp int)
|
|
0:8 'input' (in 4-component vector of float)
|
|
0:9 vector-scale (temp 4-component vector of float)
|
|
0:9 Convert int to float (temp float)
|
|
0:9 'c' (temp int)
|
|
0:9 'input' (in 4-component vector of float)
|
|
0:10 vector-scale (temp 4-component vector of float)
|
|
0:10 Convert int to float (temp float)
|
|
0:10 'd' (temp int)
|
|
0:10 'input' (in 4-component vector of float)
|
|
0:12 Comma (temp int)
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'e' (temp int)
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'a' (temp int)
|
|
0:12 Test condition and select (temp int)
|
|
0:12 Condition
|
|
0:12 'b' (temp int)
|
|
0:12 true case
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'c' (temp int)
|
|
0:12 'd' (temp int)
|
|
0:12 false case
|
|
0:12 Constant:
|
|
0:12 10 (const int)
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'b' (temp int)
|
|
0:12 Test condition and select (temp int)
|
|
0:12 Condition
|
|
0:12 'a' (temp int)
|
|
0:12 true case
|
|
0:12 move second child to first child (temp int)
|
|
0:12 'd' (temp int)
|
|
0:12 'c' (temp int)
|
|
0:12 false case
|
|
0:12 Constant:
|
|
0:12 11 (const int)
|
|
0:14 move second child to first child (temp 4-component vector of float)
|
|
0:14 'f' (temp 4-component vector of float)
|
|
0:14 Test condition and select (temp 4-component vector of float)
|
|
0:14 Condition
|
|
0:14 Compare Less Than (temp bool)
|
|
0:14 direct index (temp float)
|
|
0:14 'ret' (temp 4-component vector of float)
|
|
0:14 Constant:
|
|
0:14 0 (const int)
|
|
0:14 direct index (temp float)
|
|
0:14 'input' (in 4-component vector of float)
|
|
0:14 Constant:
|
|
0:14 1 (const int)
|
|
0:14 true case
|
|
0:14 vector-scale (temp 4-component vector of float)
|
|
0:14 Convert int to float (temp float)
|
|
0:14 'c' (temp int)
|
|
0:14 'input' (in 4-component vector of float)
|
|
0:14 false case
|
|
0:14 vector-scale (temp 4-component vector of float)
|
|
0:14 Convert int to float (temp float)
|
|
0:14 'd' (temp int)
|
|
0:14 'input' (in 4-component vector of float)
|
|
0:15 Branch: Return with expression
|
|
0:15 add (temp 4-component vector of float)
|
|
0:15 vector-scale (temp 4-component vector of float)
|
|
0:15 Convert int to float (temp float)
|
|
0:15 'e' (temp int)
|
|
0:15 'ret' (temp 4-component vector of float)
|
|
0:15 'f' (temp 4-component vector of float)
|
|
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): 80001
|
|
// Id's are bound by 100
|
|
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "PixelShaderFunction" 93 96
|
|
ExecutionMode 4 OriginUpperLeft
|
|
Name 4 "PixelShaderFunction"
|
|
Name 11 "@PixelShaderFunction(vf4;"
|
|
Name 10 "input"
|
|
Name 15 "a"
|
|
Name 17 "b"
|
|
Name 19 "c"
|
|
Name 21 "d"
|
|
Name 22 "ret"
|
|
Name 42 "e"
|
|
Name 59 "f"
|
|
Name 91 "input"
|
|
Name 93 "input"
|
|
Name 96 "@entryPointOutput"
|
|
Name 97 "param"
|
|
Decorate 93(input) Location 0
|
|
Decorate 96(@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)
|
|
13: TypeInt 32 1
|
|
14: TypePointer Function 13(int)
|
|
16: 13(int) Constant 5
|
|
18: 13(int) Constant 6
|
|
20: 13(int) Constant 7
|
|
49: 13(int) Constant 10
|
|
57: 13(int) Constant 11
|
|
61: TypeInt 32 0
|
|
62: 61(int) Constant 0
|
|
63: TypePointer Function 6(float)
|
|
66: 61(int) Constant 1
|
|
69: TypeBool
|
|
92: TypePointer Input 7(fvec4)
|
|
93(input): 92(ptr) Variable Input
|
|
95: TypePointer Output 7(fvec4)
|
|
96(@entryPointOutput): 95(ptr) Variable Output
|
|
4(PixelShaderFunction): 2 Function None 3
|
|
5: Label
|
|
91(input): 8(ptr) Variable Function
|
|
97(param): 8(ptr) Variable Function
|
|
94: 7(fvec4) Load 93(input)
|
|
Store 91(input) 94
|
|
98: 7(fvec4) Load 91(input)
|
|
Store 97(param) 98
|
|
99: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 97(param)
|
|
Store 96(@entryPointOutput) 99
|
|
Return
|
|
FunctionEnd
|
|
11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
|
|
10(input): 8(ptr) FunctionParameter
|
|
12: Label
|
|
15(a): 14(ptr) Variable Function
|
|
17(b): 14(ptr) Variable Function
|
|
19(c): 14(ptr) Variable Function
|
|
21(d): 14(ptr) Variable Function
|
|
22(ret): 8(ptr) Variable Function
|
|
42(e): 14(ptr) Variable Function
|
|
43: 14(ptr) Variable Function
|
|
51: 14(ptr) Variable Function
|
|
59(f): 8(ptr) Variable Function
|
|
60: 8(ptr) Variable Function
|
|
Store 15(a) 16
|
|
Store 17(b) 18
|
|
Store 19(c) 20
|
|
Store 21(d) 20
|
|
23: 13(int) Load 15(a)
|
|
24: 6(float) ConvertSToF 23
|
|
25: 7(fvec4) Load 10(input)
|
|
26: 7(fvec4) VectorTimesScalar 25 24
|
|
27: 13(int) Load 17(b)
|
|
28: 6(float) ConvertSToF 27
|
|
29: 7(fvec4) Load 10(input)
|
|
30: 7(fvec4) VectorTimesScalar 29 28
|
|
31: 7(fvec4) FAdd 26 30
|
|
32: 13(int) Load 19(c)
|
|
33: 6(float) ConvertSToF 32
|
|
34: 7(fvec4) Load 10(input)
|
|
35: 7(fvec4) VectorTimesScalar 34 33
|
|
36: 7(fvec4) FAdd 31 35
|
|
37: 13(int) Load 21(d)
|
|
38: 6(float) ConvertSToF 37
|
|
39: 7(fvec4) Load 10(input)
|
|
40: 7(fvec4) VectorTimesScalar 39 38
|
|
41: 7(fvec4) FAdd 36 40
|
|
Store 22(ret) 41
|
|
44: 13(int) Load 17(b)
|
|
SelectionMerge 46 None
|
|
BranchConditional 44 45 48
|
|
45: Label
|
|
47: 13(int) Load 21(d)
|
|
Store 19(c) 47
|
|
Store 43 47
|
|
Branch 46
|
|
48: Label
|
|
Store 43 49
|
|
Branch 46
|
|
46: Label
|
|
50: 13(int) Load 43
|
|
Store 15(a) 50
|
|
Store 42(e) 50
|
|
52: 13(int) Load 15(a)
|
|
SelectionMerge 54 None
|
|
BranchConditional 52 53 56
|
|
53: Label
|
|
55: 13(int) Load 19(c)
|
|
Store 21(d) 55
|
|
Store 51 55
|
|
Branch 54
|
|
56: Label
|
|
Store 51 57
|
|
Branch 54
|
|
54: Label
|
|
58: 13(int) Load 51
|
|
Store 17(b) 58
|
|
64: 63(ptr) AccessChain 22(ret) 62
|
|
65: 6(float) Load 64
|
|
67: 63(ptr) AccessChain 10(input) 66
|
|
68: 6(float) Load 67
|
|
70: 69(bool) FOrdLessThan 65 68
|
|
SelectionMerge 72 None
|
|
BranchConditional 70 71 77
|
|
71: Label
|
|
73: 13(int) Load 19(c)
|
|
74: 6(float) ConvertSToF 73
|
|
75: 7(fvec4) Load 10(input)
|
|
76: 7(fvec4) VectorTimesScalar 75 74
|
|
Store 60 76
|
|
Branch 72
|
|
77: Label
|
|
78: 13(int) Load 21(d)
|
|
79: 6(float) ConvertSToF 78
|
|
80: 7(fvec4) Load 10(input)
|
|
81: 7(fvec4) VectorTimesScalar 80 79
|
|
Store 60 81
|
|
Branch 72
|
|
72: Label
|
|
82: 7(fvec4) Load 60
|
|
Store 59(f) 82
|
|
83: 13(int) Load 42(e)
|
|
84: 6(float) ConvertSToF 83
|
|
85: 7(fvec4) Load 22(ret)
|
|
86: 7(fvec4) VectorTimesScalar 85 84
|
|
87: 7(fvec4) Load 59(f)
|
|
88: 7(fvec4) FAdd 86 87
|
|
ReturnValue 88
|
|
FunctionEnd
|