HLSL: Force flat interpolation for structure members. Fixes #940.

This commit is contained in:
John Kessenich 2017-06-20 13:19:53 -06:00
parent be1085cb88
commit f0bc598dd7
4 changed files with 48 additions and 37 deletions

View File

@ -58,7 +58,7 @@ gl_FragCoord origin is upper left
0:13 Constant: 0:13 Constant:
0:13 0 (const int) 0:13 0 (const int)
0:13 v: direct index for structure ( temp 2-component vector of float) 0:13 v: direct index for structure ( temp 2-component vector of float)
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2}) 0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, flat temp 2-component vector of int i2})
0:13 Constant: 0:13 Constant:
0:13 0 (const int) 0:13 0 (const int)
0:13 move second child to first child ( temp 4-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float)
@ -72,8 +72,8 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant: 0:13 Constant:
0:13 2 (const int) 0:13 2 (const int)
0:13 i2: direct index for structure ( temp 2-component vector of int) 0:13 i2: direct index for structure ( flat temp 2-component vector of int)
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2}) 0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, flat temp 2-component vector of int i2})
0:13 Constant: 0:13 Constant:
0:13 1 (const int) 0:13 1 (const int)
0:13 move second child to first child ( temp 4-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float)
@ -82,7 +82,7 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2}) 0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v, flat temp 2-component vector of int i2})
0:? 'i_fragCoord' ( in 4-component vector of float FragCoord) 0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
@ -148,7 +148,7 @@ gl_FragCoord origin is upper left
0:13 Constant: 0:13 Constant:
0:13 0 (const int) 0:13 0 (const int)
0:13 v: direct index for structure ( temp 2-component vector of float) 0:13 v: direct index for structure ( temp 2-component vector of float)
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2}) 0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, flat temp 2-component vector of int i2})
0:13 Constant: 0:13 Constant:
0:13 0 (const int) 0:13 0 (const int)
0:13 move second child to first child ( temp 4-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float)
@ -162,8 +162,8 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:13 Constant: 0:13 Constant:
0:13 2 (const int) 0:13 2 (const int)
0:13 i2: direct index for structure ( temp 2-component vector of int) 0:13 i2: direct index for structure ( flat temp 2-component vector of int)
0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2}) 0:13 'i' (layout( location=0) in structure{ temp 2-component vector of float v, flat temp 2-component vector of int i2})
0:13 Constant: 0:13 Constant:
0:13 1 (const int) 0:13 1 (const int)
0:13 move second child to first child ( temp 4-component vector of float) 0:13 move second child to first child ( temp 4-component vector of float)
@ -172,7 +172,7 @@ gl_FragCoord origin is upper left
0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2}) 0:? 'i' ( temp structure{ temp 2-component vector of float v, temp 4-component vector of float fragCoord, temp 2-component vector of int i2})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v, temp 2-component vector of int i2}) 0:? 'i' (layout( location=0) in structure{ temp 2-component vector of float v, flat temp 2-component vector of int i2})
0:? 'i_fragCoord' ( in 4-component vector of float FragCoord) 0:? 'i_fragCoord' ( in 4-component vector of float FragCoord)
// Module Version 10000 // Module Version 10000
@ -207,6 +207,7 @@ gl_FragCoord origin is upper left
Name 63 "i_fragCoord" Name 63 "i_fragCoord"
Name 73 "@entryPointOutput" Name 73 "@entryPointOutput"
Name 74 "param" Name 74 "param"
MemberDecorate 54(InParam) 1 Flat
Decorate 56(i) Location 0 Decorate 56(i) Location 0
Decorate 63(i_fragCoord) BuiltIn FragCoord Decorate 63(i_fragCoord) BuiltIn FragCoord
Decorate 73(@entryPointOutput) Location 0 Decorate 73(@entryPointOutput) Location 0

View File

