HLSL: Stop flattening non-IO structs containing opaques.

This makes struct returns from functions work, but breaks
structs containing arrays, due to limitations in subsequent
transforms in spirv-opt. This is expected to be fixed soon.
This commit is contained in:
John Kessenich 2017-11-16 16:03:18 -07:00
parent 471bfed062
commit dc005fb083
18 changed files with 1610 additions and 1419 deletions

View file

@ -1,54 +1,71 @@
hlsl.flattenOpaque.frag
WARNING: AST will form illegal SPIR-V; need to transform to legalize
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:15 Function Definition: osCall1(struct-os-p11; ( temp 4-component vector of float)
0:15 Function Parameters:
0:? 's.s2D' ( in sampler)
0:15 's' ( in structure{ temp sampler s2D})
0:? Sequence
0:16 Branch: Return with expression
0:16 texture ( temp 4-component vector of float)
0:16 Construct combined texture-sampler ( temp sampler2D)
0:16 'tex' ( uniform texture2D)
0:? 's.s2D' ( in sampler)
0:16 s2D: direct index for structure ( temp sampler)
0:16 's' ( in structure{ temp sampler s2D})
0:16 Constant:
0:16 0 (const int)
0:? Constant:
0:? 0.200000
0:? 0.300000
0:20 Function Definition: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
0:20 Function Parameters:
0:? 's.s2D' ( in sampler)
0:20 's' ( in structure{ temp sampler s2D})
0:20 'f2' ( in 2-component vector of float)
0:? Sequence
0:21 Branch: Return with expression
0:21 texture ( temp 4-component vector of float)
0:21 Construct combined texture-sampler ( temp sampler2D)
0:21 'tex' ( uniform texture2D)
0:? 's.s2D' ( in sampler)
0:21 s2D: direct index for structure ( temp sampler)
0:21 's' ( in structure{ temp sampler s2D})
0:21 Constant:
0:21 0 (const int)
0:21 'f2' ( in 2-component vector of float)
0:25 Function Definition: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
0:25 Function Parameters:
0:? 's.s2D' ( in sampler)
0:? 's.tex' ( in texture2D)
0:25 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:? Sequence
0:26 Branch: Return with expression
0:26 texture ( temp 4-component vector of float)
0:26 Construct combined texture-sampler ( temp sampler2D)
0:? 's.tex' ( in texture2D)
0:? 's.s2D' ( in sampler)
0:26 tex: direct index for structure ( temp texture2D)
0:26 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:26 Constant:
0:26 1 (const int)
0:26 s2D: direct index for structure ( temp sampler)
0:26 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:26 Constant:
0:26 0 (const int)
0:? Constant:
0:? 0.200000
0:? 0.300000
0:30 Function Definition: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
0:30 Function Parameters:
0:? 's.s2D' ( in sampler)
0:? 's.tex' ( in texture2D)
0:30 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:30 'f2' ( in 2-component vector of float)
0:? Sequence
0:31 Branch: Return with expression
0:31 texture ( temp 4-component vector of float)
0:31 Construct combined texture-sampler ( temp sampler2D)
0:? 's.tex' ( in texture2D)
0:? 's.s2D' ( in sampler)
0:31 tex: direct index for structure ( temp texture2D)
0:31 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:31 Constant:
0:31 1 (const int)
0:31 s2D: direct index for structure ( temp sampler)
0:31 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:31 Constant:
0:31 0 (const int)
0:31 'f2' ( in 2-component vector of float)
0:35 Function Definition: @main( ( temp 4-component vector of float)
0:35 Function Parameters:
@ -58,18 +75,60 @@ gl_FragCoord origin is upper left
0:37 add ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 Function Call: osCall1(struct-os-p11; ( temp 4-component vector of float)
0:? 's.s2D' ( uniform sampler)
0:36 Comma ( temp structure{ temp sampler s2D})
0:36 Sequence
0:36 move second child to first child ( temp sampler)
0:36 s2D: direct index for structure ( temp sampler)
0:36 'aggShadow' ( temp structure{ temp sampler s2D})
0:36 Constant:
0:36 0 (const int)
0:? 's.s2D' ( uniform sampler)
0:36 'aggShadow' ( temp structure{ temp sampler s2D})
0:37 Function Call: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
0:? 's.s2D' ( uniform sampler)
0:37 Comma ( temp structure{ temp sampler s2D})
0:37 Sequence
0:37 move second child to first child ( temp sampler)
0:37 s2D: direct index for structure ( temp sampler)
0:37 'aggShadow' ( temp structure{ temp sampler s2D})
0:37 Constant:
0:37 0 (const int)
0:? 's.s2D' ( uniform sampler)
0:37 'aggShadow' ( temp structure{ temp sampler s2D})
0:? Constant:
0:? 0.200000
0:? 0.300000
0:38 Function Call: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
0:? 's2.s2D' ( uniform sampler)
0:? 's2.tex' ( uniform texture2D)
0:38 Comma ( temp structure{ temp sampler s2D, temp texture2D tex})
0:38 Sequence
0:38 move second child to first child ( temp sampler)
0:38 s2D: direct index for structure ( temp sampler)
0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:38 Constant:
0:38 0 (const int)
0:? 's2.s2D' ( uniform sampler)
0:38 move second child to first child ( temp texture2D)
0:38 tex: direct index for structure ( temp texture2D)
0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:38 Constant:
0:38 1 (const int)
0:? 's2.tex' ( uniform texture2D)
0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:39 Function Call: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
0:? 's2.s2D' ( uniform sampler)
0:? 's2.tex' ( uniform texture2D)
0:39 Comma ( temp structure{ temp sampler s2D, temp texture2D tex})
0:39 Sequence
0:39 move second child to first child ( temp sampler)
0:39 s2D: direct index for structure ( temp sampler)
0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:39 Constant:
0:39 0 (const int)
0:? 's2.s2D' ( uniform sampler)
0:39 move second child to first child ( temp texture2D)
0:39 tex: direct index for structure ( temp texture2D)
0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:39 Constant:
0:39 1 (const int)
0:? 's2.tex' ( uniform texture2D)
0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:? Constant:
0:? 0.200000
0:? 0.300000
@ -95,51 +154,67 @@ gl_FragCoord origin is upper left
0:? Sequence
0:15 Function Definition: osCall1(struct-os-p11; ( temp 4-component vector of float)
0:15 Function Parameters:
0:? 's.s2D' ( in sampler)
0:15 's' ( in structure{ temp sampler s2D})
0:? Sequence
0:16 Branch: Return with expression
0:16 texture ( temp 4-component vector of float)
0:16 Construct combined texture-sampler ( temp sampler2D)
0:16 'tex' ( uniform texture2D)
0:? 's.s2D' ( in sampler)
0:16 s2D: direct index for structure ( temp sampler)
0:16 's' ( in structure{ temp sampler s2D})
0:16 Constant:
0:16 0 (const int)
0:? Constant:
0:? 0.200000
0:? 0.300000
0:20 Function Definition: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
0:20 Function Parameters:
0:? 's.s2D' ( in sampler)
0:20 's' ( in structure{ temp sampler s2D})
0:20 'f2' ( in 2-component vector of float)
0:? Sequence
0:21 Branch: Return with expression
0:21 texture ( temp 4-component vector of float)
0:21 Construct combined texture-sampler ( temp sampler2D)
0:21 'tex' ( uniform texture2D)
0:? 's.s2D' ( in sampler)
0:21 s2D: direct index for structure ( temp sampler)
0:21 's' ( in structure{ temp sampler s2D})
0:21 Constant:
0:21 0 (const int)
0:21 'f2' ( in 2-component vector of float)
0:25 Function Definition: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
0:25 Function Parameters:
0:? 's.s2D' ( in sampler)
0:? 's.tex' ( in texture2D)
0:25 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:? Sequence
0:26 Branch: Return with expression
0:26 texture ( temp 4-component vector of float)
0:26 Construct combined texture-sampler ( temp sampler2D)
0:? 's.tex' ( in texture2D)
0:? 's.s2D' ( in sampler)
0:26 tex: direct index for structure ( temp texture2D)
0:26 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:26 Constant:
0:26 1 (const int)
0:26 s2D: direct index for structure ( temp sampler)
0:26 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:26 Constant:
0:26 0 (const int)
0:? Constant:
0:? 0.200000
0:? 0.300000
0:30 Function Definition: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
0:30 Function Parameters:
0:? 's.s2D' ( in sampler)
0:? 's.tex' ( in texture2D)
0:30 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:30 'f2' ( in 2-component vector of float)
0:? Sequence
0:31 Branch: Return with expression
0:31 texture ( temp 4-component vector of float)
0:31 Construct combined texture-sampler ( temp sampler2D)
0:? 's.tex' ( in texture2D)
0:? 's.s2D' ( in sampler)
0:31 tex: direct index for structure ( temp texture2D)
0:31 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:31 Constant:
0:31 1 (const int)
0:31 s2D: direct index for structure ( temp sampler)
0:31 's' ( in structure{ temp sampler s2D, temp texture2D tex})
0:31 Constant:
0:31 0 (const int)
0:31 'f2' ( in 2-component vector of float)
0:35 Function Definition: @main( ( temp 4-component vector of float)
0:35 Function Parameters:
@ -149,18 +224,60 @@ gl_FragCoord origin is upper left
0:37 add ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 Function Call: osCall1(struct-os-p11; ( temp 4-component vector of float)
0:? 's.s2D' ( uniform sampler)
0:36 Comma ( temp structure{ temp sampler s2D})
0:36 Sequence
0:36 move second child to first child ( temp sampler)
0:36 s2D: direct index for structure ( temp sampler)
0:36 'aggShadow' ( temp structure{ temp sampler s2D})
0:36 Constant:
0:36 0 (const int)
0:? 's.s2D' ( uniform sampler)
0:36 'aggShadow' ( temp structure{ temp sampler s2D})
0:37 Function Call: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
0:? 's.s2D' ( uniform sampler)
0:37 Comma ( temp structure{ temp sampler s2D})
0:37 Sequence
0:37 move second child to first child ( temp sampler)
0:37 s2D: direct index for structure ( temp sampler)
0:37 'aggShadow' ( temp structure{ temp sampler s2D})
0:37 Constant:
0:37 0 (const int)
0:? 's.s2D' ( uniform sampler)
0:37 'aggShadow' ( temp structure{ temp sampler s2D})
0:? Constant:
0:? 0.200000
0:? 0.300000
0:38 Function Call: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
0:? 's2.s2D' ( uniform sampler)
0:? 's2.tex' ( uniform texture2D)
0:38 Comma ( temp structure{ temp sampler s2D, temp texture2D tex})
0:38 Sequence
0:38 move second child to first child ( temp sampler)
0:38 s2D: direct index for structure ( temp sampler)
0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:38 Constant:
0:38 0 (const int)
0:? 's2.s2D' ( uniform sampler)
0:38 move second child to first child ( temp texture2D)
0:38 tex: direct index for structure ( temp texture2D)
0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:38 Constant:
0:38 1 (const int)
0:? 's2.tex' ( uniform texture2D)
0:38 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:39 Function Call: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
0:? 's2.s2D' ( uniform sampler)
0:? 's2.tex' ( uniform texture2D)
0:39 Comma ( temp structure{ temp sampler s2D, temp texture2D tex})
0:39 Sequence
0:39 move second child to first child ( temp sampler)
0:39 s2D: direct index for structure ( temp sampler)
0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:39 Constant:
0:39 0 (const int)
0:? 's2.s2D' ( uniform sampler)
0:39 move second child to first child ( temp texture2D)
0:39 tex: direct index for structure ( temp texture2D)
0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:39 Constant:
0:39 1 (const int)
0:? 's2.tex' ( uniform texture2D)
0:39 'aggShadow' ( temp structure{ temp sampler s2D, temp texture2D tex})
0:? Constant:
0:? 0.200000
0:? 0.300000
@ -179,151 +296,183 @@ gl_FragCoord origin is upper left
// Module Version 10000
// Generated by (magic number): 80002
// Id's are bound by 99
// Id's are bound by 122
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 97
EntryPoint Fragment 4 "main" 120
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 12 "osCall1(struct-os-p11;"
Name 11 "s.s2D"
Name 19 "osCall2(struct-os-p11;vf2;"
Name 17 "s.s2D"
Name 18 "f2"
Name 26 "os2Call1(struct-os2-p1-t211;"
Name 24 "s.s2D"
Name 25 "s.tex"
Name 7 "os"
MemberName 7(os) 0 "s2D"
Name 13 "osCall1(struct-os-p11;"
Name 12 "s"
Name 20 "osCall2(struct-os-p11;vf2;"
Name 18 "s"
Name 19 "f2"
Name 23 "os2"
MemberName 23(os2) 0 "s2D"
MemberName 23(os2) 1 "tex"
Name 27 "os2Call1(struct-os2-p1-t211;"
Name 26 "s"
Name 32 "os2Call2(struct-os2-p1-t211;vf2;"
Name 29 "s.s2D"
Name 30 "s.tex"
Name 30 "s"
Name 31 "f2"
Name 35 "@main("
Name 38 "tex"
Name 70 "s.s2D"
Name 71 "param"
Name 74 "param"
Name 76 "param"
Name 79 "s2.s2D"
Name 80 "s2.tex"
Name 81 "param"
Name 83 "param"
Name 87 "param"
Name 89 "param"
Name 80 "aggShadow"
Name 82 "s.s2D"
Name 85 "param"
Name 88 "aggShadow"
Name 91 "param"
Name 97 "@entryPointOutput"
Name 93 "param"
Name 96 "aggShadow"
Name 97 "s2.s2D"
Name 100 "s2.tex"
Name 103 "param"
Name 107 "aggShadow"
Name 112 "param"
Name 114 "param"
Name 120 "@entryPointOutput"
Decorate 38(tex) DescriptorSet 0
Decorate 70(s.s2D) DescriptorSet 0
Decorate 79(s2.s2D) DescriptorSet 0
Decorate 80(s2.tex) DescriptorSet 0
Decorate 97(@entryPointOutput) Location 0
Decorate 82(s.s2D) DescriptorSet 0
Decorate 97(s2.s2D) DescriptorSet 0
Decorate 100(s2.tex) DescriptorSet 0
Decorate 120(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeSampler
7: TypePointer Function 6
8: TypeFloat 32
9: TypeVector 8(float) 4
10: TypeFunction 9(fvec4) 7(ptr)
14: TypeVector 8(float) 2
15: TypePointer Function 14(fvec2)
16: TypeFunction 9(fvec4) 7(ptr) 15(ptr)
21: TypeImage 8(float) 2D sampled format:Unknown
22: TypePointer Function 21
23: TypeFunction 9(fvec4) 7(ptr) 22(ptr)
28: TypeFunction 9(fvec4) 7(ptr) 22(ptr) 15(ptr)
34: TypeFunction 9(fvec4)
37: TypePointer UniformConstant 21
7(os): TypeStruct 6
8: TypePointer Function 7(os)
9: TypeFloat 32
10: TypeVector 9(float) 4
11: TypeFunction 10(fvec4) 8(ptr)
15: TypeVector 9(float) 2
16: TypePointer Function 15(fvec2)
17: TypeFunction 10(fvec4) 8(ptr) 16(ptr)
22: TypeImage 9(float) 2D sampled format:Unknown
23(os2): TypeStruct 6 22
24: TypePointer Function 23(os2)
25: TypeFunction 10(fvec4) 24(ptr)
29: TypeFunction 10(fvec4) 24(ptr) 16(ptr)
34: TypeFunction 10(fvec4)
37: TypePointer UniformConstant 22
38(tex): 37(ptr) Variable UniformConstant
41: TypeSampledImage 21
43: 8(float) Constant 1045220557
44: 8(float) Constant 1050253722
45: 14(fvec2) ConstantComposite 43 44
69: TypePointer UniformConstant 6
70(s.s2D): 69(ptr) Variable UniformConstant
79(s2.s2D): 69(ptr) Variable UniformConstant
80(s2.tex): 37(ptr) Variable UniformConstant
96: TypePointer Output 9(fvec4)
97(@entryPointOutput): 96(ptr) Variable Output
40: TypeInt 32 1
41: 40(int) Constant 0
42: TypePointer Function 6
45: TypeSampledImage 22
47: 9(float) Constant 1045220557
48: 9(float) Constant 1050253722
49: 15(fvec2) ConstantComposite 47 48
61: 40(int) Constant 1
62: TypePointer Function 22
81: TypePointer UniformConstant 6
82(s.s2D): 81(ptr) Variable UniformConstant
97(s2.s2D): 81(ptr) Variable UniformConstant
100(s2.tex): 37(ptr) Variable UniformConstant
119: TypePointer Output 10(fvec4)
120(@entryPointOutput): 119(ptr) Variable Output
4(main): 2 Function None 3
5: Label
98: 9(fvec4) FunctionCall 35(@main()
Store 97(@entryPointOutput) 98
121: 10(fvec4) FunctionCall 35(@main()
Store 120(@entryPointOutput) 121
Return
FunctionEnd
12(osCall1(struct-os-p11;): 9(fvec4) Function None 10
11(s.s2D): 7(ptr) FunctionParameter
13: Label
39: 21 Load 38(tex)
40: 6 Load 11(s.s2D)
42: 41 SampledImage 39 40
46: 9(fvec4) ImageSampleImplicitLod 42 45
ReturnValue 46
13(osCall1(struct-os-p11;): 10(fvec4) Function None 11
12(s): 8(ptr) FunctionParameter
14: Label
39: 22 Load 38(tex)
43: 42(ptr) AccessChain 12(s) 41
44: 6 Load 43
46: 45 SampledImage 39 44
50: 10(fvec4) ImageSampleImplicitLod 46 49
ReturnValue 50
FunctionEnd
19(osCall2(struct-os-p11;vf2;): 9(fvec4) Function None 16
17(s.s2D): 7(ptr) FunctionParameter
18(f2): 15(ptr) FunctionParameter
20: Label
49: 21 Load 38(tex)
50: 6 Load 17(s.s2D)
51: 41 SampledImage 49 50
52: 14(fvec2) Load 18(f2)
53: 9(fvec4) ImageSampleImplicitLod 51 52
ReturnValue 53
20(osCall2(struct-os-p11;vf2;): 10(fvec4) Function None 17
18(s): 8(ptr) FunctionParameter
19(f2): 16(ptr) FunctionParameter
21: Label
53: 22 Load 38(tex)
54: 42(ptr) AccessChain 18(s) 41
55: 6 Load 54
56: 45 SampledImage 53 55
57: 15(fvec2) Load 19(f2)
58: 10(fvec4) ImageSampleImplicitLod 56 57
ReturnValue 58
FunctionEnd
26(os2Call1(struct-os2-p1-t211;): 9(fvec4) Function None 23
24(s.s2D): 7(ptr) FunctionParameter
25(s.tex): 22(ptr) FunctionParameter
27: Label
56: 21 Load 25(s.tex)
57: 6 Load 24(s.s2D)
58: 41 SampledImage 56 57
59: 9(fvec4) ImageSampleImplicitLod 58 45
ReturnValue 59
27(os2Call1(struct-os2-p1-t211;): 10(fvec4) Function None 25
26(s): 24(ptr) FunctionParameter
28: Label
63: 62(ptr) AccessChain 26(s) 61
64: 22 Load 63
65: 42(ptr) AccessChain 26(s) 41
66: 6 Load 65
67: 45 SampledImage 64 66
68: 10(fvec4) ImageSampleImplicitLod 67 49
ReturnValue 68
FunctionEnd
32(os2Call2(struct-os2-p1-t211;vf2;): 9(fvec4) Function None 28
29(s.s2D): 7(ptr) FunctionParameter
30(s.tex): 22(ptr) FunctionParameter
31(f2): 15(ptr) FunctionParameter
32(os2Call2(struct-os2-p1-t211;vf2;): 10(fvec4) Function None 29
30(s): 24(ptr) FunctionParameter
31(f2): 16(ptr) FunctionParameter
33: Label
62: 21 Load 30(s.tex)
63: 6 Load 29(s.s2D)
64: 41 SampledImage 62 63
65: 14(fvec2) Load 31(f2)
66: 9(fvec4) ImageSampleImplicitLod 64 65
ReturnValue 66
71: 62(ptr) AccessChain 30(s) 61
72: 22 Load 71
73: 42(ptr) AccessChain 30(s) 41
74: 6 Load 73
75: 45 SampledImage 72 74
76: 15(fvec2) Load 31(f2)
77: 10(fvec4) ImageSampleImplicitLod 75 76
ReturnValue 77
FunctionEnd
35(@main(): 9(fvec4) Function None 34
35(@main(): 10(fvec4) Function None 34
36: Label
71(param): 7(ptr) Variable Function
74(param): 7(ptr) Variable Function
76(param): 15(ptr) Variable Function
81(param): 7(ptr) Variable Function
83(param): 22(ptr) Variable Function
87(param): 7(ptr) Variable Function
89(param): 22(ptr) Variable Function
91(param): 15(ptr) Variable Function
72: 6 Load 70(s.s2D)
Store 71(param) 72
73: 9(fvec4) FunctionCall 12(osCall1(struct-os-p11;) 71(param)
75: 6 Load 70(s.s2D)
Store 74(param) 75
Store 76(param) 45
77: 9(fvec4) FunctionCall 19(osCall2(struct-os-p11;vf2;) 74(param) 76(param)
78: 9(fvec4) FAdd 73 77
82: 6 Load 79(s2.s2D)
Store 81(param) 82
84: 21 Load 80(s2.tex)
Store 83(param) 84
85: 9(fvec4) FunctionCall 26(os2Call1(struct-os2-p1-t211;) 81(param) 83(param)
86: 9(fvec4) FAdd 78 85
88: 6 Load 79(s2.s2D)
Store 87(param) 88
90: 21 Load 80(s2.tex)
Store 89(param) 90
Store 91(param) 45
92: 9(fvec4) FunctionCall 32(os2Call2(struct-os2-p1-t211;vf2;) 87(param) 89(param) 91(param)
93: 9(fvec4) FAdd 86 92
ReturnValue 93
80(aggShadow): 8(ptr) Variable Function
85(param): 8(ptr) Variable Function
88(aggShadow): 8(ptr) Variable Function
91(param): 8(ptr) Variable Function
93(param): 16(ptr) Variable Function
96(aggShadow): 24(ptr) Variable Function
103(param): 24(ptr) Variable Function
107(aggShadow): 24(ptr) Variable Function
112(param): 24(ptr) Variable Function
114(param): 16(ptr) Variable Function
83: 6 Load 82(s.s2D)
84: 42(ptr) AccessChain 80(aggShadow) 41
Store 84 83
86: 7(os) Load 80(aggShadow)
Store 85(param) 86
87: 10(fvec4) FunctionCall 13(osCall1(struct-os-p11;) 85(param)
89: 6 Load 82(s.s2D)
90: 42(ptr) AccessChain 88(aggShadow) 41
Store 90 89
92: 7(os) Load 88(aggShadow)
Store 91(param) 92
Store 93(param) 49
94: 10(fvec4) FunctionCall 20(osCall2(struct-os-p11;vf2;) 91(param) 93(param)
95: 10(fvec4) FAdd 87 94
98: 6 Load 97(s2.s2D)
99: 42(ptr) AccessChain 96(aggShadow) 41
Store 99 98
101: 22 Load 100(s2.tex)
102: 62(ptr) AccessChain 96(aggShadow) 61
Store 102 101
104: 23(os2) Load 96(aggShadow)
Store 103(param) 104
105: 10(fvec4) FunctionCall 27(os2Call1(struct-os2-p1-t211;) 103(param)
106: 10(fvec4) FAdd 95 105
108: 6 Load 97(s2.s2D)
109: 42(ptr) AccessChain 107(aggShadow) 41
Store 109 108
110: 22 Load 100(s2.tex)
111: 62(ptr) AccessChain 107(aggShadow) 61
Store 111 110
113: 23(os2) Load 107(aggShadow)
Store 112(param) 113
Store 114(param) 49
115: 10(fvec4) FunctionCall 32(os2Call2(struct-os2-p1-t211;vf2;) 112(param) 114(param)
116: 10(fvec4) FAdd 106 115
ReturnValue 116
FunctionEnd