mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 19:40:06 +00:00
HLSL: Improve setting and testing of interpolation qualifiers.
Notably, use of 'linear' on a non-input could mark it as an input.
This commit is contained in:
parent
d21baed6bc
commit
34e7ee79bb
@ -6,9 +6,10 @@ WARNING: 0:30: 'register' : ignoring shader_profile
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:34 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
|
||||
0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float)
|
||||
0:34 Function Parameters:
|
||||
0:34 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:34 's' (in structure{smooth temp 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, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4})
|
||||
0:? Sequence
|
||||
0:39 Compare Equal (temp bool)
|
||||
0:39 's3' (temp structure{temp 3-component vector of bool b3})
|
||||
@ -18,10 +19,7 @@ gl_FragCoord origin is upper left
|
||||
0:40 's2' (global structure{temp 4-component vector of float i})
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:40 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float)
|
||||
0:40 '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, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4})
|
||||
0:40 Constant:
|
||||
0:40 7 (const int)
|
||||
0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
@ -30,11 +28,18 @@ gl_FragCoord origin is upper left
|
||||
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, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4})
|
||||
0:? 'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float)
|
||||
0:? 'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
0:? 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:? 'a' (layout(location=1 ) smooth in 4-component vector of float)
|
||||
0:? 'b' (layout(location=2 ) flat in bool)
|
||||
0:? 'c' (layout(location=3 ) centroid noperspective in 1-component vector of float)
|
||||
0:? 'd' (layout(location=4 ) centroid sample in 2-component vector of float)
|
||||
0:? 'ff1' (in bool Face)
|
||||
0:? 'ff2' (layout(location=5 offset=4 ) in bool)
|
||||
0:? 'ff3' (layout(location=6 binding=0 offset=4 ) in bool)
|
||||
0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
@ -43,9 +48,10 @@ Linked fragment stage:
|
||||
Shader version: 450
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:34 Function Definition: PixelShaderFunction(vf4; (global 4-component vector of float)
|
||||
0:34 Function Definition: PixelShaderFunction(vf4;struct-IN_S-vf4-b1-vf1-vf2-b1-b1-b1-vf41; (global 4-component vector of float)
|
||||
0:34 Function Parameters:
|
||||
0:34 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:34 's' (in structure{smooth temp 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, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4})
|
||||
0:? Sequence
|
||||
0:39 Compare Equal (temp bool)
|
||||
0:39 's3' (temp structure{temp 3-component vector of bool b3})
|
||||
@ -55,10 +61,7 @@ gl_FragCoord origin is upper left
|
||||
0:40 's2' (global structure{temp 4-component vector of float i})
|
||||
0:40 Constant:
|
||||
0:40 0 (const int)
|
||||
0:40 ff4: direct index for structure (layout(binding=0 offset=4 ) temp 4-component vector of float)
|
||||
0:40 '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, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4})
|
||||
0:40 Constant:
|
||||
0:40 7 (const int)
|
||||
0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
|
||||
0:42 Sequence
|
||||
0:42 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
@ -67,20 +70,27 @@ gl_FragCoord origin is upper left
|
||||
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, layout(offset=4 ) temp bool ff2, layout(binding=0 offset=4 ) temp bool ff3, layout(binding=0 offset=4 ) temp 4-component vector of float ff4})
|
||||
0:? 'ff5' (layout(binding=5 offset=20 ) global 3-component vector of float)
|
||||
0:? 'ff6' (layout(binding=8 offset=36 ) global 3-component vector of float)
|
||||
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
||||
0:? 'input' (layout(location=0 ) in 4-component vector of float)
|
||||
0:? 'a' (layout(location=1 ) smooth in 4-component vector of float)
|
||||
0:? 'b' (layout(location=2 ) flat in bool)
|
||||
0:? 'c' (layout(location=3 ) centroid noperspective in 1-component vector of float)
|
||||
0:? 'd' (layout(location=4 ) centroid sample in 2-component vector of float)
|
||||
0:? 'ff1' (in bool Face)
|
||||
0:? 'ff2' (layout(location=5 offset=4 ) in bool)
|
||||
0:? 'ff3' (layout(location=6 binding=0 offset=4 ) in bool)
|
||||
0:? 'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 46
|
||||
// Id's are bound by 52
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 34 36
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 25 30 31 41 43 45 48 49 50 51
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Name 4 "PixelShaderFunction"
|
||||
Name 8 "FS"
|
||||
@ -89,33 +99,47 @@ gl_FragCoord origin is upper left
|
||||
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 "@entryPointOutput"
|
||||
Name 36 "input"
|
||||
Name 39 "myS"
|
||||
MemberName 39(myS) 0 "b"
|
||||
MemberName 39(myS) 1 "c"
|
||||
MemberName 39(myS) 2 "a"
|
||||
MemberName 39(myS) 3 "d"
|
||||
Name 41 "s1"
|
||||
Name 44 "ff5"
|
||||
Name 45 "ff6"
|
||||
MemberDecorate 25 4 BuiltIn FrontFacing
|
||||
Decorate 34(@entryPointOutput) Location 0
|
||||
Decorate 36(input) Location 0
|
||||
Decorate 44(ff5) Offset 20
|
||||
Decorate 44(ff5) Binding 5
|
||||
Decorate 45(ff6) Offset 36
|
||||
Decorate 45(ff6) Binding 8
|
||||
Name 25 "ff4"
|
||||
Name 30 "@entryPointOutput"
|
||||
Name 31 "input"
|
||||
Name 34 "myS"
|
||||
MemberName 34(myS) 0 "b"
|
||||
MemberName 34(myS) 1 "c"
|
||||
MemberName 34(myS) 2 "a"
|
||||
MemberName 34(myS) 3 "d"
|
||||
Name 36 "s1"
|
||||
Name 39 "ff5"
|
||||
Name 40 "ff6"
|
||||
Name 41 "a"
|
||||
Name 43 "b"
|
||||
Name 45 "c"
|
||||
Name 48 "d"
|
||||
Name 49 "ff1"
|
||||
Name 50 "ff2"
|
||||
Name 51 "ff3"
|
||||
Decorate 25(ff4) Offset 4
|
||||
Decorate 25(ff4) Location 7
|
||||
Decorate 25(ff4) Binding 0
|
||||
Decorate 30(@entryPointOutput) Location 0
|
||||
Decorate 31(input) Location 0
|
||||
Decorate 39(ff5) Offset 20
|
||||
Decorate 39(ff5) Binding 5
|
||||
Decorate 40(ff6) Offset 36
|
||||
Decorate 40(ff6) Binding 8
|
||||
Decorate 41(a) Location 1
|
||||
Decorate 43(b) Flat
|
||||
Decorate 43(b) Location 2
|
||||
Decorate 45(c) NoPerspective
|
||||
Decorate 45(c) Centroid
|
||||
Decorate 45(c) Location 3
|
||||
Decorate 48(d) Centroid
|
||||
Decorate 48(d) Location 4
|
||||
Decorate 49(ff1) BuiltIn FrontFacing
|
||||
Decorate 50(ff2) Offset 4
|
||||
Decorate 50(ff2) Location 5
|
||||
Decorate 51(ff3) Offset 4
|
||||
Decorate 51(ff3) Location 6
|
||||
Decorate 51(ff3) Binding 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeBool
|
||||
@ -129,23 +153,30 @@ gl_FragCoord origin is upper left
|
||||
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 Output 18(fvec4)
|
||||
34(@entryPointOutput): 33(ptr) Variable Output
|
||||
35: TypePointer Input 18(fvec4)
|
||||
36(input): 35(ptr) Variable Input
|
||||
39(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
|
||||
40: TypePointer Private 39(myS)
|
||||
41(s1): 40(ptr) Variable Private
|
||||
42: TypeVector 17(float) 3
|
||||
43: TypePointer Private 42(fvec3)
|
||||
44(ff5): 43(ptr) Variable Private
|
||||
45(ff6): 43(ptr) Variable Private
|
||||
24: TypePointer Input 18(fvec4)
|
||||
25(ff4): 24(ptr) Variable Input
|
||||
27: TypePointer Private 18(fvec4)
|
||||
29: TypePointer Output 18(fvec4)
|
||||
30(@entryPointOutput): 29(ptr) Variable Output
|
||||
31(input): 24(ptr) Variable Input
|
||||
34(myS): TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
|
||||
35: TypePointer Private 34(myS)
|
||||
36(s1): 35(ptr) Variable Private
|
||||
37: TypeVector 17(float) 3
|
||||
38: TypePointer Private 37(fvec3)
|
||||
39(ff5): 38(ptr) Variable Private
|
||||
40(ff6): 38(ptr) Variable Private
|
||||
41(a): 24(ptr) Variable Input
|
||||
42: TypePointer Input 6(bool)
|
||||
43(b): 42(ptr) Variable Input
|
||||
44: TypePointer Input 17(float)
|
||||
45(c): 44(ptr) Variable Input
|
||||
46: TypeVector 17(float) 2
|
||||
47: TypePointer Input 46(fvec2)
|
||||
48(d): 47(ptr) Variable Input
|
||||
49(ff1): 42(ptr) Variable Input
|
||||
50(ff2): 42(ptr) Variable Input
|
||||
51(ff3): 42(ptr) Variable Input
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
10(s3): 9(ptr) Variable Function
|
||||
@ -155,11 +186,10 @@ gl_FragCoord origin is upper left
|
||||
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
|
||||
37: 18(fvec4) Load 36(input)
|
||||
Store 34(@entryPointOutput) 37
|
||||
26: 18(fvec4) Load 25(ff4)
|
||||
28: 27(ptr) AccessChain 21(s2) 23
|
||||
Store 28 26
|
||||
32: 18(fvec4) Load 31(input)
|
||||
Store 30(@entryPointOutput) 32
|
||||
Return
|
||||
FunctionEnd
|
||||
|
@ -1,42 +1,67 @@
|
||||
hlsl.structin.vert
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
0:7 Function Definition: main(vf4;struct-VI-vf4[2]-vu21;vf4; (global 4-component vector of float Position)
|
||||
0:7 Function Parameters:
|
||||
0:7 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:7 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord})
|
||||
0:7 'e' (layout(location=4 ) in 4-component vector of float)
|
||||
0:8 Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:8 Function Parameters:
|
||||
0:8 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:8 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:8 'e' (layout(location=5 ) in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (out 4-component vector of float Position)
|
||||
0:8 add (temp 4-component vector of float)
|
||||
0:8 add (temp 4-component vector of float)
|
||||
0:8 add (temp 4-component vector of float)
|
||||
0:8 add (temp 4-component vector of float)
|
||||
0:8 direct index (layout(location=1 ) temp 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:8 Constant:
|
||||
0:8 1 (const int)
|
||||
0:8 direct index (layout(location=1 ) temp 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:8 Construct vec4 (temp 4-component vector of float)
|
||||
0:8 Convert uint to float (temp float)
|
||||
0:8 direct index (temp uint)
|
||||
0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:8 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:8 'e' (layout(location=4 ) in 4-component vector of float)
|
||||
0:8 Branch: Return
|
||||
0:11 move second child to first child (temp 4-component vector of float)
|
||||
0:11 b: direct index for structure (smooth temp 4-component vector of float)
|
||||
0:11 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:11 Constant:
|
||||
0:11 2 (const int)
|
||||
0:11 add (temp 4-component vector of float)
|
||||
0:11 add (temp 4-component vector of float)
|
||||
0:11 add (temp 4-component vector of float)
|
||||
0:11 add (temp 4-component vector of float)
|
||||
0:11 direct index (layout(location=1 ) temp 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:11 Constant:
|
||||
0:11 1 (const int)
|
||||
0:11 direct index (layout(location=1 ) temp 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:11 Constant:
|
||||
0:11 0 (const int)
|
||||
0:11 Construct vec4 (temp 4-component vector of float)
|
||||
0:11 Convert uint to float (temp float)
|
||||
0:11 direct index (temp uint)
|
||||
0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const int)
|
||||
0:11 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:11 'e' (layout(location=5 ) in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:? Sequence
|
||||
0:13 move second child to first child (temp 2-element array of 4-component vector of float)
|
||||
0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float)
|
||||
0:13 m: direct index for structure (temp 2-element array of 4-component vector of float)
|
||||
0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:13 Constant:
|
||||
0:13 0 (const int)
|
||||
0:13 move second child to first child (temp 2-component vector of uint)
|
||||
0:? 'coord' (layout(location=2 ) out 2-component vector of uint)
|
||||
0:13 coord: direct index for structure (temp 2-component vector of uint)
|
||||
0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:13 Constant:
|
||||
0:13 1 (const int)
|
||||
0:13 move second child to first child (temp 4-component vector of float)
|
||||
0:? 'b' (layout(location=3 ) smooth out 4-component vector of float)
|
||||
0:13 b: direct index for structure (smooth temp 4-component vector of float)
|
||||
0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:13 Constant:
|
||||
0:13 2 (const int)
|
||||
0:13 Branch: Return
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (out 4-component vector of float Position)
|
||||
0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float)
|
||||
0:? 'coord' (layout(location=2 ) out 2-component vector of uint)
|
||||
0:? 'b' (layout(location=3 ) smooth out 4-component vector of float)
|
||||
0:? 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
|
||||
0:? 'e' (layout(location=4 ) in 4-component vector of float)
|
||||
0:? 'b' (layout(location=4 ) smooth in 4-component vector of float)
|
||||
0:? 'e' (layout(location=5 ) in 4-component vector of float)
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
@ -44,100 +69,158 @@ Linked vertex stage:
|
||||
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
0:7 Function Definition: main(vf4;struct-VI-vf4[2]-vu21;vf4; (global 4-component vector of float Position)
|
||||
0:7 Function Parameters:
|
||||
0:7 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:7 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord})
|
||||
0:7 'e' (layout(location=4 ) in 4-component vector of float)
|
||||
0:8 Function Definition: main(vf4;struct-VI-vf4[2]-vu2-vf41;vf4; (global structure Position{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:8 Function Parameters:
|
||||
0:8 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:8 'vi' (in structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:8 'e' (layout(location=5 ) in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child (temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (out 4-component vector of float Position)
|
||||
0:8 add (temp 4-component vector of float)
|
||||
0:8 add (temp 4-component vector of float)
|
||||
0:8 add (temp 4-component vector of float)
|
||||
0:8 add (temp 4-component vector of float)
|
||||
0:8 direct index (layout(location=1 ) temp 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:8 Constant:
|
||||
0:8 1 (const int)
|
||||
0:8 direct index (layout(location=1 ) temp 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:8 Construct vec4 (temp 4-component vector of float)
|
||||
0:8 Convert uint to float (temp float)
|
||||
0:8 direct index (temp uint)
|
||||
0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
|
||||
0:8 Constant:
|
||||
0:8 0 (const int)
|
||||
0:8 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:8 'e' (layout(location=4 ) in 4-component vector of float)
|
||||
0:8 Branch: Return
|
||||
0:11 move second child to first child (temp 4-component vector of float)
|
||||
0:11 b: direct index for structure (smooth temp 4-component vector of float)
|
||||
0:11 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:11 Constant:
|
||||
0:11 2 (const int)
|
||||
0:11 add (temp 4-component vector of float)
|
||||
0:11 add (temp 4-component vector of float)
|
||||
0:11 add (temp 4-component vector of float)
|
||||
0:11 add (temp 4-component vector of float)
|
||||
0:11 direct index (layout(location=1 ) temp 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:11 Constant:
|
||||
0:11 1 (const int)
|
||||
0:11 direct index (layout(location=1 ) temp 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:11 Constant:
|
||||
0:11 0 (const int)
|
||||
0:11 Construct vec4 (temp 4-component vector of float)
|
||||
0:11 Convert uint to float (temp float)
|
||||
0:11 direct index (temp uint)
|
||||
0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
|
||||
0:11 Constant:
|
||||
0:11 0 (const int)
|
||||
0:11 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:11 'e' (layout(location=5 ) in 4-component vector of float)
|
||||
0:? Sequence
|
||||
0:? Sequence
|
||||
0:13 move second child to first child (temp 2-element array of 4-component vector of float)
|
||||
0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float)
|
||||
0:13 m: direct index for structure (temp 2-element array of 4-component vector of float)
|
||||
0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:13 Constant:
|
||||
0:13 0 (const int)
|
||||
0:13 move second child to first child (temp 2-component vector of uint)
|
||||
0:? 'coord' (layout(location=2 ) out 2-component vector of uint)
|
||||
0:13 coord: direct index for structure (temp 2-component vector of uint)
|
||||
0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:13 Constant:
|
||||
0:13 1 (const int)
|
||||
0:13 move second child to first child (temp 4-component vector of float)
|
||||
0:? 'b' (layout(location=3 ) smooth out 4-component vector of float)
|
||||
0:13 b: direct index for structure (smooth temp 4-component vector of float)
|
||||
0:13 'local' (temp structure{temp 2-element array of 4-component vector of float m, temp 2-component vector of uint coord, smooth temp 4-component vector of float b})
|
||||
0:13 Constant:
|
||||
0:13 2 (const int)
|
||||
0:13 Branch: Return
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (out 4-component vector of float Position)
|
||||
0:? 'm' (layout(location=0 ) out 2-element array of 4-component vector of float)
|
||||
0:? 'coord' (layout(location=2 ) out 2-component vector of uint)
|
||||
0:? 'b' (layout(location=3 ) smooth out 4-component vector of float)
|
||||
0:? 'd' (layout(location=0 ) in 4-component vector of float)
|
||||
0:? 'm' (layout(location=1 ) in 2-element array of 4-component vector of float)
|
||||
0:? 'coord' (layout(location=3 ) in 2-component vector of uint)
|
||||
0:? 'e' (layout(location=4 ) in 4-component vector of float)
|
||||
0:? 'b' (layout(location=4 ) smooth in 4-component vector of float)
|
||||
0:? 'e' (layout(location=5 ) in 4-component vector of float)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 41
|
||||
// Id's are bound by 60
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "main" 9 14 26 34 37
|
||||
EntryPoint Vertex 4 "main" 18 28 36 39 45 50 55 59
|
||||
Name 4 "main"
|
||||
Name 9 "@entryPointOutput"
|
||||
Name 14 "m"
|
||||
Name 26 "coord"
|
||||
Name 34 "d"
|
||||
Name 37 "e"
|
||||
Decorate 9(@entryPointOutput) BuiltIn Position
|
||||
Decorate 14(m) Location 1
|
||||
Decorate 26(coord) Location 3
|
||||
Decorate 34(d) Location 0
|
||||
Decorate 37(e) Location 4
|
||||
Name 12 "VI"
|
||||
MemberName 12(VI) 0 "m"
|
||||
MemberName 12(VI) 1 "coord"
|
||||
MemberName 12(VI) 2 "b"
|
||||
Name 14 "local"
|
||||
Name 18 "m"
|
||||
Name 28 "coord"
|
||||
Name 36 "d"
|
||||
Name 39 "e"
|
||||
Name 45 "m"
|
||||
Name 50 "coord"
|
||||
Name 55 "b"
|
||||
Name 59 "b"
|
||||
Decorate 18(m) Location 1
|
||||
Decorate 28(coord) Location 3
|
||||
Decorate 36(d) Location 0
|
||||
Decorate 39(e) Location 5
|
||||
Decorate 45(m) Location 0
|
||||
Decorate 50(coord) Location 2
|
||||
Decorate 55(b) Location 3
|
||||
Decorate 59(b) Location 4
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypeVector 6(float) 4
|
||||
8: TypePointer Output 7(fvec4)
|
||||
9(@entryPointOutput): 8(ptr) Variable Output
|
||||
10: TypeInt 32 0
|
||||
11: 10(int) Constant 2
|
||||
12: TypeArray 7(fvec4) 11
|
||||
13: TypePointer Input 12
|
||||
14(m): 13(ptr) Variable Input
|
||||
8: TypeInt 32 0
|
||||
9: 8(int) Constant 2
|
||||
10: TypeArray 7(fvec4) 9
|
||||
11: TypeVector 8(int) 2
|
||||
12(VI): TypeStruct 10 11(ivec2) 7(fvec4)
|
||||
13: TypePointer Function 12(VI)
|
||||
15: TypeInt 32 1
|
||||
16: 15(int) Constant 1
|
||||
17: TypePointer Input 7(fvec4)
|
||||
20: 15(int) Constant 0
|
||||
24: TypeVector 10(int) 2
|
||||
25: TypePointer Input 24(ivec2)
|
||||
26(coord): 25(ptr) Variable Input
|
||||
27: 10(int) Constant 0
|
||||
28: TypePointer Input 10(int)
|
||||
34(d): 17(ptr) Variable Input
|
||||
37(e): 17(ptr) Variable Input
|
||||
16: 15(int) Constant 2
|
||||
17: TypePointer Input 10
|
||||
18(m): 17(ptr) Variable Input
|
||||
19: 15(int) Constant 1
|
||||
20: TypePointer Input 7(fvec4)
|
||||
23: 15(int) Constant 0
|
||||
27: TypePointer Input 11(ivec2)
|
||||
28(coord): 27(ptr) Variable Input
|
||||
29: 8(int) Constant 0
|
||||
30: TypePointer Input 8(int)
|
||||
36(d): 20(ptr) Variable Input
|
||||
39(e): 20(ptr) Variable Input
|
||||
42: TypePointer Function 7(fvec4)
|
||||
44: TypePointer Output 10
|
||||
45(m): 44(ptr) Variable Output
|
||||
46: TypePointer Function 10
|
||||
49: TypePointer Output 11(ivec2)
|
||||
50(coord): 49(ptr) Variable Output
|
||||
51: TypePointer Function 11(ivec2)
|
||||
54: TypePointer Output 7(fvec4)
|
||||
55(b): 54(ptr) Variable Output
|
||||
59(b): 20(ptr) Variable Input
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
18: 17(ptr) AccessChain 14(m) 16
|
||||
19: 7(fvec4) Load 18
|
||||
21: 17(ptr) AccessChain 14(m) 20
|
||||
14(local): 13(ptr) Variable Function
|
||||
21: 20(ptr) AccessChain 18(m) 19
|
||||
22: 7(fvec4) Load 21
|
||||
23: 7(fvec4) FAdd 19 22
|
||||
29: 28(ptr) AccessChain 26(coord) 27
|
||||
30: 10(int) Load 29
|
||||
31: 6(float) ConvertUToF 30
|
||||
32: 7(fvec4) CompositeConstruct 31 31 31 31
|
||||
33: 7(fvec4) FAdd 23 32
|
||||
35: 7(fvec4) Load 34(d)
|
||||
36: 7(fvec4) FAdd 33 35
|
||||
38: 7(fvec4) Load 37(e)
|
||||
39: 7(fvec4) FAdd 36 38
|
||||
Store 9(@entryPointOutput) 39
|
||||
24: 20(ptr) AccessChain 18(m) 23
|
||||
25: 7(fvec4) Load 24
|
||||
26: 7(fvec4) FAdd 22 25
|
||||
31: 30(ptr) AccessChain 28(coord) 29
|
||||
32: 8(int) Load 31
|
||||
33: 6(float) ConvertUToF 32
|
||||
34: 7(fvec4) CompositeConstruct 33 33 33 33
|
||||
35: 7(fvec4) FAdd 26 34
|
||||
37: 7(fvec4) Load 36(d)
|
||||
38: 7(fvec4) FAdd 35 37
|
||||
40: 7(fvec4) Load 39(e)
|
||||
41: 7(fvec4) FAdd 38 40
|
||||
43: 42(ptr) AccessChain 14(local) 16
|
||||
Store 43 41
|
||||
47: 46(ptr) AccessChain 14(local) 23
|
||||
48: 10 Load 47
|
||||
Store 45(m) 48
|
||||
52: 51(ptr) AccessChain 14(local) 19
|
||||
53: 11(ivec2) Load 52
|
||||
Store 50(coord) 53
|
||||
56: 42(ptr) AccessChain 14(local) 16
|
||||
57: 7(fvec4) Load 56
|
||||
Store 55(b) 57
|
||||
Return
|
||||
FunctionEnd
|
||||
|
@ -16,7 +16,7 @@ struct {
|
||||
float4 i;
|
||||
} s2;
|
||||
|
||||
struct {
|
||||
struct IN_S {
|
||||
linear float4 a;
|
||||
nointerpolation bool b;
|
||||
noperspective centroid float1 c;
|
||||
@ -25,19 +25,19 @@ struct {
|
||||
bool ff2 : packoffset(c0.y);
|
||||
bool ff3 : packoffset(c0.y) : register(ps_5_0, s0) ;
|
||||
float4 ff4 : VPOS : packoffset(c0.y) : register(ps_5_0, s0) <int bambam=30;> ;
|
||||
} s4;
|
||||
};
|
||||
|
||||
float3 ff5 : packoffset(c1.y) : register(ps_5_0, s[5]);
|
||||
float3 ff6 : packoffset(c2.y) : register(s3[5]);
|
||||
|
||||
float4 PixelShaderFunction(float4 input) : COLOR0
|
||||
float4 PixelShaderFunction(float4 input, IN_S s) : COLOR0
|
||||
{
|
||||
struct FS {
|
||||
bool3 b3;
|
||||
} s3;
|
||||
|
||||
s3 == s3;
|
||||
s2.i = s4.ff4;
|
||||
s2.i = s.ff4;
|
||||
|
||||
return input;
|
||||
}
|
@ -1,9 +1,14 @@
|
||||
struct VI {
|
||||
float4 m[2];
|
||||
uint2 coord;
|
||||
linear float4 b;
|
||||
};
|
||||
|
||||
float4 main(float4 d, VI vi, float4 e) : SV_POSITION
|
||||
VI main(float4 d, VI vi, float4 e) : SV_POSITION
|
||||
{
|
||||
return vi.m[1] + vi.m[0] + float4(vi.coord.x) + d + e;
|
||||
VI local;
|
||||
|
||||
local.b = vi.m[1] + vi.m[0] + float4(vi.coord.x) + d + e;
|
||||
|
||||
return local;
|
||||
}
|
@ -2,5 +2,5 @@
|
||||
// For the version, it uses the latest git tag followed by the number of commits.
|
||||
// For the date, it uses the current date (when then script is run).
|
||||
|
||||
#define GLSLANG_REVISION "Overload400-PrecQual.1489"
|
||||
#define GLSLANG_REVISION "Overload400-PrecQual.1490"
|
||||
#define GLSLANG_DATE "16-Sep-2016"
|
||||
|
@ -435,7 +435,7 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type)
|
||||
return false;
|
||||
if (type.getBasicType() == EbtBlock) {
|
||||
// the type was a block, which set some parts of the qualifier
|
||||
parseContext.mergeQualifiers(loc, type.getQualifier(), qualifier, true);
|
||||
parseContext.mergeQualifiers(type.getQualifier(), qualifier);
|
||||
// further, it can create an anonymous instance of the block
|
||||
if (peekTokenClass(EHTokSemicolon))
|
||||
parseContext.declareBlock(loc, type);
|
||||
@ -476,7 +476,6 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier)
|
||||
qualifier.volatil = true;
|
||||
break;
|
||||
case EHTokLinear:
|
||||
qualifier.storage = EvqVaryingIn;
|
||||
qualifier.smooth = true;
|
||||
break;
|
||||
case EHTokCentroid:
|
||||
|
@ -728,7 +728,7 @@ void HlslParseContext::flattenStruct(const TVariable& variable)
|
||||
for (int member = 0; member < (int)members.size(); ++member) {
|
||||
TVariable* memberVariable = makeInternalVariable(members[member].type->getFieldName().c_str(),
|
||||
*members[member].type);
|
||||
memberVariable->getWritableType().getQualifier().storage = variable.getType().getQualifier().storage;
|
||||
mergeQualifiers(memberVariable->getWritableType().getQualifier(), variable.getType().getQualifier());
|
||||
memberVariables.push_back(memberVariable);
|
||||
}
|
||||
|
||||
@ -3049,7 +3049,7 @@ void HlslParseContext::globalQualifierFix(const TSourceLoc&, TQualifier& qualifi
|
||||
// 'dst', for the purpose of error checking order for versions
|
||||
// that require specific orderings of qualifiers.
|
||||
//
|
||||
void HlslParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, const TQualifier& src, bool force)
|
||||
void HlslParseContext::mergeQualifiers(TQualifier& dst, const TQualifier& src)
|
||||
{
|
||||
// Storage qualification
|
||||
if (dst.storage == EvqTemporary || dst.storage == EvqGlobal)
|
||||
@ -3060,8 +3060,6 @@ void HlslParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, c
|
||||
else if ((dst.storage == EvqIn && src.storage == EvqConst) ||
|
||||
(dst.storage == EvqConst && src.storage == EvqIn))
|
||||
dst.storage = EvqConstReadOnly;
|
||||
else if (src.storage != EvqTemporary && src.storage != EvqGlobal)
|
||||
error(loc, "too many storage qualifiers", GetStorageQualifierString(src.storage), "");
|
||||
|
||||
// Layout qualifiers
|
||||
mergeObjectLayoutQualifiers(dst, src, false);
|
||||
@ -4586,7 +4584,7 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS
|
||||
}
|
||||
|
||||
TQualifier newMemberQualification = defaultQualification;
|
||||
mergeQualifiers(memberLoc, newMemberQualification, memberQualifier, false);
|
||||
mergeQualifiers(newMemberQualification, memberQualifier);
|
||||
memberQualifier = newMemberQualification;
|
||||
}
|
||||
|
||||
|
@ -129,7 +129,7 @@ public:
|
||||
void boolCheck(const TSourceLoc&, const TIntermTyped*);
|
||||
void globalQualifierFix(const TSourceLoc&, TQualifier&);
|
||||
bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType);
|
||||
void mergeQualifiers(const TSourceLoc&, TQualifier& dst, const TQualifier& src, bool force);
|
||||
void mergeQualifiers(TQualifier& dst, const TQualifier& src);
|
||||
int computeSamplerTypeIndex(TSampler&);
|
||||
TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&, bool& newDeclaration);
|
||||
void redeclareBuiltinBlock(const TSourceLoc&, TTypeList& typeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes);
|
||||
|
Loading…
Reference in New Issue
Block a user