@ -44,7 +44,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 0 (const int) 0:40 0 (const int)
0:40 a: direct index for structure ( smooth temp 4-component vector of float) 0:40 a: direct index for structure ( smooth temp 4-component vector of float)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 0 (const int) 0:40 0 (const int)
0:40 move second child to first child ( temp bool) 0:40 move second child to first child ( temp bool)
@ -53,7 +53,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 1 (const int) 0:40 1 (const int)
0:40 b: direct index for structure ( flat temp bool) 0:40 b: direct index for structure ( flat temp bool)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 1 (const int) 0:40 1 (const int)
0:40 move second child to first child ( temp 1-component vector of float) 0:40 move second child to first child ( temp 1-component vector of float)
@ -62,7 +62,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 2 (const int) 0:40 2 (const int)
0:40 c: direct index for structure ( centroid noperspective temp 1-component vector of float) 0:40 c: direct index for structure ( centroid noperspective temp 1-component vector of float)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 2 (const int) 0:40 2 (const int)
0:40 move second child to first child ( temp 2-component vector of float) 0:40 move second child to first child ( temp 2-component vector of float)
@ -71,7 +71,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 3 (const int) 0:40 3 (const int)
0:40 d: direct index for structure ( centroid sample temp 2-component vector of float) 0:40 d: direct index for structure ( centroid sample temp 2-component vector of float)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 3 (const int) 0:40 3 (const int)
0:40 move second child to first child ( temp bool) 0:40 move second child to first child ( temp bool)
@ -85,8 +85,8 @@ gl_FragCoord origin is upper left
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 5 (const int) 0:40 5 (const int)
0:40 ff2: direct index for structure ( temp bool) 0:40 ff2: direct index for structure ( flat temp bool)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 4 (const int) 0:40 4 (const int)
0:40 move second child to first child ( temp bool) 0:40 move second child to first child ( temp bool)
@ -94,8 +94,8 @@ gl_FragCoord origin is upper left
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 6 (const int) 0:40 6 (const int)
0:40 ff3: direct index for structure ( temp bool) 0:40 ff3: direct index for structure ( flat temp bool)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 5 (const int) 0:40 5 (const int)
0:40 move second child to first child ( temp 4-component vector of float) 0:40 move second child to first child ( temp 4-component vector of float)
@ -104,7 +104,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 7 (const int) 0:40 7 (const int)
0:40 ff4: direct index for structure ( temp 4-component vector of float) 0:40 ff4: direct index for structure ( temp 4-component vector of float)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 6 (const int) 0:40 6 (const int)
0:40 move second child to first child ( temp 4-component vector of float) 0:40 move second child to first child ( temp 4-component vector of float)
@ -117,7 +117,7 @@ gl_FragCoord origin is upper left
0:? 's2' ( global structure{ temp 4-component vector of float i}) 0:? 's2' ( global structure{ temp 4-component vector of float i})
0:? '@entryPointOutput' (layout( location=0) out 4-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:? 'input' (layout( location=0) in 4-component vector of float)
0:? 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:? 's_ff1' ( in bool Face) 0:? 's_ff1' ( in bool Face)
@ -165,7 +165,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 0 (const int) 0:40 0 (const int)
0:40 a: direct index for structure ( smooth temp 4-component vector of float) 0:40 a: direct index for structure ( smooth temp 4-component vector of float)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 0 (const int) 0:40 0 (const int)
0:40 move second child to first child ( temp bool) 0:40 move second child to first child ( temp bool)
@ -174,7 +174,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 1 (const int) 0:40 1 (const int)
0:40 b: direct index for structure ( flat temp bool) 0:40 b: direct index for structure ( flat temp bool)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 1 (const int) 0:40 1 (const int)
0:40 move second child to first child ( temp 1-component vector of float) 0:40 move second child to first child ( temp 1-component vector of float)
@ -183,7 +183,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 2 (const int) 0:40 2 (const int)
0:40 c: direct index for structure ( centroid noperspective temp 1-component vector of float) 0:40 c: direct index for structure ( centroid noperspective temp 1-component vector of float)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 2 (const int) 0:40 2 (const int)
0:40 move second child to first child ( temp 2-component vector of float) 0:40 move second child to first child ( temp 2-component vector of float)
@ -192,7 +192,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 3 (const int) 0:40 3 (const int)
0:40 d: direct index for structure ( centroid sample temp 2-component vector of float) 0:40 d: direct index for structure ( centroid sample temp 2-component vector of float)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 3 (const int) 0:40 3 (const int)
0:40 move second child to first child ( temp bool) 0:40 move second child to first child ( temp bool)
@ -206,8 +206,8 @@ gl_FragCoord origin is upper left
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 5 (const int) 0:40 5 (const int)
0:40 ff2: direct index for structure ( temp bool) 0:40 ff2: direct index for structure ( flat temp bool)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 4 (const int) 0:40 4 (const int)
0:40 move second child to first child ( temp bool) 0:40 move second child to first child ( temp bool)
@ -215,8 +215,8 @@ gl_FragCoord origin is upper left
0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? 's' ( temp structure{ temp 4-component vector of float a, temp bool b, temp 1-component vector of float c, temp 2-component vector of float d, temp bool ff1, temp bool ff2, temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 6 (const int) 0:40 6 (const int)
0:40 ff3: direct index for structure ( temp bool) 0:40 ff3: direct index for structure ( flat temp bool)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 5 (const int) 0:40 5 (const int)
0:40 move second child to first child ( temp 4-component vector of float) 0:40 move second child to first child ( temp 4-component vector of float)
@ -225,7 +225,7 @@ gl_FragCoord origin is upper left
0:40 Constant: 0:40 Constant:
0:40 7 (const int) 0:40 7 (const int)
0:40 ff4: direct index for structure ( temp 4-component vector of float) 0:40 ff4: direct index for structure ( temp 4-component vector of float)
0:40 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:40 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant: 0:40 Constant:
0:40 6 (const int) 0:40 6 (const int)
0:40 move second child to first child ( temp 4-component vector of float) 0:40 move second child to first child ( temp 4-component vector of float)
@ -238,7 +238,7 @@ gl_FragCoord origin is upper left
0:? 's2' ( global structure{ temp 4-component vector of float i}) 0:? 's2' ( global structure{ temp 4-component vector of float i})
0:? '@entryPointOutput' (layout( location=0) out 4-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:? 'input' (layout( location=0) in 4-component vector of float)
0:? 's' (layout( location=1) 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 ff2, temp bool ff3, temp 4-component vector of float ff4}) 0:? 's' (layout( location=1) 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:? 's_ff1' ( in bool Face) 0:? 's_ff1' ( in bool Face)
// Module Version 10000 // Module Version 10000
@ -306,6 +306,8 @@ gl_FragCoord origin is upper left
MemberDecorate 54(IN_S) 2 NoPerspective MemberDecorate 54(IN_S) 2 NoPerspective
MemberDecorate 54(IN_S) 2 Centroid MemberDecorate 54(IN_S) 2 Centroid
MemberDecorate 54(IN_S) 3 Centroid MemberDecorate 54(IN_S) 3 Centroid
MemberDecorate 54(IN_S) 4 Flat
MemberDecorate 54(IN_S) 5 Flat
Decorate 56(s) Location 1 Decorate 56(s) Location 1
Decorate 79(s_ff1) BuiltIn FrontFacing Decorate 79(s_ff1) BuiltIn FrontFacing
Decorate 94(@entryPointOutput) Location 0 Decorate 94(@entryPointOutput) Location 0

View File

@ -1349,7 +1349,6 @@ public:
case EbtInt16: case EbtInt16:
case EbtUint16: case EbtUint16:
#endif #endif
case EbtBool:
case EbtAtomicUint: case EbtAtomicUint:
return true; return true;
default: default:
@ -1469,9 +1468,9 @@ public:
case EbtUint16: case EbtUint16:
#endif #endif
case EbtBool: case EbtBool:
return true; return true;
default: default:
return false; return false;
} }
}; };

View File

@ -791,7 +791,7 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc,
index = makeIntegerIndex(index); index = makeIntegerIndex(index);
if (index == nullptr) { if (index == nullptr) {
error(loc, " unknown undex type ", "", ""); error(loc, " unknown index type ", "", "");
return nullptr; return nullptr;
} }
@ -1554,11 +1554,20 @@ void HlslParseContext::assignToInterface(TVariable& variable)
nextOutLocation += size; nextOutLocation += size;
} }
} }
// Going into the fragment stage, integer-based stuff must be flat/nointerpolation if (qualifier.storage == EvqVaryingIn && language == EShLangFragment) {
if (type.isIntegerDomain() && qualifier.builtIn == EbvNone && // Going into the fragment stage, integer-based stuff must be flat/nointerpolation
qualifier.storage == EvqVaryingIn && language == EShLangFragment) { const auto fixQualifier = [](TType& type) {
qualifier.clearInterpolation(); if (type.getQualifier().builtIn == EbvNone &&
qualifier.flat = true; (type.isIntegerDomain() || type.getBasicType() == EbtBool)) {
type.getQualifier().clearInterpolation();
type.getQualifier().flat = true;
}
};
if (type.isStruct())
for (auto mem = (*type.getStruct()).begin(); mem != (*type.getStruct()).end(); ++mem)
fixQualifier(*mem->type);
else
fixQualifier(type);
} }
trackLinkage(variable); trackLinkage(variable);
} }