Updated glslang.

This commit is contained in:
Branimir Karadžić
2017-06-25 11:06:36 -07:00
parent f93650238a
commit d89a4e0346
46 changed files with 3276 additions and 903 deletions

View File

@@ -57,7 +57,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:8 move second child to first child ( temp int)
0:? 'i' ( temp int)
0:? 'i' (layout( location=0) in int)
0:? 'i' (layout( location=0) flat in int)
0:8 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'input' ( temp 3-element array of 4-component vector of float)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
@@ -69,7 +69,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'i' (layout( location=0) in int)
0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
@@ -134,7 +134,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:8 move second child to first child ( temp int)
0:? 'i' ( temp int)
0:? 'i' (layout( location=0) in int)
0:? 'i' (layout( location=0) flat in int)
0:8 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'input' ( temp 3-element array of 4-component vector of float)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
@@ -146,7 +146,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-element array of 4-component vector of float a, uniform 11-element array of structure{ temp 7-element array of 4-component vector of float m} s})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'i' (layout( location=0) in int)
0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float)
// Module Version 10000
@@ -185,6 +185,7 @@ gl_FragCoord origin is upper left
MemberDecorate 26($Global) 1 Offset 64
Decorate 26($Global) Block
Decorate 28 DescriptorSet 0
Decorate 68(i) Flat
Decorate 68(i) Location 0
Decorate 72(input) Location 1
Decorate 75(@entryPointOutput) Location 0

View File

@@ -2,49 +2,57 @@ hlsl.buffer.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:30 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:30 Function Definition: foo( ( temp float)
0:30 Function Parameters:
0:30 'input' ( in 4-component vector of float)
0:? Sequence
0:31 Branch: Return with expression
0:31 add ( temp 4-component vector of float)
0:31 add ( temp 4-component vector of float)
0:31 add ( temp 4-component vector of float)
0:31 add ( temp 4-component vector of float)
0:31 'input' ( in 4-component vector of float)
0:31 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:31 Constant:
0:31 0 (const uint)
0:31 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
0:31 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:31 Constant:
0:31 0 (const uint)
0:31 v3: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:31 'anon@2' (layout( set=10 binding=2 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:31 Constant:
0:31 0 (const uint)
0:31 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:31 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430) buffer float f7, layout( row_major std430) buffer 3X4 matrix of float m1, layout( column_major std430) buffer 3X4 matrix of float m2, layout( row_major std430) buffer 3X4 matrix of float m3, layout( row_major std430) buffer 3X4 matrix of float m4})
0:31 Constant:
0:31 0 (const uint)
0:30 Function Definition: PixelShaderFunction( ( temp void)
0:30 Function Parameters:
0:31 Constant:
0:31 1.000000
0:35 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:35 Function Parameters:
0:35 'input' ( in 4-component vector of float)
0:? Sequence
0:30 move second child to first child ( temp 4-component vector of float)
0:36 Branch: Return with expression
0:36 vector-scale ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 'input' ( in 4-component vector of float)
0:36 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:36 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:36 Constant:
0:36 0 (const uint)
0:36 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
0:36 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:36 Constant:
0:36 0 (const uint)
0:36 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
0:36 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:36 Constant:
0:36 0 (const uint)
0:36 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:36 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:36 Constant:
0:36 0 (const uint)
0:36 Function Call: foo( ( temp float)
0:35 Function Definition: PixelShaderFunction( ( temp void)
0:35 Function Parameters:
0:? Sequence
0:35 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:30 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( in 4-component vector of float FragCoord)
0:35 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:30 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:35 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:? 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:? 'anon@2' (layout( set=10 binding=2 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430) buffer float f7, layout( row_major std430) buffer 3X4 matrix of float m1, layout( column_major std430) buffer 3X4 matrix of float m2, layout( row_major std430) buffer 3X4 matrix of float m3, layout( row_major std430) buffer 3X4 matrix of float m4})
0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
0:? 'input' ( in 4-component vector of float FragCoord)
Linked fragment stage:
@@ -53,193 +61,209 @@ Linked fragment stage:
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:30 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:30 Function Definition: foo( ( temp float)
0:30 Function Parameters:
0:30 'input' ( in 4-component vector of float)
0:? Sequence
0:31 Branch: Return with expression
0:31 add ( temp 4-component vector of float)
0:31 add ( temp 4-component vector of float)
0:31 add ( temp 4-component vector of float)
0:31 add ( temp 4-component vector of float)
0:31 'input' ( in 4-component vector of float)
0:31 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:31 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:31 Constant:
0:31 0 (const uint)
0:31 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
0:31 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:31 Constant:
0:31 0 (const uint)
0:31 v3: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:31 'anon@2' (layout( set=10 binding=2 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:31 Constant:
0:31 0 (const uint)
0:31 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:31 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430) buffer float f7, layout( row_major std430) buffer 3X4 matrix of float m1, layout( column_major std430) buffer 3X4 matrix of float m2, layout( row_major std430) buffer 3X4 matrix of float m3, layout( row_major std430) buffer 3X4 matrix of float m4})
0:31 Constant:
0:31 0 (const uint)
0:30 Function Definition: PixelShaderFunction( ( temp void)
0:30 Function Parameters:
0:31 Constant:
0:31 1.000000
0:35 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:35 Function Parameters:
0:35 'input' ( in 4-component vector of float)
0:? Sequence
0:30 move second child to first child ( temp 4-component vector of float)
0:36 Branch: Return with expression
0:36 vector-scale ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 add ( temp 4-component vector of float)
0:36 'input' ( in 4-component vector of float)
0:36 v1: direct index for structure (layout( row_major std140) uniform 4-component vector of float)
0:36 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:36 Constant:
0:36 0 (const uint)
0:36 v2: direct index for structure (layout( row_major std430) buffer 4-component vector of float)
0:36 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:36 Constant:
0:36 0 (const uint)
0:36 v3: direct index for structure (layout( row_major std140 offset=0) uniform 4-component vector of float)
0:36 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:36 Constant:
0:36 0 (const uint)
0:36 v4: direct index for structure (layout( row_major std430 offset=16) buffer 4-component vector of float)
0:36 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:36 Constant:
0:36 0 (const uint)
0:36 Function Call: foo( ( temp float)
0:35 Function Definition: PixelShaderFunction( ( temp void)
0:35 Function Parameters:
0:? Sequence
0:35 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:30 move second child to first child ( temp 4-component vector of float)
0:? 'input' ( in 4-component vector of float FragCoord)
0:35 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:30 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:35 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
0:? 'input' ( temp 4-component vector of float)
0:? Linker Objects
0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v1})
0:? 'anon@1' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer 4-component vector of float v2})
0:? 'anon@2' (layout( set=10 binding=2 row_major std140) uniform block{layout( row_major std140) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430) buffer float f7, layout( row_major std430) buffer 3X4 matrix of float m1, layout( column_major std430) buffer 3X4 matrix of float m2, layout( row_major std430) buffer 3X4 matrix of float m3, layout( row_major std430) buffer 3X4 matrix of float m4})
0:? 'anon@2' (layout( row_major std140) uniform block{layout( row_major std140 offset=0) uniform 4-component vector of float v3, layout( row_major std140 offset=20) uniform int i3})
0:? 'anon@3' (layout( binding=8 row_major std430) readonly buffer block{layout( row_major std430 offset=16) buffer 4-component vector of float v4, layout( row_major std430 offset=48) buffer int i4, layout( row_major std430 offset=60) buffer float f1, layout( row_major std430 offset=64) buffer float f3, layout( row_major std430 offset=68) buffer float f4, layout( row_major std430 offset=72) buffer float f5, layout( row_major std430) buffer float f6, layout( row_major std430 offset=128) buffer float f7, layout( row_major std430 offset=112) buffer 3X4 matrix of float m1, layout( column_major std430 offset=176) buffer 3X4 matrix of float m2, layout( row_major std430 offset=240) buffer 3X4 matrix of float m3, layout( row_major std430 offset=304) buffer 3X4 matrix of float m4})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in 4-component vector of float)
0:? 'input' ( in 4-component vector of float FragCoord)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 53
// Id's are bound by 61
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "PixelShaderFunction" 46 49
EntryPoint Fragment 4 "PixelShaderFunction" 54 57
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "PixelShaderFunction"
Name 11 "@PixelShaderFunction(vf4;"
Name 10 "input"
Name 14 ""
MemberName 14 0 "v1"
Name 16 ""
Name 23 ""
MemberName 23 0 "v2"
Name 25 ""
Name 29 "cbufName"
MemberName 29(cbufName) 0 "v3"
MemberName 29(cbufName) 1 "i3"
Name 8 "foo("
Name 14 "@PixelShaderFunction(vf4;"
Name 13 "input"
Name 20 "buf1"
MemberName 20(buf1) 0 "v1"
Name 22 ""
Name 29 "buf2"
MemberName 29(buf2) 0 "v2"
Name 31 ""
Name 36 "tbufName"
MemberName 36(tbufName) 0 "v4"
MemberName 36(tbufName) 1 "i4"
MemberName 36(tbufName) 2 "f1"
MemberName 36(tbufName) 3 "f3"
MemberName 36(tbufName) 4 "f4"
MemberName 36(tbufName) 5 "f5"
MemberName 36(tbufName) 6 "f6"
MemberName 36(tbufName) 7 "f7"
MemberName 36(tbufName) 8 "m1"
MemberName 36(tbufName) 9 "m2"
MemberName 36(tbufName) 10 "m3"
MemberName 36(tbufName) 11 "m4"
Name 38 ""
Name 44 "input"
Name 46 "input"
Name 49 "@entryPointOutput"
Name 50 "param"
MemberDecorate 14 0 Offset 0
Decorate 14 Block
Decorate 16 DescriptorSet 0
MemberDecorate 23 0 NonWritable
MemberDecorate 23 0 Offset 0
Decorate 23 BufferBlock
Decorate 25 DescriptorSet 0
MemberDecorate 29(cbufName) 0 Offset 0
MemberDecorate 29(cbufName) 1 Offset 20
Decorate 29(cbufName) Block
Decorate 31 DescriptorSet 10
Decorate 31 Binding 2
MemberDecorate 36(tbufName) 0 NonWritable
MemberDecorate 36(tbufName) 0 Offset 16
MemberDecorate 36(tbufName) 1 NonWritable
MemberDecorate 36(tbufName) 1 Offset 48
MemberDecorate 36(tbufName) 2 NonWritable
MemberDecorate 36(tbufName) 2 Offset 60
MemberDecorate 36(tbufName) 3 NonWritable
MemberDecorate 36(tbufName) 3 Offset 64
MemberDecorate 36(tbufName) 4 NonWritable
MemberDecorate 36(tbufName) 4 Offset 68
MemberDecorate 36(tbufName) 5 NonWritable
MemberDecorate 36(tbufName) 5 Offset 72
MemberDecorate 36(tbufName) 6 NonWritable
MemberDecorate 36(tbufName) 6 Offset 76
MemberDecorate 36(tbufName) 7 NonWritable
MemberDecorate 36(tbufName) 7 Offset 80
MemberDecorate 36(tbufName) 8 RowMajor
MemberDecorate 36(tbufName) 8 NonWritable
MemberDecorate 36(tbufName) 8 Offset 96
MemberDecorate 36(tbufName) 8 MatrixStride 16
MemberDecorate 36(tbufName) 9 ColMajor
MemberDecorate 36(tbufName) 9 NonWritable
MemberDecorate 36(tbufName) 9 Offset 160
MemberDecorate 36(tbufName) 9 MatrixStride 16
MemberDecorate 36(tbufName) 10 RowMajor
MemberDecorate 36(tbufName) 10 NonWritable
MemberDecorate 36(tbufName) 10 Offset 208
MemberDecorate 36(tbufName) 10 MatrixStride 16
MemberDecorate 36(tbufName) 11 RowMajor
MemberDecorate 36(tbufName) 11 NonWritable
MemberDecorate 36(tbufName) 11 Offset 272
MemberDecorate 36(tbufName) 11 MatrixStride 16
Decorate 36(tbufName) BufferBlock
Decorate 38 DescriptorSet 0
Decorate 38 Binding 8
Decorate 46(input) Location 0
Decorate 49(@entryPointOutput) Location 0
Name 35 "cbufName"
MemberName 35(cbufName) 0 "v3"
MemberName 35(cbufName) 1 "i3"
Name 37 ""
Name 42 "tbufName"
MemberName 42(tbufName) 0 "v4"
MemberName 42(tbufName) 1 "i4"
MemberName 42(tbufName) 2 "f1"
MemberName 42(tbufName) 3 "f3"
MemberName 42(tbufName) 4 "f4"
MemberName 42(tbufName) 5 "f5"
MemberName 42(tbufName) 6 "f6"
MemberName 42(tbufName) 7 "f7"
MemberName 42(tbufName) 8 "m1"
MemberName 42(tbufName) 9 "m2"
MemberName 42(tbufName) 10 "m3"
MemberName 42(tbufName) 11 "m4"
Name 44 ""
Name 52 "input"
Name 54 "input"
Name 57 "@entryPointOutput"
Name 58 "param"
MemberDecorate 20(buf1) 0 Offset 0
Decorate 20(buf1) Block
Decorate 22 DescriptorSet 0
MemberDecorate 29(buf2) 0 NonWritable
MemberDecorate 29(buf2) 0 Offset 0
Decorate 29(buf2) BufferBlock
Decorate 31 DescriptorSet 0
MemberDecorate 35(cbufName) 0 Offset 0
MemberDecorate 35(cbufName) 1 Offset 20
Decorate 35(cbufName) Block
Decorate 37 DescriptorSet 0
MemberDecorate 42(tbufName) 0 NonWritable
MemberDecorate 42(tbufName) 0 Offset 16
MemberDecorate 42(tbufName) 1 NonWritable
MemberDecorate 42(tbufName) 1 Offset 48
MemberDecorate 42(tbufName) 2 NonWritable
MemberDecorate 42(tbufName) 2 Offset 60
MemberDecorate 42(tbufName) 3 NonWritable
MemberDecorate 42(tbufName) 3 Offset 64
MemberDecorate 42(tbufName) 4 NonWritable
MemberDecorate 42(tbufName) 4 Offset 68
MemberDecorate 42(tbufName) 5 NonWritable
MemberDecorate 42(tbufName) 5 Offset 72
MemberDecorate 42(tbufName) 6 NonWritable
MemberDecorate 42(tbufName) 6 Offset 76
MemberDecorate 42(tbufName) 7 NonWritable
MemberDecorate 42(tbufName) 7 Offset 128
MemberDecorate 42(tbufName) 8 RowMajor
MemberDecorate 42(tbufName) 8 NonWritable
MemberDecorate 42(tbufName) 8 Offset 112
MemberDecorate 42(tbufName) 8 MatrixStride 16
MemberDecorate 42(tbufName) 9 ColMajor
MemberDecorate 42(tbufName) 9 NonWritable
MemberDecorate 42(tbufName) 9 Offset 176
MemberDecorate 42(tbufName) 9 MatrixStride 16
MemberDecorate 42(tbufName) 10 RowMajor
MemberDecorate 42(tbufName) 10 NonWritable
MemberDecorate 42(tbufName) 10 Offset 240
MemberDecorate 42(tbufName) 10 MatrixStride 16
MemberDecorate 42(tbufName) 11 RowMajor
MemberDecorate 42(tbufName) 11 NonWritable
MemberDecorate 42(tbufName) 11 Offset 304
MemberDecorate 42(tbufName) 11 MatrixStride 16
Decorate 42(tbufName) BufferBlock
Decorate 44 DescriptorSet 0
Decorate 44 Binding 8
Decorate 54(input) BuiltIn FragCoord
Decorate 57(@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)
14: TypeStruct 7(fvec4)
15: TypePointer Uniform 14(struct)
16: 15(ptr) Variable Uniform
17: TypeInt 32 1
18: 17(int) Constant 0
19: TypePointer Uniform 7(fvec4)
23: TypeStruct 7(fvec4)
24: TypePointer Uniform 23(struct)
25: 24(ptr) Variable Uniform
29(cbufName): TypeStruct 7(fvec4) 17(int)
30: TypePointer Uniform 29(cbufName)
7: TypeFunction 6(float)
10: TypeVector 6(float) 4
11: TypePointer Function 10(fvec4)
12: TypeFunction 10(fvec4) 11(ptr)
16: 6(float) Constant 1065353216
20(buf1): TypeStruct 10(fvec4)
21: TypePointer Uniform 20(buf1)
22: 21(ptr) Variable Uniform
23: TypeInt 32 1
24: 23(int) Constant 0
25: TypePointer Uniform 10(fvec4)
29(buf2): TypeStruct 10(fvec4)
30: TypePointer Uniform 29(buf2)
31: 30(ptr) Variable Uniform
35: TypeMatrix 7(fvec4) 3
36(tbufName): TypeStruct 7(fvec4) 17(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 35 35 35 35
37: TypePointer Uniform 36(tbufName)
38: 37(ptr) Variable Uniform
45: TypePointer Input 7(fvec4)
46(input): 45(ptr) Variable Input
48: TypePointer Output 7(fvec4)
49(@entryPointOutput): 48(ptr) Variable Output
35(cbufName): TypeStruct 10(fvec4) 23(int)
36: TypePointer Uniform 35(cbufName)
37: 36(ptr) Variable Uniform
41: TypeMatrix 10(fvec4) 3
42(tbufName): TypeStruct 10(fvec4) 23(int) 6(float) 6(float) 6(float) 6(float) 6(float) 6(float) 41 41 41 41
43: TypePointer Uniform 42(tbufName)
44: 43(ptr) Variable Uniform
53: TypePointer Input 10(fvec4)
54(input): 53(ptr) Variable Input
56: TypePointer Output 10(fvec4)
57(@entryPointOutput): 56(ptr) Variable Output
4(PixelShaderFunction): 2 Function None 3
5: Label
44(input): 8(ptr) Variable Function
50(param): 8(ptr) Variable Function
47: 7(fvec4) Load 46(input)
Store 44(input) 47
51: 7(fvec4) Load 44(input)
Store 50(param) 51
52: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 50(param)
Store 49(@entryPointOutput) 52
52(input): 11(ptr) Variable Function
58(param): 11(ptr) Variable Function
55: 10(fvec4) Load 54(input)
Store 52(input) 55
59: 10(fvec4) Load 52(input)
Store 58(param) 59
60: 10(fvec4) FunctionCall 14(@PixelShaderFunction(vf4;) 58(param)
Store 57(@entryPointOutput) 60
Return
FunctionEnd
11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9
10(input): 8(ptr) FunctionParameter
12: Label
13: 7(fvec4) Load 10(input)
20: 19(ptr) AccessChain 16 18
21: 7(fvec4) Load 20
22: 7(fvec4) FAdd 13 21
26: 19(ptr) AccessChain 25 18
27: 7(fvec4) Load 26
28: 7(fvec4) FAdd 22 27
32: 19(ptr) AccessChain 31 18
33: 7(fvec4) Load 32
34: 7(fvec4) FAdd 28 33
39: 19(ptr) AccessChain 38 18
40: 7(fvec4) Load 39
41: 7(fvec4) FAdd 34 40
ReturnValue 41
8(foo(): 6(float) Function None 7
9: Label
ReturnValue 16
FunctionEnd
14(@PixelShaderFunction(vf4;): 10(fvec4) Function None 12
13(input): 11(ptr) FunctionParameter
15: Label
19: 10(fvec4) Load 13(input)
26: 25(ptr) AccessChain 22 24
27: 10(fvec4) Load 26
28: 10(fvec4) FAdd 19 27
32: 25(ptr) AccessChain 31 24
33: 10(fvec4) Load 32
34: 10(fvec4) FAdd 28 33
38: 25(ptr) AccessChain 37 24
39: 10(fvec4) Load 38
40: 10(fvec4) FAdd 34 39
45: 25(ptr) AccessChain 44 24
46: 10(fvec4) Load 45
47: 10(fvec4) FAdd 40 46
48: 6(float) FunctionCall 8(foo()
49: 10(fvec4) VectorTimesScalar 47 48
ReturnValue 49
FunctionEnd

View File

@@ -0,0 +1,194 @@
hlsl.clipdistance-1.vert
Shader version: 500
0:? Sequence
0:4 Function Definition: @main(vf4;f1;f1; ( temp void)
0:4 Function Parameters:
0:4 'pos' ( out 4-component vector of float)
0:4 'clip' ( out float)
0:4 'cull' ( out float)
0:? Sequence
0:5 move second child to first child ( temp 4-component vector of float)
0:5 'pos' ( out 4-component vector of float)
0:5 Constant:
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:6 move second child to first child ( temp float)
0:6 'clip' ( out float)
0:6 Constant:
0:6 0.500000
0:7 move second child to first child ( temp float)
0:7 'cull' ( out float)
0:7 Constant:
0:7 0.510000
0:4 Function Definition: main( ( temp void)
0:4 Function Parameters:
0:? Sequence
0:4 Function Call: @main(vf4;f1;f1; ( temp void)
0:? 'pos' ( temp 4-component vector of float)
0:? 'clip' ( temp float)
0:? 'cull' ( temp float)
0:4 move second child to first child ( temp 4-component vector of float)
0:? 'pos' ( out 4-component vector of float Position)
0:? 'pos' ( temp 4-component vector of float)
0:? Sequence
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 1-element array of float ClipDistance)
0:4 Constant:
0:4 0 (const int)
0:? 'clip' ( temp float)
0:? Sequence
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 1-element array of float CullDistance)
0:4 Constant:
0:4 0 (const int)
0:? 'cull' ( temp float)
0:? Linker Objects
0:? 'pos' ( out 4-component vector of float Position)
0:? 'clip' ( out 1-element array of float ClipDistance)
0:? 'cull' ( out 1-element array of float CullDistance)
Linked vertex stage:
Shader version: 500
0:? Sequence
0:4 Function Definition: @main(vf4;f1;f1; ( temp void)
0:4 Function Parameters:
0:4 'pos' ( out 4-component vector of float)
0:4 'clip' ( out float)
0:4 'cull' ( out float)
0:? Sequence
0:5 move second child to first child ( temp 4-component vector of float)
0:5 'pos' ( out 4-component vector of float)
0:5 Constant:
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:6 move second child to first child ( temp float)
0:6 'clip' ( out float)
0:6 Constant:
0:6 0.500000
0:7 move second child to first child ( temp float)
0:7 'cull' ( out float)
0:7 Constant:
0:7 0.510000
0:4 Function Definition: main( ( temp void)
0:4 Function Parameters:
0:? Sequence
0:4 Function Call: @main(vf4;f1;f1; ( temp void)
0:? 'pos' ( temp 4-component vector of float)
0:? 'clip' ( temp float)
0:? 'cull' ( temp float)
0:4 move second child to first child ( temp 4-component vector of float)
0:? 'pos' ( out 4-component vector of float Position)
0:? 'pos' ( temp 4-component vector of float)
0:? Sequence
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 1-element array of float ClipDistance)
0:4 Constant:
0:4 0 (const int)
0:? 'clip' ( temp float)
0:? Sequence
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 1-element array of float CullDistance)
0:4 Constant:
0:4 0 (const int)
0:? 'cull' ( temp float)
0:? Linker Objects
0:? 'pos' ( out 4-component vector of float Position)
0:? 'clip' ( out 1-element array of float ClipDistance)
0:? 'cull' ( out 1-element array of float CullDistance)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 46
Capability Shader
Capability ClipDistance
Capability CullDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 31 37 43
Source HLSL 500
Name 4 "main"
Name 14 "@main(vf4;f1;f1;"
Name 11 "pos"
Name 12 "clip"
Name 13 "cull"
Name 20 "pos"
Name 21 "clip"
Name 22 "cull"
Name 23 "param"
Name 24 "param"
Name 25 "param"
Name 31 "pos"
Name 37 "clip"
Name 43 "cull"
Decorate 31(pos) BuiltIn Position
Decorate 37(clip) BuiltIn ClipDistance
Decorate 43(cull) BuiltIn CullDistance
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypePointer Function 6(float)
10: TypeFunction 2 8(ptr) 9(ptr) 9(ptr)
16: 6(float) Constant 1065353216
17: 7(fvec4) ConstantComposite 16 16 16 16
18: 6(float) Constant 1056964608
19: 6(float) Constant 1057132380
30: TypePointer Output 7(fvec4)
31(pos): 30(ptr) Variable Output
33: TypeInt 32 0
34: 33(int) Constant 1
35: TypeArray 6(float) 34
36: TypePointer Output 35
37(clip): 36(ptr) Variable Output
38: TypeInt 32 1
39: 38(int) Constant 0
41: TypePointer Output 6(float)
43(cull): 36(ptr) Variable Output
4(main): 2 Function None 3
5: Label
20(pos): 8(ptr) Variable Function
21(clip): 9(ptr) Variable Function
22(cull): 9(ptr) Variable Function
23(param): 8(ptr) Variable Function
24(param): 9(ptr) Variable Function
25(param): 9(ptr) Variable Function
26: 2 FunctionCall 14(@main(vf4;f1;f1;) 23(param) 24(param) 25(param)
27: 7(fvec4) Load 23(param)
Store 20(pos) 27
28: 6(float) Load 24(param)
Store 21(clip) 28
29: 6(float) Load 25(param)
Store 22(cull) 29
32: 7(fvec4) Load 20(pos)
Store 31(pos) 32
40: 6(float) Load 21(clip)
42: 41(ptr) AccessChain 37(clip) 39
Store 42 40
44: 6(float) Load 22(cull)
45: 41(ptr) AccessChain 43(cull) 39
Store 45 44
Return
FunctionEnd
14(@main(vf4;f1;f1;): 2 Function None 10
11(pos): 8(ptr) FunctionParameter
12(clip): 9(ptr) FunctionParameter
13(cull): 9(ptr) FunctionParameter
15: Label
Store 11(pos) 17
Store 12(clip) 18
Store 13(cull) 19
Return
FunctionEnd

View File

@@ -0,0 +1,561 @@
hlsl.clipdistance-2.vert
Shader version: 500
0:? Sequence
0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp void)
0:4 Function Parameters:
0:4 'pos' ( out 4-component vector of float)
0:4 'clip' ( out 2-element array of 2-component vector of float)
0:4 'cull' ( out 2-element array of 2-component vector of float)
0:? Sequence
0:5 move second child to first child ( temp 4-component vector of float)
0:5 'pos' ( out 4-component vector of float)
0:5 Constant:
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:6 move second child to first child ( temp float)
0:6 direct index ( temp float)
0:6 direct index ( temp 2-component vector of float)
0:6 'clip' ( out 2-element array of 2-component vector of float)
0:6 Constant:
0:6 0 (const int)
0:6 Constant:
0:6 0 (const int)
0:6 Constant:
0:6 0.500000
0:7 move second child to first child ( temp float)
0:7 direct index ( temp float)
0:7 direct index ( temp 2-component vector of float)
0:7 'clip' ( out 2-element array of 2-component vector of float)
0:7 Constant:
0:7 0 (const int)
0:7 Constant:
0:7 1 (const int)
0:7 Constant:
0:7 0.600000
0:8 move second child to first child ( temp float)
0:8 direct index ( temp float)
0:8 direct index ( temp 2-component vector of float)
0:8 'clip' ( out 2-element array of 2-component vector of float)
0:8 Constant:
0:8 1 (const int)
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 0.700000
0:9 move second child to first child ( temp float)
0:9 direct index ( temp float)
0:9 direct index ( temp 2-component vector of float)
0:9 'clip' ( out 2-element array of 2-component vector of float)
0:9 Constant:
0:9 1 (const int)
0:9 Constant:
0:9 1 (const int)
0:9 Constant:
0:9 0.800000
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 'cull' ( out 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0.525000
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 2-component vector of float)
0:12 'cull' ( out 2-element array of 2-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 0.625000
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:13 'cull' ( out 2-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.725000
0:14 move second child to first child ( temp float)
0:14 direct index ( temp float)
0:14 direct index ( temp 2-component vector of float)
0:14 'cull' ( out 2-element array of 2-component vector of float)
0:14 Constant:
0:14 1 (const int)
0:14 Constant:
0:14 1 (const int)
0:14 Constant:
0:14 0.825000
0:4 Function Definition: main( ( temp void)
0:4 Function Parameters:
0:? Sequence
0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp void)
0:? 'pos' ( temp 4-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 move second child to first child ( temp 4-component vector of float)
0:? 'pos' ( out 4-component vector of float Position)
0:? 'pos' ( temp 4-component vector of float)
0:? Sequence
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:4 Constant:
0:4 0 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 0 (const int)
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:4 Constant:
0:4 1 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 0 (const int)
0:4 Constant:
0:4 1 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:4 Constant:
0:4 2 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 1 (const int)
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:4 Constant:
0:4 3 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 1 (const int)
0:4 Constant:
0:4 1 (const int)
0:? Sequence
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 4-element array of float CullDistance)
0:4 Constant:
0:4 0 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 0 (const int)
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 4-element array of float CullDistance)
0:4 Constant:
0:4 1 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 0 (const int)
0:4 Constant:
0:4 1 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 4-element array of float CullDistance)
0:4 Constant:
0:4 2 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 1 (const int)
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 4-element array of float CullDistance)
0:4 Constant:
0:4 3 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 1 (const int)
0:4 Constant:
0:4 1 (const int)
0:? Linker Objects
0:? 'pos' ( out 4-component vector of float Position)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:? 'cull' ( out 4-element array of float CullDistance)
Linked vertex stage:
Shader version: 500
0:? Sequence
0:4 Function Definition: @main(vf4;vf2[2];vf2[2]; ( temp void)
0:4 Function Parameters:
0:4 'pos' ( out 4-component vector of float)
0:4 'clip' ( out 2-element array of 2-component vector of float)
0:4 'cull' ( out 2-element array of 2-component vector of float)
0:? Sequence
0:5 move second child to first child ( temp 4-component vector of float)
0:5 'pos' ( out 4-component vector of float)
0:5 Constant:
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:6 move second child to first child ( temp float)
0:6 direct index ( temp float)
0:6 direct index ( temp 2-component vector of float)
0:6 'clip' ( out 2-element array of 2-component vector of float)
0:6 Constant:
0:6 0 (const int)
0:6 Constant:
0:6 0 (const int)
0:6 Constant:
0:6 0.500000
0:7 move second child to first child ( temp float)
0:7 direct index ( temp float)
0:7 direct index ( temp 2-component vector of float)
0:7 'clip' ( out 2-element array of 2-component vector of float)
0:7 Constant:
0:7 0 (const int)
0:7 Constant:
0:7 1 (const int)
0:7 Constant:
0:7 0.600000
0:8 move second child to first child ( temp float)
0:8 direct index ( temp float)
0:8 direct index ( temp 2-component vector of float)
0:8 'clip' ( out 2-element array of 2-component vector of float)
0:8 Constant:
0:8 1 (const int)
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 0.700000
0:9 move second child to first child ( temp float)
0:9 direct index ( temp float)
0:9 direct index ( temp 2-component vector of float)
0:9 'clip' ( out 2-element array of 2-component vector of float)
0:9 Constant:
0:9 1 (const int)
0:9 Constant:
0:9 1 (const int)
0:9 Constant:
0:9 0.800000
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 'cull' ( out 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0.525000
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 2-component vector of float)
0:12 'cull' ( out 2-element array of 2-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 0.625000
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:13 'cull' ( out 2-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.725000
0:14 move second child to first child ( temp float)
0:14 direct index ( temp float)
0:14 direct index ( temp 2-component vector of float)
0:14 'cull' ( out 2-element array of 2-component vector of float)
0:14 Constant:
0:14 1 (const int)
0:14 Constant:
0:14 1 (const int)
0:14 Constant:
0:14 0.825000
0:4 Function Definition: main( ( temp void)
0:4 Function Parameters:
0:? Sequence
0:4 Function Call: @main(vf4;vf2[2];vf2[2]; ( temp void)
0:? 'pos' ( temp 4-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 move second child to first child ( temp 4-component vector of float)
0:? 'pos' ( out 4-component vector of float Position)
0:? 'pos' ( temp 4-component vector of float)
0:? Sequence
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:4 Constant:
0:4 0 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 0 (const int)
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:4 Constant:
0:4 1 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 0 (const int)
0:4 Constant:
0:4 1 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:4 Constant:
0:4 2 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 1 (const int)
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:4 Constant:
0:4 3 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'clip' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 1 (const int)
0:4 Constant:
0:4 1 (const int)
0:? Sequence
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 4-element array of float CullDistance)
0:4 Constant:
0:4 0 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 0 (const int)
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 4-element array of float CullDistance)
0:4 Constant:
0:4 1 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 0 (const int)
0:4 Constant:
0:4 1 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 4-element array of float CullDistance)
0:4 Constant:
0:4 2 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 1 (const int)
0:4 Constant:
0:4 0 (const int)
0:4 move second child to first child ( temp float)
0:4 direct index ( temp float)
0:? 'cull' ( out 4-element array of float CullDistance)
0:4 Constant:
0:4 3 (const int)
0:4 direct index ( temp float)
0:4 direct index ( temp 2-component vector of float)
0:? 'cull' ( temp 2-element array of 2-component vector of float)
0:4 Constant:
0:4 1 (const int)
0:4 Constant:
0:4 1 (const int)
0:? Linker Objects
0:? 'pos' ( out 4-component vector of float Position)
0:? 'clip' ( out 4-element array of float ClipDistance)
0:? 'cull' ( out 4-element array of float CullDistance)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 89
Capability Shader
Capability ClipDistance
Capability CullDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 55 60 76
Source HLSL 500
Name 4 "main"
Name 18 "@main(vf4;vf2[2];vf2[2];"
Name 15 "pos"
Name 16 "clip"
Name 17 "cull"
Name 44 "pos"
Name 45 "clip"
Name 46 "cull"
Name 47 "param"
Name 48 "param"
Name 49 "param"
Name 55 "pos"
Name 60 "clip"
Name 76 "cull"
Decorate 55(pos) BuiltIn Position
Decorate 60(clip) BuiltIn ClipDistance
Decorate 76(cull) BuiltIn CullDistance
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeVector 6(float) 2
10: TypeInt 32 0
11: 10(int) Constant 2
12: TypeArray 9(fvec2) 11
13: TypePointer Function 12
14: TypeFunction 2 8(ptr) 13(ptr) 13(ptr)
20: 6(float) Constant 1065353216
21: 7(fvec4) ConstantComposite 20 20 20 20
22: TypeInt 32 1
23: 22(int) Constant 0
24: 6(float) Constant 1056964608
25: 10(int) Constant 0
26: TypePointer Function 6(float)
28: 6(float) Constant 1058642330
29: 10(int) Constant 1
31: 22(int) Constant 1
32: 6(float) Constant 1060320051
34: 6(float) Constant 1061997773
36: 6(float) Constant 1057384038
38: 6(float) Constant 1059061760
40: 6(float) Constant 1060739482
42: 6(float) Constant 1062417203
54: TypePointer Output 7(fvec4)
55(pos): 54(ptr) Variable Output
57: 10(int) Constant 4
58: TypeArray 6(float) 57
59: TypePointer Output 58
60(clip): 59(ptr) Variable Output
63: TypePointer Output 6(float)
68: 22(int) Constant 2
72: 22(int) Constant 3
76(cull): 59(ptr) Variable Output
4(main): 2 Function None 3
5: Label
44(pos): 8(ptr) Variable Function
45(clip): 13(ptr) Variable Function
46(cull): 13(ptr) Variable Function
47(param): 8(ptr) Variable Function
48(param): 13(ptr) Variable Function
49(param): 13(ptr) Variable Function
50: 2 FunctionCall 18(@main(vf4;vf2[2];vf2[2];) 47(param) 48(param) 49(param)
51: 7(fvec4) Load 47(param)
Store 44(pos) 51
52: 12 Load 48(param)
Store 45(clip) 52
53: 12 Load 49(param)
Store 46(cull) 53
56: 7(fvec4) Load 44(pos)
Store 55(pos) 56
61: 26(ptr) AccessChain 45(clip) 23 25
62: 6(float) Load 61
64: 63(ptr) AccessChain 60(clip) 23
Store 64 62
65: 26(ptr) AccessChain 45(clip) 23 29
66: 6(float) Load 65
67: 63(ptr) AccessChain 60(clip) 31
Store 67 66
69: 26(ptr) AccessChain 45(clip) 31 25
70: 6(float) Load 69
71: 63(ptr) AccessChain 60(clip) 68
Store 71 70
73: 26(ptr) AccessChain 45(clip) 31 29
74: 6(float) Load 73
75: 63(ptr) AccessChain 60(clip) 72
Store 75 74
77: 26(ptr) AccessChain 46(cull) 23 25
78: 6(float) Load 77
79: 63(ptr) AccessChain 76(cull) 23
Store 79 78
80: 26(ptr) AccessChain 46(cull) 23 29
81: 6(float) Load 80
82: 63(ptr) AccessChain 76(cull) 31
Store 82 81
83: 26(ptr) AccessChain 46(cull) 31 25
84: 6(float) Load 83
85: 63(ptr) AccessChain 76(cull) 68
Store 85 84
86: 26(ptr) AccessChain 46(cull) 31 29
87: 6(float) Load 86
88: 63(ptr) AccessChain 76(cull) 72
Store 88 87
Return
FunctionEnd
18(@main(vf4;vf2[2];vf2[2];): 2 Function None 14
15(pos): 8(ptr) FunctionParameter
16(clip): 13(ptr) FunctionParameter
17(cull): 13(ptr) FunctionParameter
19: Label
Store 15(pos) 21
27: 26(ptr) AccessChain 16(clip) 23 25
Store 27 24
30: 26(ptr) AccessChain 16(clip) 23 29
Store 30 28
33: 26(ptr) AccessChain 16(clip) 31 25
Store 33 32
35: 26(ptr) AccessChain 16(clip) 31 29
Store 35 34
37: 26(ptr) AccessChain 17(cull) 23 25
Store 37 36
39: 26(ptr) AccessChain 17(cull) 23 29
Store 39 38
41: 26(ptr) AccessChain 17(cull) 31 25
Store 41 40
43: 26(ptr) AccessChain 17(cull) 31 29
Store 43 42
Return
FunctionEnd

View File

@@ -0,0 +1,229 @@
hlsl.clipdistance-3.vert
Shader version: 500
0:? Sequence
0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp void)
0:4 Function Parameters:
0:4 'pos' ( out 4-component vector of float)
0:4 'clip' ( out 2-element array of float)
0:4 'cull' ( out 2-element array of float)
0:? Sequence
0:5 move second child to first child ( temp 4-component vector of float)
0:5 'pos' ( out 4-component vector of float)
0:5 Constant:
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:6 move second child to first child ( temp float)
0:6 direct index ( temp float)
0:6 'clip' ( out 2-element array of float)
0:6 Constant:
0:6 0 (const int)
0:6 Constant:
0:6 0.500000
0:7 move second child to first child ( temp float)
0:7 direct index ( temp float)
0:7 'clip' ( out 2-element array of float)
0:7 Constant:
0:7 1 (const int)
0:7 Constant:
0:7 0.600000
0:9 move second child to first child ( temp float)
0:9 direct index ( temp float)
0:9 'cull' ( out 2-element array of float)
0:9 Constant:
0:9 0 (const int)
0:9 Constant:
0:9 0.525000
0:10 move second child to first child ( temp float)
0:10 direct index ( temp float)
0:10 'cull' ( out 2-element array of float)
0:10 Constant:
0:10 1 (const int)
0:10 Constant:
0:10 0.625000
0:4 Function Definition: main( ( temp void)
0:4 Function Parameters:
0:? Sequence
0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp void)
0:? 'pos' ( temp 4-component vector of float)
0:? 'clip' ( temp 2-element array of float)
0:? 'cull' ( temp 2-element array of float)
0:4 move second child to first child ( temp 4-component vector of float)
0:? 'pos' ( out 4-component vector of float Position)
0:? 'pos' ( temp 4-component vector of float)
0:? Sequence
0:4 move second child to first child ( temp 2-element array of float)
0:? 'clip' ( out 2-element array of float ClipDistance)
0:? 'clip' ( temp 2-element array of float)
0:? Sequence
0:4 move second child to first child ( temp 2-element array of float)
0:? 'cull' ( out 2-element array of float CullDistance)
0:? 'cull' ( temp 2-element array of float)
0:? Linker Objects
0:? 'pos' ( out 4-component vector of float Position)
0:? 'clip' ( out 2-element array of float ClipDistance)
0:? 'cull' ( out 2-element array of float CullDistance)
Linked vertex stage:
Shader version: 500
0:? Sequence
0:4 Function Definition: @main(vf4;f1[2];f1[2]; ( temp void)
0:4 Function Parameters:
0:4 'pos' ( out 4-component vector of float)
0:4 'clip' ( out 2-element array of float)
0:4 'cull' ( out 2-element array of float)
0:? Sequence
0:5 move second child to first child ( temp 4-component vector of float)
0:5 'pos' ( out 4-component vector of float)
0:5 Constant:
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:5 1.000000
0:6 move second child to first child ( temp float)
0:6 direct index ( temp float)
0:6 'clip' ( out 2-element array of float)
0:6 Constant:
0:6 0 (const int)
0:6 Constant:
0:6 0.500000
0:7 move second child to first child ( temp float)
0:7 direct index ( temp float)
0:7 'clip' ( out 2-element array of float)
0:7 Constant:
0:7 1 (const int)
0:7 Constant:
0:7 0.600000
0:9 move second child to first child ( temp float)
0:9 direct index ( temp float)
0:9 'cull' ( out 2-element array of float)
0:9 Constant:
0:9 0 (const int)
0:9 Constant:
0:9 0.525000
0:10 move second child to first child ( temp float)
0:10 direct index ( temp float)
0:10 'cull' ( out 2-element array of float)
0:10 Constant:
0:10 1 (const int)
0:10 Constant:
0:10 0.625000
0:4 Function Definition: main( ( temp void)
0:4 Function Parameters:
0:? Sequence
0:4 Function Call: @main(vf4;f1[2];f1[2]; ( temp void)
0:? 'pos' ( temp 4-component vector of float)
0:? 'clip' ( temp 2-element array of float)
0:? 'cull' ( temp 2-element array of float)
0:4 move second child to first child ( temp 4-component vector of float)
0:? 'pos' ( out 4-component vector of float Position)
0:? 'pos' ( temp 4-component vector of float)
0:? Sequence
0:4 move second child to first child ( temp 2-element array of float)
0:? 'clip' ( out 2-element array of float ClipDistance)
0:? 'clip' ( temp 2-element array of float)
0:? Sequence
0:4 move second child to first child ( temp 2-element array of float)
0:? 'cull' ( out 2-element array of float CullDistance)
0:? 'cull' ( temp 2-element array of float)
0:? Linker Objects
0:? 'pos' ( out 4-component vector of float Position)
0:? 'clip' ( out 2-element array of float ClipDistance)
0:? 'cull' ( out 2-element array of float CullDistance)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 51
Capability Shader
Capability ClipDistance
Capability CullDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 44 47 49
Source HLSL 500
Name 4 "main"
Name 17 "@main(vf4;f1[2];f1[2];"
Name 14 "pos"
Name 15 "clip"
Name 16 "cull"
Name 33 "pos"
Name 34 "clip"
Name 35 "cull"
Name 36 "param"
Name 37 "param"
Name 38 "param"
Name 44 "pos"
Name 47 "clip"
Name 49 "cull"
Decorate 44(pos) BuiltIn Position
Decorate 47(clip) BuiltIn ClipDistance
Decorate 49(cull) BuiltIn CullDistance
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypePointer Function 7(fvec4)
9: TypeInt 32 0
10: 9(int) Constant 2
11: TypeArray 6(float) 10
12: TypePointer Function 11
13: TypeFunction 2 8(ptr) 12(ptr) 12(ptr)
19: 6(float) Constant 1065353216
20: 7(fvec4) ConstantComposite 19 19 19 19
21: TypeInt 32 1
22: 21(int) Constant 0
23: 6(float) Constant 1056964608
24: TypePointer Function 6(float)
26: 21(int) Constant 1
27: 6(float) Constant 1058642330
29: 6(float) Constant 1057384038
31: 6(float) Constant 1059061760
43: TypePointer Output 7(fvec4)
44(pos): 43(ptr) Variable Output
46: TypePointer Output 11
47(clip): 46(ptr) Variable Output
49(cull): 46(ptr) Variable Output
4(main): 2 Function None 3
5: Label
33(pos): 8(ptr) Variable Function
34(clip): 12(ptr) Variable Function
35(cull): 12(ptr) Variable Function
36(param): 8(ptr) Variable Function
37(param): 12(ptr) Variable Function
38(param): 12(ptr) Variable Function
39: 2 FunctionCall 17(@main(vf4;f1[2];f1[2];) 36(param) 37(param) 38(param)
40: 7(fvec4) Load 36(param)
Store 33(pos) 40
41: 11 Load 37(param)
Store 34(clip) 41
42: 11 Load 38(param)
Store 35(cull) 42
45: 7(fvec4) Load 33(pos)
Store 44(pos) 45
48: 11 Load 34(clip)
Store 47(clip) 48
50: 11 Load 35(cull)
Store 49(cull) 50
Return
FunctionEnd
17(@main(vf4;f1[2];f1[2];): 2 Function None 13
14(pos): 8(ptr) FunctionParameter
15(clip): 12(ptr) FunctionParameter
16(cull): 12(ptr) FunctionParameter
18: Label
Store 14(pos) 20
25: 24(ptr) AccessChain 15(clip) 22
Store 25 23
28: 24(ptr) AccessChain 15(clip) 26
Store 28 27
30: 24(ptr) AccessChain 16(cull) 22
Store 30 29
32: 24(ptr) AccessChain 16(cull) 26
Store 32 31
Return
FunctionEnd

View File

@@ -0,0 +1,386 @@
hlsl.clipdistance-4.vert
Shader version: 500
0:? Sequence
0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Function Parameters:
0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position})
0:? Sequence
0:13 move second child to first child ( temp 4-component vector of float)
0:13 Position: direct index for structure ( temp 4-component vector of float)
0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.000000
0:13 0.000000
0:13 0.000000
0:13 0.000000
0:15 move second child to first child ( temp float)
0:15 direct index ( temp float)
0:15 ClipRect: direct index for structure ( temp 4-component vector of float)
0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:15 Constant:
0:15 1 (const int)
0:15 Constant:
0:15 0 (const int)
0:15 Constant:
0:15 1.000000
0:16 move second child to first child ( temp float)
0:16 direct index ( temp float)
0:16 ClipRect: direct index for structure ( temp 4-component vector of float)
0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 2.000000
0:17 move second child to first child ( temp float)
0:17 direct index ( temp float)
0:17 ClipRect: direct index for structure ( temp 4-component vector of float)
0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 2 (const int)
0:17 Constant:
0:17 3.000000
0:18 move second child to first child ( temp float)
0:18 direct index ( temp float)
0:18 ClipRect: direct index for structure ( temp 4-component vector of float)
0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 3 (const int)
0:18 Constant:
0:18 4.000000
0:20 Branch: Return with expression
0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Function Definition: main( ( temp void)
0:11 Function Parameters:
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 Position: direct index for structure ( temp 4-component vector of float)
0:? 'v' ( temp structure{ temp 4-component vector of float Position})
0:11 Constant:
0:11 0 (const int)
0:? 'Position' (layout( location=0) in 4-component vector of float)
0:11 Sequence
0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:? 'v' ( temp structure{ temp 4-component vector of float Position})
0:11 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput_Position' ( out 4-component vector of float Position)
0:11 Position: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 0 (const int)
0:? Sequence
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( temp float)
0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( temp float)
0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( temp float)
0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( temp float)
0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 3 (const int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{})
0:? 'Position' (layout( location=0) in 4-component vector of float)
Linked vertex stage:
Shader version: 500
0:? Sequence
0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Function Parameters:
0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position})
0:? Sequence
0:13 move second child to first child ( temp 4-component vector of float)
0:13 Position: direct index for structure ( temp 4-component vector of float)
0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.000000
0:13 0.000000
0:13 0.000000
0:13 0.000000
0:15 move second child to first child ( temp float)
0:15 direct index ( temp float)
0:15 ClipRect: direct index for structure ( temp 4-component vector of float)
0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:15 Constant:
0:15 1 (const int)
0:15 Constant:
0:15 0 (const int)
0:15 Constant:
0:15 1.000000
0:16 move second child to first child ( temp float)
0:16 direct index ( temp float)
0:16 ClipRect: direct index for structure ( temp 4-component vector of float)
0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 2.000000
0:17 move second child to first child ( temp float)
0:17 direct index ( temp float)
0:17 ClipRect: direct index for structure ( temp 4-component vector of float)
0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 2 (const int)
0:17 Constant:
0:17 3.000000
0:18 move second child to first child ( temp float)
0:18 direct index ( temp float)
0:18 ClipRect: direct index for structure ( temp 4-component vector of float)
0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 3 (const int)
0:18 Constant:
0:18 4.000000
0:20 Branch: Return with expression
0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Function Definition: main( ( temp void)
0:11 Function Parameters:
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 Position: direct index for structure ( temp 4-component vector of float)
0:? 'v' ( temp structure{ temp 4-component vector of float Position})
0:11 Constant:
0:11 0 (const int)
0:? 'Position' (layout( location=0) in 4-component vector of float)
0:11 Sequence
0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:? 'v' ( temp structure{ temp 4-component vector of float Position})
0:11 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput_Position' ( out 4-component vector of float Position)
0:11 Position: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 0 (const int)
0:? Sequence
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( temp float)
0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( temp float)
0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( temp float)
0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( temp float)
0:11 ClipRect: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 4-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 3 (const int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{})
0:? 'Position' (layout( location=0) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 75
Capability Shader
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 43 50 56 74
Source HLSL 500
Name 4 "main"
Name 8 "VS_INPUT"
MemberName 8(VS_INPUT) 0 "Position"
Name 9 "VS_OUTPUT"
MemberName 9(VS_OUTPUT) 0 "Position"
MemberName 9(VS_OUTPUT) 1 "ClipRect"
Name 12 "@main(struct-VS_INPUT-vf41;"
Name 11 "v"
Name 15 "Output"
Name 41 "v"
Name 43 "Position"
Name 46 "flattenTemp"
Name 50 "@entryPointOutput_Position"
Name 56 "@entryPointOutput_ClipRect"
Name 72 "VS_OUTPUT"
Name 74 "@entryPointOutput"
Decorate 43(Position) Location 0
Decorate 50(@entryPointOutput_Position) BuiltIn Position
Decorate 56(@entryPointOutput_ClipRect) BuiltIn ClipDistance
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(VS_INPUT): TypeStruct 7(fvec4)
9(VS_OUTPUT): TypeStruct 7(fvec4) 7(fvec4)
10: TypeFunction 9(VS_OUTPUT) 8(VS_INPUT)
14: TypePointer Function 9(VS_OUTPUT)
16: TypeInt 32 1
17: 16(int) Constant 0
18: 6(float) Constant 0
19: 7(fvec4) ConstantComposite 18 18 18 18
20: TypePointer Function 7(fvec4)
22: 16(int) Constant 1
23: 6(float) Constant 1065353216
24: TypeInt 32 0
25: 24(int) Constant 0
26: TypePointer Function 6(float)
28: 6(float) Constant 1073741824
29: 24(int) Constant 1
31: 6(float) Constant 1077936128
32: 24(int) Constant 2
34: 6(float) Constant 1082130432
35: 24(int) Constant 3
40: TypePointer Function 8(VS_INPUT)
42: TypePointer Input 7(fvec4)
43(Position): 42(ptr) Variable Input
49: TypePointer Output 7(fvec4)
50(@entryPointOutput_Position): 49(ptr) Variable Output
53: 24(int) Constant 4
54: TypeArray 6(float) 53
55: TypePointer Output 54
56(@entryPointOutput_ClipRect): 55(ptr) Variable Output
59: TypePointer Output 6(float)
64: 16(int) Constant 2
68: 16(int) Constant 3
72(VS_OUTPUT): TypeStruct
73: TypePointer Output 72(VS_OUTPUT)
74(@entryPointOutput): 73(ptr) Variable Output
4(main): 2 Function None 3
5: Label
41(v): 40(ptr) Variable Function
46(flattenTemp): 14(ptr) Variable Function
44: 7(fvec4) Load 43(Position)
45: 20(ptr) AccessChain 41(v) 17
Store 45 44
47: 8(VS_INPUT) Load 41(v)
48:9(VS_OUTPUT) FunctionCall 12(@main(struct-VS_INPUT-vf41;) 47
Store 46(flattenTemp) 48
51: 20(ptr) AccessChain 46(flattenTemp) 17
52: 7(fvec4) Load 51
Store 50(@entryPointOutput_Position) 52
57: 26(ptr) AccessChain 46(flattenTemp) 22 25
58: 6(float) Load 57
60: 59(ptr) AccessChain 56(@entryPointOutput_ClipRect) 17
Store 60 58
61: 26(ptr) AccessChain 46(flattenTemp) 22 29
62: 6(float) Load 61
63: 59(ptr) AccessChain 56(@entryPointOutput_ClipRect) 22
Store 63 62
65: 26(ptr) AccessChain 46(flattenTemp) 22 32
66: 6(float) Load 65
67: 59(ptr) AccessChain 56(@entryPointOutput_ClipRect) 64
Store 67 66
69: 26(ptr) AccessChain 46(flattenTemp) 22 35
70: 6(float) Load 69
71: 59(ptr) AccessChain 56(@entryPointOutput_ClipRect) 68
Store 71 70
Return
FunctionEnd
12(@main(struct-VS_INPUT-vf41;):9(VS_OUTPUT) Function None 10
11(v): 8(VS_INPUT) FunctionParameter
13: Label
15(Output): 14(ptr) Variable Function
21: 20(ptr) AccessChain 15(Output) 17
Store 21 19
27: 26(ptr) AccessChain 15(Output) 22 25
Store 27 23
30: 26(ptr) AccessChain 15(Output) 22 29
Store 30 28
33: 26(ptr) AccessChain 15(Output) 22 32
Store 33 31
36: 26(ptr) AccessChain 15(Output) 22 35
Store 36 34
37:9(VS_OUTPUT) Load 15(Output)
ReturnValue 37
FunctionEnd

View File

@@ -0,0 +1,435 @@
hlsl.clipdistance-5.vert
Shader version: 500
0:? Sequence
0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Function Parameters:
0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position})
0:? Sequence
0:13 move second child to first child ( temp 4-component vector of float)
0:13 Position: direct index for structure ( temp 4-component vector of float)
0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.000000
0:13 0.000000
0:13 0.000000
0:13 0.000000
0:15 move second child to first child ( temp float)
0:15 direct index ( temp float)
0:15 direct index ( temp 2-component vector of float)
0:15 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:15 Constant:
0:15 1 (const int)
0:15 Constant:
0:15 0 (const int)
0:15 Constant:
0:15 0 (const int)
0:15 Constant:
0:15 1.000000
0:16 move second child to first child ( temp float)
0:16 direct index ( temp float)
0:16 direct index ( temp 2-component vector of float)
0:16 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 2.000000
0:17 move second child to first child ( temp float)
0:17 direct index ( temp float)
0:17 direct index ( temp 2-component vector of float)
0:17 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 0 (const int)
0:17 Constant:
0:17 3.000000
0:18 move second child to first child ( temp float)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 4.000000
0:20 Branch: Return with expression
0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Function Definition: main( ( temp void)
0:11 Function Parameters:
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 Position: direct index for structure ( temp 4-component vector of float)
0:? 'v' ( temp structure{ temp 4-component vector of float Position})
0:11 Constant:
0:11 0 (const int)
0:? 'Position' (layout( location=0) in 4-component vector of float)
0:11 Sequence
0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:? 'v' ( temp structure{ temp 4-component vector of float Position})
0:11 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput_Position' ( out 4-component vector of float Position)
0:11 Position: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 0 (const int)
0:? Sequence
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{})
0:? 'Position' (layout( location=0) in 4-component vector of float)
Linked vertex stage:
Shader version: 500
0:? Sequence
0:11 Function Definition: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Function Parameters:
0:11 'v' ( const (read only) structure{ temp 4-component vector of float Position})
0:? Sequence
0:13 move second child to first child ( temp 4-component vector of float)
0:13 Position: direct index for structure ( temp 4-component vector of float)
0:13 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0.000000
0:13 0.000000
0:13 0.000000
0:13 0.000000
0:15 move second child to first child ( temp float)
0:15 direct index ( temp float)
0:15 direct index ( temp 2-component vector of float)
0:15 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:15 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:15 Constant:
0:15 1 (const int)
0:15 Constant:
0:15 0 (const int)
0:15 Constant:
0:15 0 (const int)
0:15 Constant:
0:15 1.000000
0:16 move second child to first child ( temp float)
0:16 direct index ( temp float)
0:16 direct index ( temp 2-component vector of float)
0:16 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:16 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 2.000000
0:17 move second child to first child ( temp float)
0:17 direct index ( temp float)
0:17 direct index ( temp 2-component vector of float)
0:17 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:17 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 0 (const int)
0:17 Constant:
0:17 3.000000
0:18 move second child to first child ( temp float)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 4.000000
0:20 Branch: Return with expression
0:20 'Output' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Function Definition: main( ( temp void)
0:11 Function Parameters:
0:? Sequence
0:11 Sequence
0:11 move second child to first child ( temp 4-component vector of float)
0:11 Position: direct index for structure ( temp 4-component vector of float)
0:? 'v' ( temp structure{ temp 4-component vector of float Position})
0:11 Constant:
0:11 0 (const int)
0:? 'Position' (layout( location=0) in 4-component vector of float)
0:11 Sequence
0:11 move second child to first child ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Function Call: @main(struct-VS_INPUT-vf41; ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:? 'v' ( temp structure{ temp 4-component vector of float Position})
0:11 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput_Position' ( out 4-component vector of float Position)
0:11 Position: direct index for structure ( temp 4-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 0 (const int)
0:? Sequence
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:? '@entryPointOutput_ClipRect' ( out 4-element array of float ClipDistance)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 ClipRect: direct index for structure ( temp 2-element array of 2-component vector of float)
0:11 'flattenTemp' ( temp structure{ temp 4-component vector of float Position, temp 2-element array of 2-component vector of float ClipRect})
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out structure{})
0:? 'Position' (layout( location=0) in 4-component vector of float)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 76
Capability Shader
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 44 51 57 75
Source HLSL 500
Name 4 "main"
Name 8 "VS_INPUT"
MemberName 8(VS_INPUT) 0 "Position"
Name 13 "VS_OUTPUT"
MemberName 13(VS_OUTPUT) 0 "Position"
MemberName 13(VS_OUTPUT) 1 "ClipRect"
Name 16 "@main(struct-VS_INPUT-vf41;"
Name 15 "v"
Name 19 "Output"
Name 42 "v"
Name 44 "Position"
Name 47 "flattenTemp"
Name 51 "@entryPointOutput_Position"
Name 57 "@entryPointOutput_ClipRect"
Name 73 "VS_OUTPUT"
Name 75 "@entryPointOutput"
Decorate 44(Position) Location 0
Decorate 51(@entryPointOutput_Position) BuiltIn Position
Decorate 57(@entryPointOutput_ClipRect) BuiltIn ClipDistance
Decorate 75(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8(VS_INPUT): TypeStruct 7(fvec4)
9: TypeVector 6(float) 2
10: TypeInt 32 0
11: 10(int) Constant 2
12: TypeArray 9(fvec2) 11
13(VS_OUTPUT): TypeStruct 7(fvec4) 12
14: TypeFunction 13(VS_OUTPUT) 8(VS_INPUT)
18: TypePointer Function 13(VS_OUTPUT)
20: TypeInt 32 1
21: 20(int) Constant 0
22: 6(float) Constant 0
23: 7(fvec4) ConstantComposite 22 22 22 22
24: TypePointer Function 7(fvec4)
26: 20(int) Constant 1
27: 6(float) Constant 1065353216
28: 10(int) Constant 0
29: TypePointer Function 6(float)
31: 6(float) Constant 1073741824
32: 10(int) Constant 1
34: 6(float) Constant 1077936128
36: 6(float) Constant 1082130432
41: TypePointer Function 8(VS_INPUT)
43: TypePointer Input 7(fvec4)
44(Position): 43(ptr) Variable Input
50: TypePointer Output 7(fvec4)
51(@entryPointOutput_Position): 50(ptr) Variable Output
54: 10(int) Constant 4
55: TypeArray 6(float) 54
56: TypePointer Output 55
57(@entryPointOutput_ClipRect): 56(ptr) Variable Output
60: TypePointer Output 6(float)
65: 20(int) Constant 2
69: 20(int) Constant 3
73(VS_OUTPUT): TypeStruct
74: TypePointer Output 73(VS_OUTPUT)
75(@entryPointOutput): 74(ptr) Variable Output
4(main): 2 Function None 3
5: Label
42(v): 41(ptr) Variable Function
47(flattenTemp): 18(ptr) Variable Function
45: 7(fvec4) Load 44(Position)
46: 24(ptr) AccessChain 42(v) 21
Store 46 45
48: 8(VS_INPUT) Load 42(v)
49:13(VS_OUTPUT) FunctionCall 16(@main(struct-VS_INPUT-vf41;) 48
Store 47(flattenTemp) 49
52: 24(ptr) AccessChain 47(flattenTemp) 21
53: 7(fvec4) Load 52
Store 51(@entryPointOutput_Position) 53
58: 29(ptr) AccessChain 47(flattenTemp) 26 21 28
59: 6(float) Load 58
61: 60(ptr) AccessChain 57(@entryPointOutput_ClipRect) 21
Store 61 59
62: 29(ptr) AccessChain 47(flattenTemp) 26 21 32
63: 6(float) Load 62
64: 60(ptr) AccessChain 57(@entryPointOutput_ClipRect) 26
Store 64 63
66: 29(ptr) AccessChain 47(flattenTemp) 26 26 28
67: 6(float) Load 66
68: 60(ptr) AccessChain 57(@entryPointOutput_ClipRect) 65
Store 68 67
70: 29(ptr) AccessChain 47(flattenTemp) 26 26 32
71: 6(float) Load 70
72: 60(ptr) AccessChain 57(@entryPointOutput_ClipRect) 69
Store 72 71
Return
FunctionEnd
16(@main(struct-VS_INPUT-vf41;):13(VS_OUTPUT) Function None 14
15(v): 8(VS_INPUT) FunctionParameter
17: Label
19(Output): 18(ptr) Variable Function
25: 24(ptr) AccessChain 19(Output) 21
Store 25 23
30: 29(ptr) AccessChain 19(Output) 26 21 28
Store 30 27
33: 29(ptr) AccessChain 19(Output) 26 21 32
Store 33 31
35: 29(ptr) AccessChain 19(Output) 26 26 28
Store 35 34
37: 29(ptr) AccessChain 19(Output) 26 26 32
Store 37 36
38:13(VS_OUTPUT) Load 19(Output)
ReturnValue 38
FunctionEnd

View File

@@ -58,7 +58,7 @@ gl_FragCoord origin is upper left
0:13 Constant:
0:13 0 (const int)
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 0 (const int)
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:13 Constant:
0:13 2 (const int)
0:13 i2: direct index for structure ( 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 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, flat temp 2-component vector of int i2})
0:13 Constant:
0:13 1 (const int)
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:? Linker Objects
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)
@@ -148,7 +148,7 @@ gl_FragCoord origin is upper left
0:13 Constant:
0:13 0 (const int)
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 0 (const int)
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:13 Constant:
0:13 2 (const int)
0:13 i2: direct index for structure ( 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 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, flat temp 2-component vector of int i2})
0:13 Constant:
0:13 1 (const int)
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:? Linker Objects
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)
// Module Version 10000
@@ -207,6 +207,7 @@ gl_FragCoord origin is upper left
Name 63 "i_fragCoord"
Name 73 "@entryPointOutput"
Name 74 "param"
MemberDecorate 54(InParam) 1 Flat
Decorate 56(i) Location 0
Decorate 63(i_fragCoord) BuiltIn FragCoord
Decorate 73(@entryPointOutput) Location 0

View File

@@ -260,7 +260,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:13 move second child to first child ( temp int)
0:? 'sample' ( temp int)
0:? 'sample' (layout( location=0) in int)
0:? 'sample' (layout( location=0) flat in int)
0:13 Sequence
0:13 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -284,7 +284,7 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
0:? 'Color' (layout( location=0) out 4-component vector of float)
0:? 'Depth' ( out float FragDepth)
0:? 'sample' (layout( location=0) in int)
0:? 'sample' (layout( location=0) flat in int)
Linked fragment stage:
@@ -551,7 +551,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:13 move second child to first child ( temp int)
0:? 'sample' ( temp int)
0:? 'sample' (layout( location=0) in int)
0:? 'sample' (layout( location=0) flat in int)
0:13 Sequence
0:13 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:13 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
@@ -575,7 +575,7 @@ gl_FragCoord origin is upper left
0:? 'g_tTex2dmsf4a' ( uniform texture2DMSArray)
0:? 'Color' (layout( location=0) out 4-component vector of float)
0:? 'Depth' ( out float FragDepth)
0:? 'sample' (layout( location=0) in int)
0:? 'sample' (layout( location=0) flat in int)
// Module Version 10000
// Generated by (magic number): 80001
@@ -619,6 +619,7 @@ gl_FragCoord origin is upper left
Name 220 "g_sSamp"
Decorate 23(g_tTex2dmsf4) DescriptorSet 0
Decorate 142(g_tTex2dmsf4a) DescriptorSet 0
Decorate 204(sample) Flat
Decorate 204(sample) Location 0
Decorate 211(Color) Location 0
Decorate 215(Depth) BuiltIn FragDepth

View File

@@ -2,11 +2,12 @@ hlsl.inoutquals.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: MyFunc(f1;f1;f1; ( temp void)
0:8 Function Definition: MyFunc(f1;f1;f1;f1; ( temp void)
0:8 Function Parameters:
0:8 'x' ( in float)
0:8 'y' ( out float)
0:8 'z' ( inout float)
0:8 'w' ( inout float)
0:? Sequence
0:9 move second child to first child ( temp float)
0:9 'y' ( out float)
@@ -18,71 +19,79 @@ gl_FragCoord origin is upper left
0:11 'x' ( in float)
0:11 Constant:
0:11 -1.000000
0:15 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Function Parameters:
0:15 'inpos' ( in 4-component vector of float)
0:15 'sampleMask' ( out int)
0:12 multiply second child into first child ( temp float)
0:12 'w' ( inout float)
0:12 Constant:
0:12 1.000000
0:16 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Function Parameters:
0:16 'inpos' ( in 4-component vector of float)
0:16 'sampleMask' ( out int)
0:? Sequence
0:18 Sequence
0:18 move second child to first child ( temp float)
0:18 'x' ( temp float)
0:18 Constant:
0:18 7.000000
0:18 move second child to first child ( temp float)
0:18 'z' ( temp float)
0:18 Constant:
0:18 3.000000
0:19 Function Call: MyFunc(f1;f1;f1; ( temp void)
0:19 'x' ( temp float)
0:19 'y' ( temp float)
0:19 'z' ( temp float)
0:21 move second child to first child ( temp 4-component vector of float)
0:21 Color: direct index for structure ( temp 4-component vector of float)
0:21 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:21 Constant:
0:21 0 (const int)
0:? Construct vec4 ( temp 4-component vector of float)
0:21 'x' ( temp float)
0:21 'y' ( temp float)
0:21 'z' ( temp float)
0:21 Constant:
0:21 1.000000
0:22 move second child to first child ( temp float)
0:22 Depth: direct index for structure ( temp float)
0:19 Sequence
0:19 move second child to first child ( temp float)
0:19 'x' ( temp float)
0:19 Constant:
0:19 7.000000
0:19 move second child to first child ( temp float)
0:19 'z' ( temp float)
0:19 Constant:
0:19 3.000000
0:20 Function Call: MyFunc(f1;f1;f1;f1; ( temp void)
0:20 'x' ( temp float)
0:20 'y' ( temp float)
0:20 'z' ( temp float)
0:20 direct index ( temp float)
0:20 'inpos' ( in 4-component vector of float)
0:20 Constant:
0:20 3 (const int)
0:22 move second child to first child ( temp 4-component vector of float)
0:22 Color: direct index for structure ( temp 4-component vector of float)
0:22 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:22 Constant:
0:22 1 (const int)
0:22 direct index ( temp float)
0:22 'inpos' ( in 4-component vector of float)
0:22 0 (const int)
0:? Construct vec4 ( temp 4-component vector of float)
0:22 'x' ( temp float)
0:22 'y' ( temp float)
0:22 'z' ( temp float)
0:22 Constant:
0:22 3 (const int)
0:24 Branch: Return with expression
0:24 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Function Definition: main( ( temp void)
0:15 Function Parameters:
0:22 1.000000
0:23 move second child to first child ( temp float)
0:23 Depth: direct index for structure ( temp float)
0:23 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:23 Constant:
0:23 1 (const int)
0:23 direct index ( temp float)
0:23 'inpos' ( in 4-component vector of float)
0:23 Constant:
0:23 3 (const int)
0:25 Branch: Return with expression
0:25 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Function Definition: main( ( temp void)
0:16 Function Parameters:
0:? Sequence
0:15 move second child to first child ( temp 4-component vector of float)
0:16 move second child to first child ( temp 4-component vector of float)
0:? 'inpos' ( temp 4-component vector of float)
0:? 'inpos' ( noperspective in 4-component vector of float FragCoord)
0:15 Sequence
0:15 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Sequence
0:16 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:? 'inpos' ( temp 4-component vector of float)
0:? 'sampleMask' ( temp int)
0:15 move second child to first child ( temp 4-component vector of float)
0:16 move second child to first child ( temp 4-component vector of float)
0:? 'Color' (layout( location=0) out 4-component vector of float)
0:15 Color: direct index for structure ( temp 4-component vector of float)
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Constant:
0:15 0 (const int)
0:15 move second child to first child ( temp float)
0:16 Color: direct index for structure ( temp 4-component vector of float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp float)
0:? 'Depth' ( out float FragDepth)
0:15 Depth: direct index for structure ( temp float)
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Constant:
0:15 1 (const int)
0:15 move second child to first child ( temp int)
0:16 Depth: direct index for structure ( temp float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp int)
0:? 'sampleMask' ( out int SampleMaskIn)
0:? 'sampleMask' ( temp int)
0:? Linker Objects
@@ -98,11 +107,12 @@ Linked fragment stage:
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:8 Function Definition: MyFunc(f1;f1;f1; ( temp void)
0:8 Function Definition: MyFunc(f1;f1;f1;f1; ( temp void)
0:8 Function Parameters:
0:8 'x' ( in float)
0:8 'y' ( out float)
0:8 'z' ( inout float)
0:8 'w' ( inout float)
0:? Sequence
0:9 move second child to first child ( temp float)
0:9 'y' ( out float)
@@ -114,71 +124,79 @@ gl_FragCoord origin is upper left
0:11 'x' ( in float)
0:11 Constant:
0:11 -1.000000
0:15 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Function Parameters:
0:15 'inpos' ( in 4-component vector of float)
0:15 'sampleMask' ( out int)
0:12 multiply second child into first child ( temp float)
0:12 'w' ( inout float)
0:12 Constant:
0:12 1.000000
0:16 Function Definition: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Function Parameters:
0:16 'inpos' ( in 4-component vector of float)
0:16 'sampleMask' ( out int)
0:? Sequence
0:18 Sequence
0:18 move second child to first child ( temp float)
0:18 'x' ( temp float)
0:18 Constant:
0:18 7.000000
0:18 move second child to first child ( temp float)
0:18 'z' ( temp float)
0:18 Constant:
0:18 3.000000
0:19 Function Call: MyFunc(f1;f1;f1; ( temp void)
0:19 'x' ( temp float)
0:19 'y' ( temp float)
0:19 'z' ( temp float)
0:21 move second child to first child ( temp 4-component vector of float)
0:21 Color: direct index for structure ( temp 4-component vector of float)
0:21 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:21 Constant:
0:21 0 (const int)
0:? Construct vec4 ( temp 4-component vector of float)
0:21 'x' ( temp float)
0:21 'y' ( temp float)
0:21 'z' ( temp float)
0:21 Constant:
0:21 1.000000
0:22 move second child to first child ( temp float)
0:22 Depth: direct index for structure ( temp float)
0:19 Sequence
0:19 move second child to first child ( temp float)
0:19 'x' ( temp float)
0:19 Constant:
0:19 7.000000
0:19 move second child to first child ( temp float)
0:19 'z' ( temp float)
0:19 Constant:
0:19 3.000000
0:20 Function Call: MyFunc(f1;f1;f1;f1; ( temp void)
0:20 'x' ( temp float)
0:20 'y' ( temp float)
0:20 'z' ( temp float)
0:20 direct index ( temp float)
0:20 'inpos' ( in 4-component vector of float)
0:20 Constant:
0:20 3 (const int)
0:22 move second child to first child ( temp 4-component vector of float)
0:22 Color: direct index for structure ( temp 4-component vector of float)
0:22 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:22 Constant:
0:22 1 (const int)
0:22 direct index ( temp float)
0:22 'inpos' ( in 4-component vector of float)
0:22 0 (const int)
0:? Construct vec4 ( temp 4-component vector of float)
0:22 'x' ( temp float)
0:22 'y' ( temp float)
0:22 'z' ( temp float)
0:22 Constant:
0:22 3 (const int)
0:24 Branch: Return with expression
0:24 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Function Definition: main( ( temp void)
0:15 Function Parameters:
0:22 1.000000
0:23 move second child to first child ( temp float)
0:23 Depth: direct index for structure ( temp float)
0:23 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:23 Constant:
0:23 1 (const int)
0:23 direct index ( temp float)
0:23 'inpos' ( in 4-component vector of float)
0:23 Constant:
0:23 3 (const int)
0:25 Branch: Return with expression
0:25 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Function Definition: main( ( temp void)
0:16 Function Parameters:
0:? Sequence
0:15 move second child to first child ( temp 4-component vector of float)
0:16 move second child to first child ( temp 4-component vector of float)
0:? 'inpos' ( temp 4-component vector of float)
0:? 'inpos' ( noperspective in 4-component vector of float FragCoord)
0:15 Sequence
0:15 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Sequence
0:16 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Function Call: @main(vf4;i1; ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:? 'inpos' ( temp 4-component vector of float)
0:? 'sampleMask' ( temp int)
0:15 move second child to first child ( temp 4-component vector of float)
0:16 move second child to first child ( temp 4-component vector of float)
0:? 'Color' (layout( location=0) out 4-component vector of float)
0:15 Color: direct index for structure ( temp 4-component vector of float)
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Constant:
0:15 0 (const int)
0:15 move second child to first child ( temp float)
0:16 Color: direct index for structure ( temp 4-component vector of float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp float)
0:? 'Depth' ( out float FragDepth)
0:15 Depth: direct index for structure ( temp float)
0:15 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:15 Constant:
0:15 1 (const int)
0:15 move second child to first child ( temp int)
0:16 Depth: direct index for structure ( temp float)
0:16 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth})
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp int)
0:? 'sampleMask' ( out int SampleMaskIn)
0:? 'sampleMask' ( temp int)
0:? Linker Objects
@@ -189,144 +207,157 @@ gl_FragCoord origin is upper left
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 80
// Id's are bound by 88
Capability Shader
Capability SampleRateShading
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 60 70 74 78
EntryPoint Fragment 4 "main" 68 78 82 86
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 12 "MyFunc(f1;f1;f1;"
Name 13 "MyFunc(f1;f1;f1;f1;"
Name 9 "x"
Name 10 "y"
Name 11 "z"
Name 18 "PS_OUTPUT"
MemberName 18(PS_OUTPUT) 0 "Color"
MemberName 18(PS_OUTPUT) 1 "Depth"
Name 22 "@main(vf4;i1;"
Name 20 "inpos"
Name 21 "sampleMask"
Name 27 "x"
Name 29 "z"
Name 31 "y"
Name 32 "param"
Name 34 "param"
Name 35 "param"
Name 41 "psout"
Name 58 "inpos"
Name 60 "inpos"
Name 62 "flattenTemp"
Name 63 "sampleMask"
Name 64 "param"
Name 66 "param"
Name 70 "Color"
Name 74 "Depth"
Name 78 "sampleMask"
Decorate 60(inpos) NoPerspective
Decorate 60(inpos) BuiltIn FragCoord
Decorate 70(Color) Location 0
Decorate 74(Depth) BuiltIn FragDepth
Decorate 78(sampleMask) BuiltIn SampleMask
Name 12 "w"
Name 19 "PS_OUTPUT"
MemberName 19(PS_OUTPUT) 0 "Color"
MemberName 19(PS_OUTPUT) 1 "Depth"
Name 23 "@main(vf4;i1;"
Name 21 "inpos"
Name 22 "sampleMask"
Name 31 "x"
Name 33 "z"
Name 35 "y"
Name 36 "param"
Name 38 "param"
Name 39 "param"
Name 41 "param"
Name 52 "psout"
Name 66 "inpos"
Name 68 "inpos"
Name 70 "flattenTemp"
Name 71 "sampleMask"
Name 72 "param"
Name 74 "param"
Name 78 "Color"
Name 82 "Depth"
Name 86 "sampleMask"
Decorate 68(inpos) NoPerspective
Decorate 68(inpos) BuiltIn FragCoord
Decorate 78(Color) Location 0
Decorate 82(Depth) BuiltIn FragDepth
Decorate 86(sampleMask) BuiltIn SampleMask
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypePointer Function 6(float)
8: TypeFunction 2 7(ptr) 7(ptr) 7(ptr)
14: TypeVector 6(float) 4
15: TypePointer Function 14(fvec4)
16: TypeInt 32 1
17: TypePointer Function 16(int)
18(PS_OUTPUT): TypeStruct 14(fvec4) 6(float)
19: TypeFunction 18(PS_OUTPUT) 15(ptr) 17(ptr)
26: 6(float) Constant 3212836864
28: 6(float) Constant 1088421888
30: 6(float) Constant 1077936128
40: TypePointer Function 18(PS_OUTPUT)
42: 16(int) Constant 0
46: 6(float) Constant 1065353216
49: 16(int) Constant 1
50: TypeInt 32 0
51: 50(int) Constant 3
59: TypePointer Input 14(fvec4)
60(inpos): 59(ptr) Variable Input
69: TypePointer Output 14(fvec4)
70(Color): 69(ptr) Variable Output
73: TypePointer Output 6(float)
74(Depth): 73(ptr) Variable Output
77: TypePointer Output 16(int)
78(sampleMask): 77(ptr) Variable Output
8: TypeFunction 2 7(ptr) 7(ptr) 7(ptr) 7(ptr)
15: TypeVector 6(float) 4
16: TypePointer Function 15(fvec4)
17: TypeInt 32 1
18: TypePointer Function 17(int)
19(PS_OUTPUT): TypeStruct 15(fvec4) 6(float)
20: TypeFunction 19(PS_OUTPUT) 16(ptr) 18(ptr)
27: 6(float) Constant 3212836864
28: 6(float) Constant 1065353216
32: 6(float) Constant 1088421888
34: 6(float) Constant 1077936128
42: TypeInt 32 0
43: 42(int) Constant 3
51: TypePointer Function 19(PS_OUTPUT)
53: 17(int) Constant 0
59: 17(int) Constant 1
67: TypePointer Input 15(fvec4)
68(inpos): 67(ptr) Variable Input
77: TypePointer Output 15(fvec4)
78(Color): 77(ptr) Variable Output
81: TypePointer Output 6(float)
82(Depth): 81(ptr) Variable Output
85: TypePointer Output 17(int)
86(sampleMask): 85(ptr) Variable Output
4(main): 2 Function None 3
5: Label
58(inpos): 15(ptr) Variable Function
62(flattenTemp): 40(ptr) Variable Function
63(sampleMask): 17(ptr) Variable Function
64(param): 15(ptr) Variable Function
66(param): 17(ptr) Variable Function
61: 14(fvec4) Load 60(inpos)
Store 58(inpos) 61
65: 14(fvec4) Load 58(inpos)
Store 64(param) 65
67:18(PS_OUTPUT) FunctionCall 22(@main(vf4;i1;) 64(param) 66(param)
68: 16(int) Load 66(param)
Store 63(sampleMask) 68
Store 62(flattenTemp) 67
71: 15(ptr) AccessChain 62(flattenTemp) 42
72: 14(fvec4) Load 71
Store 70(Color) 72
75: 7(ptr) AccessChain 62(flattenTemp) 49
76: 6(float) Load 75
Store 74(Depth) 76
79: 16(int) Load 63(sampleMask)
Store 78(sampleMask) 79
66(inpos): 16(ptr) Variable Function
70(flattenTemp): 51(ptr) Variable Function
71(sampleMask): 18(ptr) Variable Function
72(param): 16(ptr) Variable Function
74(param): 18(ptr) Variable Function
69: 15(fvec4) Load 68(inpos)
Store 66(inpos) 69
73: 15(fvec4) Load 66(inpos)
Store 72(param) 73
75:19(PS_OUTPUT) FunctionCall 23(@main(vf4;i1;) 72(param) 74(param)
76: 17(int) Load 74(param)
Store 71(sampleMask) 76
Store 70(flattenTemp) 75
79: 16(ptr) AccessChain 70(flattenTemp) 53
80: 15(fvec4) Load 79
Store 78(Color) 80
83: 7(ptr) AccessChain 70(flattenTemp) 59
84: 6(float) Load 83
Store 82(Depth) 84
87: 17(int) Load 71(sampleMask)
Store 86(sampleMask) 87
Return
FunctionEnd
12(MyFunc(f1;f1;f1;): 2 Function None 8
13(MyFunc(f1;f1;f1;f1;): 2 Function None 8
9(x): 7(ptr) FunctionParameter
10(y): 7(ptr) FunctionParameter
11(z): 7(ptr) FunctionParameter
13: Label
24: 6(float) Load 9(x)
Store 10(y) 24
25: 6(float) Load 10(y)
Store 11(z) 25
Store 9(x) 26
12(w): 7(ptr) FunctionParameter
14: Label
25: 6(float) Load 9(x)
Store 10(y) 25
26: 6(float) Load 10(y)
Store 11(z) 26
Store 9(x) 27
29: 6(float) Load 12(w)
30: 6(float) FMul 29 28
Store 12(w) 30
Return
FunctionEnd
22(@main(vf4;i1;):18(PS_OUTPUT) Function None 19
20(inpos): 15(ptr) FunctionParameter
21(sampleMask): 17(ptr) FunctionParameter
23: Label
27(x): 7(ptr) Variable Function
29(z): 7(ptr) Variable Function
31(y): 7(ptr) Variable Function
32(param): 7(ptr) Variable Function
34(param): 7(ptr) Variable Function
35(param): 7(ptr) Variable Function
41(psout): 40(ptr) Variable Function
Store 27(x) 28
Store 29(z) 30
33: 6(float) Load 27(x)
Store 32(param) 33
36: 6(float) Load 29(z)
Store 35(param) 36
37: 2 FunctionCall 12(MyFunc(f1;f1;f1;) 32(param) 34(param) 35(param)
38: 6(float) Load 34(param)
Store 31(y) 38
39: 6(float) Load 35(param)
Store 29(z) 39
43: 6(float) Load 27(x)
44: 6(float) Load 31(y)
45: 6(float) Load 29(z)
47: 14(fvec4) CompositeConstruct 43 44 45 46
48: 15(ptr) AccessChain 41(psout) 42
Store 48 47
52: 7(ptr) AccessChain 20(inpos) 51
53: 6(float) Load 52
54: 7(ptr) AccessChain 41(psout) 49
Store 54 53
55:18(PS_OUTPUT) Load 41(psout)
ReturnValue 55
23(@main(vf4;i1;):19(PS_OUTPUT) Function None 20
21(inpos): 16(ptr) FunctionParameter
22(sampleMask): 18(ptr) FunctionParameter
24: Label
31(x): 7(ptr) Variable Function
33(z): 7(ptr) Variable Function
35(y): 7(ptr) Variable Function
36(param): 7(ptr) Variable Function
38(param): 7(ptr) Variable Function
39(param): 7(ptr) Variable Function
41(param): 7(ptr) Variable Function
52(psout): 51(ptr) Variable Function
Store 31(x) 32
Store 33(z) 34
37: 6(float) Load 31(x)
Store 36(param) 37
40: 6(float) Load 33(z)
Store 39(param) 40
44: 7(ptr) AccessChain 21(inpos) 43
45: 6(float) Load 44
Store 41(param) 45
46: 2 FunctionCall 13(MyFunc(f1;f1;f1;f1;) 36(param) 38(param) 39(param) 41(param)
47: 6(float) Load 38(param)
Store 35(y) 47
48: 6(float) Load 39(param)
Store 33(z) 48
49: 6(float) Load 41(param)
50: 7(ptr) AccessChain 21(inpos) 43
Store 50 49
54: 6(float) Load 31(x)
55: 6(float) Load 35(y)
56: 6(float) Load 33(z)
57: 15(fvec4) CompositeConstruct 54 55 56 28
58: 16(ptr) AccessChain 52(psout) 53
Store 58 57
60: 7(ptr) AccessChain 21(inpos) 43
61: 6(float) Load 60
62: 7(ptr) AccessChain 52(psout) 59
Store 62 61
63:19(PS_OUTPUT) Load 52(psout)
ReturnValue 63
FunctionEnd

View File

@@ -35,28 +35,28 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp double)
0:? 'inDV1a' ( temp double)
0:? 'inDV1a' (layout( location=0) in double)
0:? 'inDV1a' (layout( location=0) flat in double)
0:5 move second child to first child ( temp double)
0:? 'inDV1b' ( temp double)
0:? 'inDV1b' (layout( location=1) in double)
0:? 'inDV1b' (layout( location=1) flat in double)
0:5 move second child to first child ( temp double)
0:? 'inDV1c' ( temp double)
0:? 'inDV1c' (layout( location=2) in double)
0:? 'inDV1c' (layout( location=2) flat in double)
0:5 move second child to first child ( temp 2-component vector of double)
0:? 'inDV2' ( temp 2-component vector of double)
0:? 'inDV2' (layout( location=3) in 2-component vector of double)
0:? 'inDV2' (layout( location=3) flat in 2-component vector of double)
0:5 move second child to first child ( temp 3-component vector of double)
0:? 'inDV3' ( temp 3-component vector of double)
0:? 'inDV3' (layout( location=4) in 3-component vector of double)
0:? 'inDV3' (layout( location=4) flat in 3-component vector of double)
0:5 move second child to first child ( temp 4-component vector of double)
0:? 'inDV4' ( temp 4-component vector of double)
0:? 'inDV4' (layout( location=6) in 4-component vector of double)
0:? 'inDV4' (layout( location=6) flat in 4-component vector of double)
0:5 move second child to first child ( temp uint)
0:? 'inU1a' ( temp uint)
0:? 'inU1a' (layout( location=8) in uint)
0:? 'inU1a' (layout( location=8) flat in uint)
0:5 move second child to first child ( temp uint)
0:? 'inU1b' ( temp uint)
0:? 'inU1b' (layout( location=9) in uint)
0:? 'inU1b' (layout( location=9) flat in uint)
0:5 move second child to first child ( temp float)
0:? '@entryPointOutput' (layout( location=0) out float)
0:5 Function Call: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float)
@@ -70,14 +70,14 @@ gl_FragCoord origin is upper left
0:? 'inU1b' ( temp uint)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out float)
0:? 'inDV1a' (layout( location=0) in double)
0:? 'inDV1b' (layout( location=1) in double)
0:? 'inDV1c' (layout( location=2) in double)
0:? 'inDV2' (layout( location=3) in 2-component vector of double)
0:? 'inDV3' (layout( location=4) in 3-component vector of double)
0:? 'inDV4' (layout( location=6) in 4-component vector of double)
0:? 'inU1a' (layout( location=8) in uint)
0:? 'inU1b' (layout( location=9) in uint)
0:? 'inDV1a' (layout( location=0) flat in double)
0:? 'inDV1b' (layout( location=1) flat in double)
0:? 'inDV1c' (layout( location=2) flat in double)
0:? 'inDV2' (layout( location=3) flat in 2-component vector of double)
0:? 'inDV3' (layout( location=4) flat in 3-component vector of double)
0:? 'inDV4' (layout( location=6) flat in 4-component vector of double)
0:? 'inU1a' (layout( location=8) flat in uint)
0:? 'inU1b' (layout( location=9) flat in uint)
Linked fragment stage:
@@ -119,28 +119,28 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp double)
0:? 'inDV1a' ( temp double)
0:? 'inDV1a' (layout( location=0) in double)
0:? 'inDV1a' (layout( location=0) flat in double)
0:5 move second child to first child ( temp double)
0:? 'inDV1b' ( temp double)
0:? 'inDV1b' (layout( location=1) in double)
0:? 'inDV1b' (layout( location=1) flat in double)
0:5 move second child to first child ( temp double)
0:? 'inDV1c' ( temp double)
0:? 'inDV1c' (layout( location=2) in double)
0:? 'inDV1c' (layout( location=2) flat in double)
0:5 move second child to first child ( temp 2-component vector of double)
0:? 'inDV2' ( temp 2-component vector of double)
0:? 'inDV2' (layout( location=3) in 2-component vector of double)
0:? 'inDV2' (layout( location=3) flat in 2-component vector of double)
0:5 move second child to first child ( temp 3-component vector of double)
0:? 'inDV3' ( temp 3-component vector of double)
0:? 'inDV3' (layout( location=4) in 3-component vector of double)
0:? 'inDV3' (layout( location=4) flat in 3-component vector of double)
0:5 move second child to first child ( temp 4-component vector of double)
0:? 'inDV4' ( temp 4-component vector of double)
0:? 'inDV4' (layout( location=6) in 4-component vector of double)
0:? 'inDV4' (layout( location=6) flat in 4-component vector of double)
0:5 move second child to first child ( temp uint)
0:? 'inU1a' ( temp uint)
0:? 'inU1a' (layout( location=8) in uint)
0:? 'inU1a' (layout( location=8) flat in uint)
0:5 move second child to first child ( temp uint)
0:? 'inU1b' ( temp uint)
0:? 'inU1b' (layout( location=9) in uint)
0:? 'inU1b' (layout( location=9) flat in uint)
0:5 move second child to first child ( temp float)
0:? '@entryPointOutput' (layout( location=0) out float)
0:5 Function Call: @PixelShaderFunction(d1;d1;d1;vd2;vd3;vd4;u1;u1; ( temp float)
@@ -154,14 +154,14 @@ gl_FragCoord origin is upper left
0:? 'inU1b' ( temp uint)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out float)
0:? 'inDV1a' (layout( location=0) in double)
0:? 'inDV1b' (layout( location=1) in double)
0:? 'inDV1c' (layout( location=2) in double)
0:? 'inDV2' (layout( location=3) in 2-component vector of double)
0:? 'inDV3' (layout( location=4) in 3-component vector of double)
0:? 'inDV4' (layout( location=6) in 4-component vector of double)
0:? 'inU1a' (layout( location=8) in uint)
0:? 'inU1b' (layout( location=9) in uint)
0:? 'inDV1a' (layout( location=0) flat in double)
0:? 'inDV1b' (layout( location=1) flat in double)
0:? 'inDV1c' (layout( location=2) flat in double)
0:? 'inDV2' (layout( location=3) flat in 2-component vector of double)
0:? 'inDV3' (layout( location=4) flat in 3-component vector of double)
0:? 'inDV4' (layout( location=6) flat in 4-component vector of double)
0:? 'inU1a' (layout( location=8) flat in uint)
0:? 'inU1b' (layout( location=9) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -211,13 +211,21 @@ gl_FragCoord origin is upper left
Name 83 "param"
Name 85 "param"
Name 87 "param"
Decorate 44(inDV1a) Flat
Decorate 44(inDV1a) Location 0
Decorate 47(inDV1b) Flat
Decorate 47(inDV1b) Location 1
Decorate 50(inDV1c) Flat
Decorate 50(inDV1c) Location 2
Decorate 54(inDV2) Flat
Decorate 54(inDV2) Location 3
Decorate 58(inDV3) Flat
Decorate 58(inDV3) Location 4
Decorate 62(inDV4) Flat
Decorate 62(inDV4) Location 6
Decorate 66(inU1a) Flat
Decorate 66(inU1a) Location 8
Decorate 69(inU1b) Flat
Decorate 69(inU1b) Location 9
Decorate 72(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -60,7 +60,7 @@ gl_FragCoord origin is upper left
0:? 'inF4' (layout( location=3) in 4-component vector of float)
0:3 move second child to first child ( temp 2-component vector of int)
0:? 'inI2' ( temp 2-component vector of int)
0:? 'inI2' (layout( location=4) in 2-component vector of int)
0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
0:3 Function Call: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
0:? 'inF1' ( temp float)
0:? 'inF2' ( temp 2-component vector of float)
@@ -72,7 +72,7 @@ gl_FragCoord origin is upper left
0:? 'inF2' (layout( location=1) in 2-component vector of float)
0:? 'inF3' (layout( location=2) in 3-component vector of float)
0:? 'inF4' (layout( location=3) in 4-component vector of float)
0:? 'inI2' (layout( location=4) in 2-component vector of int)
0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
Linked fragment stage:
@@ -139,7 +139,7 @@ gl_FragCoord origin is upper left
0:? 'inF4' (layout( location=3) in 4-component vector of float)
0:3 move second child to first child ( temp 2-component vector of int)
0:? 'inI2' ( temp 2-component vector of int)
0:? 'inI2' (layout( location=4) in 2-component vector of int)
0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
0:3 Function Call: @main(f1;vf2;vf3;vf4;vi2; ( temp void)
0:? 'inF1' ( temp float)
0:? 'inF2' ( temp 2-component vector of float)
@@ -151,7 +151,7 @@ gl_FragCoord origin is upper left
0:? 'inF2' (layout( location=1) in 2-component vector of float)
0:? 'inF3' (layout( location=2) in 3-component vector of float)
0:? 'inF4' (layout( location=3) in 4-component vector of float)
0:? 'inI2' (layout( location=4) in 2-component vector of int)
0:? 'inI2' (layout( location=4) flat in 2-component vector of int)
// Module Version 10000
// Generated by (magic number): 80001
@@ -190,6 +190,7 @@ gl_FragCoord origin is upper left
Decorate 55(inF2) Location 1
Decorate 59(inF3) Location 2
Decorate 63(inF4) Location 3
Decorate 67(inI2) Flat
Decorate 67(inI2) Location 4
2: TypeVoid
3: TypeFunction 2

View File

@@ -374,7 +374,7 @@ ERROR: node is still EOpNull!
0:? 'inF2' (layout( location=2) in 4-component vector of float)
0:80 move second child to first child ( temp 4-component vector of int)
0:? 'inI0' ( temp 4-component vector of int)
0:? 'inI0' (layout( location=3) in 4-component vector of int)
0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
0:80 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:80 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
@@ -518,7 +518,7 @@ ERROR: node is still EOpNull!
0:? 'inF0' (layout( location=0) in 4-component vector of float)
0:? 'inF1' (layout( location=1) in 4-component vector of float)
0:? 'inF2' (layout( location=2) in 4-component vector of float)
0:? 'inI0' (layout( location=3) in 4-component vector of int)
0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
Linked fragment stage:
@@ -837,7 +837,7 @@ ERROR: node is still EOpNull!
0:? 'inF2' (layout( location=2) in 4-component vector of float)
0:80 move second child to first child ( temp 4-component vector of int)
0:? 'inI0' ( temp 4-component vector of int)
0:? 'inI0' (layout( location=3) in 4-component vector of int)
0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
0:80 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:80 Function Call: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
@@ -981,6 +981,6 @@ ERROR: node is still EOpNull!
0:? 'inF0' (layout( location=0) in 4-component vector of float)
0:? 'inF1' (layout( location=1) in 4-component vector of float)
0:? 'inF2' (layout( location=2) in 4-component vector of float)
0:? 'inI0' (layout( location=3) in 4-component vector of int)
0:? 'inI0' (layout( location=3) flat in 4-component vector of int)
SPIR-V is not generated for failed compile or link

View File

@@ -30,16 +30,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'a1' ( temp int)
0:? 'a1' (layout( location=0) in int)
0:? 'a1' (layout( location=0) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a2' ( temp int)
0:? 'a2' (layout( location=1) in int)
0:? 'a2' (layout( location=1) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a3' ( temp int)
0:? 'a3' (layout( location=2) in int)
0:? 'a3' (layout( location=2) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a4' ( temp int)
0:? 'a4' (layout( location=3) in int)
0:? 'a4' (layout( location=3) flat in int)
0:7 move second child to first child ( temp int)
0:? '@entryPointOutput' (layout( location=0) out int)
0:7 Function Call: @PixelShaderFunction(i1;i1;i1;i1; ( temp int)
@@ -49,10 +49,10 @@ gl_FragCoord origin is upper left
0:? 'a4' ( temp int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out int)
0:? 'a1' (layout( location=0) in int)
0:? 'a2' (layout( location=1) in int)
0:? 'a3' (layout( location=2) in int)
0:? 'a4' (layout( location=3) in int)
0:? 'a1' (layout( location=0) flat in int)
0:? 'a2' (layout( location=1) flat in int)
0:? 'a3' (layout( location=2) flat in int)
0:? 'a4' (layout( location=3) flat in int)
Linked fragment stage:
@@ -89,16 +89,16 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'a1' ( temp int)
0:? 'a1' (layout( location=0) in int)
0:? 'a1' (layout( location=0) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a2' ( temp int)
0:? 'a2' (layout( location=1) in int)
0:? 'a2' (layout( location=1) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a3' ( temp int)
0:? 'a3' (layout( location=2) in int)
0:? 'a3' (layout( location=2) flat in int)
0:7 move second child to first child ( temp int)
0:? 'a4' ( temp int)
0:? 'a4' (layout( location=3) in int)
0:? 'a4' (layout( location=3) flat in int)
0:7 move second child to first child ( temp int)
0:? '@entryPointOutput' (layout( location=0) out int)
0:7 Function Call: @PixelShaderFunction(i1;i1;i1;i1; ( temp int)
@@ -108,10 +108,10 @@ gl_FragCoord origin is upper left
0:? 'a4' ( temp int)
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out int)
0:? 'a1' (layout( location=0) in int)
0:? 'a2' (layout( location=1) in int)
0:? 'a3' (layout( location=2) in int)
0:? 'a4' (layout( location=3) in int)
0:? 'a1' (layout( location=0) flat in int)
0:? 'a2' (layout( location=1) flat in int)
0:? 'a3' (layout( location=2) flat in int)
0:? 'a4' (layout( location=3) flat in int)
// Module Version 10000
// Generated by (magic number): 80001
@@ -142,9 +142,13 @@ gl_FragCoord origin is upper left
Name 49 "param"
Name 51 "param"
Name 53 "param"
Decorate 34(a1) Flat
Decorate 34(a1) Location 0
Decorate 37(a2) Flat
Decorate 37(a2) Location 1
Decorate 40(a3) Flat
Decorate 40(a3) Location 2
Decorate 43(a4) Flat
Decorate 43(a4) Location 3
Decorate 46(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -2,26 +2,19 @@ hlsl.reflection.vert
Uniform reflection:
anonMember3: offset 80, type 8b52, size 1, index 0, binding -1
s.a: offset 0, type 1404, size 1, index 1, binding -1
ablock.scalar: offset 12, type 1404, size 1, index 2, binding -1
m23: offset 16, type 8b67, size 1, index 0, binding -1
scalarAfterm23: offset 48, type 1404, size 1, index 0, binding -1
c_m23: offset 16, type 8b67, size 1, index 3, binding -1
c_scalarAfterm23: offset 48, type 1404, size 1, index 3, binding -1
c_m23: offset 16, type 8b67, size 1, index 2, binding -1
c_scalarAfterm23: offset 48, type 1404, size 1, index 2, binding -1
scalarBeforeArray: offset 96, type 1404, size 1, index 0, binding -1
floatArray: offset 112, type 1406, size 5, index 0, binding -1
scalarAfterArray: offset 192, type 1404, size 1, index 0, binding -1
ablock.memfloat2: offset 48, type 8b50, size 1, index 2, binding -1
ablock.memf1: offset 56, type 1406, size 1, index 2, binding -1
ablock.memf2: offset 60, type 8b56, size 1, index 2, binding -1
ablock.memf3: offset 64, type 1404, size 1, index 2, binding -1
ablock.memfloat2a: offset 72, type 8b50, size 1, index 2, binding -1
ablock.m22: offset 80, type 8b5a, size 7, index 2, binding -1
m22: offset 208, type 8b5a, size 9, index 0, binding -1
dm22: offset 32, type 8b5a, size 4, index 1, binding -1
m22: offset 208, type 8b5a, size 3, index 0, binding -1
nest.foo.n1.a: offset 0, type 1406, size 1, index 4, binding -1
nest.foo.n2.b: offset 16, type 1406, size 1, index 4, binding -1
nest.foo.n2.c: offset 20, type 1406, size 1, index 4, binding -1
nest.foo.n2.d: offset 24, type 1406, size 1, index 4, binding -1
foo.n1.a: offset 0, type 1406, size 1, index 3, binding -1
foo.n2.b: offset 16, type 1406, size 1, index 3, binding -1
foo.n2.c: offset 20, type 1406, size 1, index 3, binding -1
foo.n2.d: offset 24, type 1406, size 1, index 3, binding -1
deepA.d2.d1[2].va: offset 376, type 8b50, size 2, index 1, binding -1
deepB.d2.d1.va: offset 984, type 8b50, size 2, index 1, binding -1
deepB.d2.d1[0].va: offset 984, type 8b50, size 2, index 1, binding -1
@@ -61,19 +54,18 @@ deepD[1].d2.d1[2].b: offset 2480, type 8b56, size 1, index 1, binding -1
deepD[1].d2.d1[3].va: offset 2480, type 8b50, size 3, index 1, binding -1
deepD[1].d2.d1[3].b: offset 2480, type 8b56, size 1, index 1, binding -1
deepD[1].v3: offset 2480, type 8b54, size 1, index 1, binding -1
arrBl.foo: offset 0, type 1406, size 1, index 5, binding -1
arrBl2.foo: offset 0, type 1406, size 1, index 6, binding -1
foo1: offset 0, type 1406, size 1, index 4, binding -1
foo2: offset 0, type 1406, size 1, index 5, binding -1
anonMember1: offset 0, type 8b51, size 1, index 0, binding -1
uf1: offset 16, type 1406, size 1, index 1, binding -1
Uniform block reflection:
nameless: offset -1, type ffffffff, size 496, index -1, binding -1
$Global: offset -1, type ffffffff, size 3088, index -1, binding -1
ablock: offset -1, type ffffffff, size 304, index -1, binding -1
c_nameless: offset -1, type ffffffff, size 96, index -1, binding -1
nest: offset -1, type ffffffff, size 32, index -1, binding -1
arrBl: offset -1, type ffffffff, size 4, index -1, binding -1
arrBl2: offset -1, type ffffffff, size 4, index -1, binding -1
nested: offset -1, type ffffffff, size 32, index -1, binding -1
abl: offset -1, type ffffffff, size 4, index -1, binding -1
abl2: offset -1, type ffffffff, size 4, index -1, binding -1
Vertex attribute reflection:
attributeFloat: offset 0, type 1406, size 0, index 0, binding -1

View File

@@ -24,18 +24,26 @@ output primitive = line_strip
0:12 Function Call: @main(u1[3];struct-S-f1-f1-u1-u1-i11; ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 move second child to first child ( temp float)
0:? 'OutputStream_clip0' ( out float ClipDistance)
0:12 clip0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:? 'OutputStream_cull0' ( out float CullDistance)
0:12 cull0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 Constant:
0:12 1 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? 'OutputStream_clip0' ( out 1-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 clip0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 Constant:
0:12 0 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? 'OutputStream_cull0' ( out 1-element array of float CullDistance)
0:12 Constant:
0:12 0 (const int)
0:12 cull0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp uint)
0:? 'OutputStream_vpai' ( out uint ViewportIndex)
0:12 vpai: direct index for structure ( temp uint)
@@ -92,18 +100,26 @@ output primitive = line_strip
0:12 Function Call: @main(u1[3];struct-S-f1-f1-u1-u1-i11; ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 move second child to first child ( temp float)
0:? 'OutputStream_clip0' ( out float ClipDistance)
0:12 clip0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:? 'OutputStream_cull0' ( out float CullDistance)
0:12 cull0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 Constant:
0:12 1 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? 'OutputStream_clip0' ( out 1-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 clip0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 Constant:
0:12 0 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? 'OutputStream_cull0' ( out 1-element array of float CullDistance)
0:12 Constant:
0:12 0 (const int)
0:12 cull0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp uint)
0:? 'OutputStream_vpai' ( out uint ViewportIndex)
0:12 vpai: direct index for structure ( temp uint)
@@ -133,7 +149,7 @@ output primitive = line_strip
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 66
// Id's are bound by 71
Capability Geometry
Capability ClipDistance
@@ -141,7 +157,7 @@ output primitive = line_strip
Capability MultiViewport
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 25 35 40 45 50 56 65
EntryPoint Geometry 4 "main" 25 37 44 50 55 61 70
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip
@@ -164,23 +180,23 @@ output primitive = line_strip
Name 28 "OutputStream"
Name 29 "param"
Name 31 "param"
Name 35 "OutputStream_clip0"
Name 40 "OutputStream_cull0"
Name 45 "OutputStream_vpai"
Name 50 "OutputStream_rtai"
Name 54 "S"
MemberName 54(S) 0 "ii"
Name 56 "@entryPointOutput"
Name 63 "S"
MemberName 63(S) 0 "ii"
Name 65 "OutputStream"
Name 37 "OutputStream_clip0"
Name 44 "OutputStream_cull0"
Name 50 "OutputStream_vpai"
Name 55 "OutputStream_rtai"
Name 59 "S"
MemberName 59(S) 0 "ii"
Name 61 "@entryPointOutput"
Name 68 "S"
MemberName 68(S) 0 "ii"
Name 70 "OutputStream"
Decorate 25(VertexID) Location 0
Decorate 35(OutputStream_clip0) BuiltIn ClipDistance
Decorate 40(OutputStream_cull0) BuiltIn CullDistance
Decorate 45(OutputStream_vpai) BuiltIn ViewportIndex
Decorate 50(OutputStream_rtai) BuiltIn Layer
Decorate 56(@entryPointOutput) Location 0
Decorate 65(OutputStream) Location 1
Decorate 37(OutputStream_clip0) BuiltIn ClipDistance
Decorate 44(OutputStream_cull0) BuiltIn CullDistance
Decorate 50(OutputStream_vpai) BuiltIn ViewportIndex
Decorate 55(OutputStream_rtai) BuiltIn Layer
Decorate 61(@entryPointOutput) Location 0
Decorate 70(OutputStream) Location 1
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@@ -194,27 +210,30 @@ output primitive = line_strip
14: TypeFunction 12(S) 9(ptr) 13(ptr)
24: TypePointer Input 8
25(VertexID): 24(ptr) Variable Input
34: TypePointer Output 10(float)
35(OutputStream_clip0): 34(ptr) Variable Output
36: 11(int) Constant 0
37: TypePointer Function 10(float)
40(OutputStream_cull0): 34(ptr) Variable Output
41: 11(int) Constant 1
44: TypePointer Output 6(int)
45(OutputStream_vpai): 44(ptr) Variable Output
46: 11(int) Constant 2
47: TypePointer Function 6(int)
50(OutputStream_rtai): 44(ptr) Variable Output
51: 11(int) Constant 3
54(S): TypeStruct 11(int)
55: TypePointer Output 54(S)
56(@entryPointOutput): 55(ptr) Variable Output
57: 11(int) Constant 4
58: TypePointer Function 11(int)
61: TypePointer Output 11(int)
63(S): TypeStruct 11(int)
64: TypePointer Output 63(S)
65(OutputStream): 64(ptr) Variable Output
34: 6(int) Constant 1
35: TypeArray 10(float) 34
36: TypePointer Output 35
37(OutputStream_clip0): 36(ptr) Variable Output
38: 11(int) Constant 0
39: TypePointer Function 10(float)
42: TypePointer Output 10(float)
44(OutputStream_cull0): 36(ptr) Variable Output
45: 11(int) Constant 1
49: TypePointer Output 6(int)
50(OutputStream_vpai): 49(ptr) Variable Output
51: 11(int) Constant 2
52: TypePointer Function 6(int)
55(OutputStream_rtai): 49(ptr) Variable Output
56: 11(int) Constant 3
59(S): TypeStruct 11(int)
60: TypePointer Output 59(S)
61(@entryPointOutput): 60(ptr) Variable Output
62: 11(int) Constant 4
63: TypePointer Function 11(int)
66: TypePointer Output 11(int)
68(S): TypeStruct 11(int)
69: TypePointer Output 68(S)
70(OutputStream): 69(ptr) Variable Output
4(main): 2 Function None 3
5: Label
23(VertexID): 9(ptr) Variable Function
@@ -230,22 +249,24 @@ output primitive = line_strip
33: 12(S) Load 31(param)
Store 28(OutputStream) 33
Store 27(flattenTemp) 32
38: 37(ptr) AccessChain 27(flattenTemp) 36
39: 10(float) Load 38
Store 35(OutputStream_clip0) 39
42: 37(ptr) AccessChain 27(flattenTemp) 41
43: 10(float) Load 42
Store 40(OutputStream_cull0) 43
48: 47(ptr) AccessChain 27(flattenTemp) 46
49: 6(int) Load 48
Store 45(OutputStream_vpai) 49
52: 47(ptr) AccessChain 27(flattenTemp) 51
53: 6(int) Load 52
Store 50(OutputStream_rtai) 53
59: 58(ptr) AccessChain 27(flattenTemp) 57
60: 11(int) Load 59
62: 61(ptr) AccessChain 56(@entryPointOutput) 36
Store 62 60
40: 39(ptr) AccessChain 27(flattenTemp) 38
41: 10(float) Load 40
43: 42(ptr) AccessChain 37(OutputStream_clip0) 38
Store 43 41
46: 39(ptr) AccessChain 27(flattenTemp) 45
47: 10(float) Load 46
48: 42(ptr) AccessChain 44(OutputStream_cull0) 38
Store 48 47
53: 52(ptr) AccessChain 27(flattenTemp) 51
54: 6(int) Load 53
Store 50(OutputStream_vpai) 54
57: 52(ptr) AccessChain 27(flattenTemp) 56
58: 6(int) Load 57
Store 55(OutputStream_rtai) 58
64: 63(ptr) AccessChain 27(flattenTemp) 62
65: 11(int) Load 64
67: 66(ptr) AccessChain 61(@entryPointOutput) 38
Store 67 65
Return
FunctionEnd
17(@main(u1[3];struct-S-f1-f1-u1-u1-i11;): 12(S) Function None 14

View File

@@ -58,42 +58,66 @@ Shader version: 500
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Function Call: @main(struct-S-f1-f1-f1-f1-f1-f1-i11; ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_clip7' ( out float ClipDistance)
0:12 clip: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_clip7' ( out float ClipDistance)
0:12 clip0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_clip7' ( out float ClipDistance)
0:12 clip7: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 2 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_cull5' ( out float CullDistance)
0:12 cull: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 3 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_cull5' ( out float CullDistance)
0:12 cull2: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 4 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_cull5' ( out float CullDistance)
0:12 cull5: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 5 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_clip7' ( out 1-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 clip: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 0 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_clip7' ( out 1-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 clip0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 1 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_clip7' ( out 1-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 clip7: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 2 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_cull5' ( out 1-element array of float CullDistance)
0:12 Constant:
0:12 0 (const int)
0:12 cull: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 3 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_cull5' ( out 1-element array of float CullDistance)
0:12 Constant:
0:12 0 (const int)
0:12 cull2: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 4 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_cull5' ( out 1-element array of float CullDistance)
0:12 Constant:
0:12 0 (const int)
0:12 cull5: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 5 (const int)
0:12 move second child to first child ( temp int)
0:12 ii: direct index for structure ( temp int)
0:12 '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
@@ -176,42 +200,66 @@ Shader version: 500
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Function Call: @main(struct-S-f1-f1-f1-f1-f1-f1-i11; ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:? 'ins' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_clip7' ( out float ClipDistance)
0:12 clip: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_clip7' ( out float ClipDistance)
0:12 clip0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_clip7' ( out float ClipDistance)
0:12 clip7: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 2 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_cull5' ( out float CullDistance)
0:12 cull: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 3 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_cull5' ( out float CullDistance)
0:12 cull2: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 4 (const int)
0:12 move second child to first child ( temp float)
0:? '@entryPointOutput_cull5' ( out float CullDistance)
0:12 cull5: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 5 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_clip7' ( out 1-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 clip: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 0 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_clip7' ( out 1-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 clip0: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 1 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_clip7' ( out 1-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 clip7: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 2 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_cull5' ( out 1-element array of float CullDistance)
0:12 Constant:
0:12 0 (const int)
0:12 cull: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 3 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_cull5' ( out 1-element array of float CullDistance)
0:12 Constant:
0:12 0 (const int)
0:12 cull2: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 4 (const int)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:? '@entryPointOutput_cull5' ( out 1-element array of float CullDistance)
0:12 Constant:
0:12 0 (const int)
0:12 cull5: direct index for structure ( temp float)
0:12 'flattenTemp' ( temp structure{ temp float clip, temp float clip0, temp float clip7, temp float cull, temp float cull2, temp float cull5, temp int ii})
0:12 Constant:
0:12 5 (const int)
0:12 move second child to first child ( temp int)
0:12 ii: direct index for structure ( temp int)
0:12 '@entryPointOutput' (layout( location=0) out structure{ temp int ii})
@@ -233,14 +281,14 @@ Shader version: 500
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 77
// Id's are bound by 87
Capability Shader
Capability ClipDistance
Capability CullDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 21 26 30 34 38 42 47 56 63 72
EntryPoint Vertex 4 "main" 21 26 30 34 38 42 47 59 70 82
Source HLSL 500
Name 4 "main"
Name 8 "S"
@@ -264,11 +312,11 @@ Shader version: 500
Name 47 "ii"
Name 51 "flattenTemp"
Name 52 "param"
Name 56 "@entryPointOutput_clip7"
Name 63 "@entryPointOutput_cull5"
Name 70 "S"
MemberName 70(S) 0 "ii"
Name 72 "@entryPointOutput"
Name 59 "@entryPointOutput_clip7"
Name 70 "@entryPointOutput_cull5"
Name 80 "S"
MemberName 80(S) 0 "ii"
Name 82 "@entryPointOutput"
Decorate 21(clip) Location 0
Decorate 26(clip0) Location 1
Decorate 30(clip7) Location 2
@@ -276,9 +324,9 @@ Shader version: 500
Decorate 38(cull2) Location 4
Decorate 42(cull5) Location 5
Decorate 47(ii) BuiltIn InstanceIndex
Decorate 56(@entryPointOutput_clip7) BuiltIn ClipDistance
Decorate 63(@entryPointOutput_cull5) BuiltIn CullDistance
Decorate 72(@entryPointOutput) Location 0
Decorate 59(@entryPointOutput_clip7) BuiltIn ClipDistance
Decorate 70(@entryPointOutput_cull5) BuiltIn CullDistance
Decorate 82(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@@ -304,13 +352,17 @@ Shader version: 500
46: TypePointer Input 7(int)
47(ii): 46(ptr) Variable Input
49: TypePointer Function 7(int)
55: TypePointer Output 6(float)
56(@entryPointOutput_clip7): 55(ptr) Variable Output
63(@entryPointOutput_cull5): 55(ptr) Variable Output
70(S): TypeStruct 7(int)
71: TypePointer Output 70(S)
72(@entryPointOutput): 71(ptr) Variable Output
75: TypePointer Output 7(int)
55: TypeInt 32 0
56: 55(int) Constant 1
57: TypeArray 6(float) 56
58: TypePointer Output 57
59(@entryPointOutput_clip7): 58(ptr) Variable Output
62: TypePointer Output 6(float)
70(@entryPointOutput_cull5): 58(ptr) Variable Output
80(S): TypeStruct 7(int)
81: TypePointer Output 80(S)
82(@entryPointOutput): 81(ptr) Variable Output
85: TypePointer Output 7(int)
4(main): 2 Function None 3
5: Label
18(ins): 9(ptr) Variable Function
@@ -341,28 +393,34 @@ Shader version: 500
Store 52(param) 53
54: 8(S) FunctionCall 12(@main(struct-S-f1-f1-f1-f1-f1-f1-i11;) 52(param)
Store 51(flattenTemp) 54
57: 23(ptr) AccessChain 51(flattenTemp) 19
58: 6(float) Load 57
Store 56(@entryPointOutput_clip7) 58
59: 23(ptr) AccessChain 51(flattenTemp) 25
60: 6(float) Load 59
Store 56(@entryPointOutput_clip7) 60
61: 23(ptr) AccessChain 51(flattenTemp) 29
62: 6(float) Load 61
Store 56(@entryPointOutput_clip7) 62
64: 23(ptr) AccessChain 51(flattenTemp) 33
60: 23(ptr) AccessChain 51(flattenTemp) 19
61: 6(float) Load 60
63: 62(ptr) AccessChain 59(@entryPointOutput_clip7) 19
Store 63 61
64: 23(ptr) AccessChain 51(flattenTemp) 25
65: 6(float) Load 64
Store 63(@entryPointOutput_cull5) 65
66: 23(ptr) AccessChain 51(flattenTemp) 37
67: 6(float) Load 66
Store 63(@entryPointOutput_cull5) 67
68: 23(ptr) AccessChain 51(flattenTemp) 41
69: 6(float) Load 68
Store 63(@entryPointOutput_cull5) 69
73: 49(ptr) AccessChain 51(flattenTemp) 45
74: 7(int) Load 73
76: 75(ptr) AccessChain 72(@entryPointOutput) 19
Store 76 74
66: 62(ptr) AccessChain 59(@entryPointOutput_clip7) 19
Store 66 65
67: 23(ptr) AccessChain 51(flattenTemp) 29
68: 6(float) Load 67
69: 62(ptr) AccessChain 59(@entryPointOutput_clip7) 19
Store 69 68
71: 23(ptr) AccessChain 51(flattenTemp) 33
72: 6(float) Load 71
73: 62(ptr) AccessChain 70(@entryPointOutput_cull5) 19
Store 73 72
74: 23(ptr) AccessChain 51(flattenTemp) 37
75: 6(float) Load 74
76: 62(ptr) AccessChain 70(@entryPointOutput_cull5) 19
Store 76 75
77: 23(ptr) AccessChain 51(flattenTemp) 41
78: 6(float) Load 77
79: 62(ptr) AccessChain 70(@entryPointOutput_cull5) 19
Store 79 78
83: 49(ptr) AccessChain 51(flattenTemp) 45
84: 7(int) Load 83
86: 85(ptr) AccessChain 82(@entryPointOutput) 19
Store 86 84
Return
FunctionEnd
12(@main(struct-S-f1-f1-f1-f1-f1-f1-i11;): 8(S) Function None 10

View File

@@ -44,7 +44,7 @@ gl_FragCoord origin is upper left
0:40 Constant:
0:40 0 (const int)
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 0 (const int)
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 1 (const int)
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 1 (const int)
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 2 (const int)
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 2 (const int)
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 3 (const int)
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 3 (const int)
0:40 move second child to first child ( temp bool)
@@ -79,14 +79,14 @@ 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:40 Constant:
0:40 4 (const int)
0:? 's_ff1' ( in bool Face)
0:? 's_ff1' ( flat in bool Face)
0:40 move second child to first child ( temp bool)
0:40 ff2: direct index for structure ( temp bool)
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 5 (const int)
0:40 ff2: direct index for structure ( 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 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 4 (const int)
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:40 Constant:
0:40 6 (const int)
0:40 ff3: direct index for structure ( 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 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 5 (const int)
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 7 (const int)
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 6 (const int)
0:40 move second child to first child ( temp 4-component vector of float)
@@ -117,8 +117,8 @@ gl_FragCoord origin is upper left
0:? 's2' ( global structure{ temp 4-component vector of float i})
0:? '@entryPointOutput' (layout( location=0) out 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_ff1' ( in bool Face)
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' ( flat in bool Face)
Linked fragment stage:
@@ -165,7 +165,7 @@ gl_FragCoord origin is upper left
0:40 Constant:
0:40 0 (const int)
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 0 (const int)
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 1 (const int)
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 1 (const int)
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 2 (const int)
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 2 (const int)
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 3 (const int)
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 3 (const int)
0:40 move second child to first child ( temp bool)
@@ -200,14 +200,14 @@ 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:40 Constant:
0:40 4 (const int)
0:? 's_ff1' ( in bool Face)
0:? 's_ff1' ( flat in bool Face)
0:40 move second child to first child ( temp bool)
0:40 ff2: direct index for structure ( temp bool)
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 5 (const int)
0:40 ff2: direct index for structure ( 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 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 4 (const int)
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:40 Constant:
0:40 6 (const int)
0:40 ff3: direct index for structure ( 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 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, flat temp bool ff2, flat temp bool ff3, temp 4-component vector of float ff4})
0:40 Constant:
0:40 5 (const int)
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 7 (const int)
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 6 (const int)
0:40 move second child to first child ( temp 4-component vector of float)
@@ -238,8 +238,8 @@ gl_FragCoord origin is upper left
0:? 's2' ( global structure{ temp 4-component vector of float i})
0:? '@entryPointOutput' (layout( location=0) out 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_ff1' ( in bool Face)
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' ( flat in bool Face)
// Module Version 10000
// Generated by (magic number): 80001
@@ -306,7 +306,10 @@ gl_FragCoord origin is upper left
MemberDecorate 54(IN_S) 2 NoPerspective
MemberDecorate 54(IN_S) 2 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 79(s_ff1) Flat
Decorate 79(s_ff1) BuiltIn FrontFacing
Decorate 94(@entryPointOutput) Location 0
MemberDecorate 101(myS) 0 Offset 0

View File

@@ -20,7 +20,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'i' ( temp int)
0:? 'i' (layout( location=0) in int)
0:? 'i' (layout( location=0) flat in int)
0:7 Sequence
0:7 move second child to first child ( temp float)
0:7 f: direct index for structure ( temp float)
@@ -110,7 +110,7 @@ gl_FragCoord origin is upper left
0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'i' (layout( location=0) in int)
0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of structure{ temp float f})
0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
@@ -139,7 +139,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp int)
0:? 'i' ( temp int)
0:? 'i' (layout( location=0) in int)
0:? 'i' (layout( location=0) flat in int)
0:7 Sequence
0:7 move second child to first child ( temp float)
0:7 f: direct index for structure ( temp float)
@@ -229,7 +229,7 @@ gl_FragCoord origin is upper left
0:? 'input' ( temp 3-element array of structure{ temp float f, temp 4-component vector of float pos})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'i' (layout( location=0) in int)
0:? 'i' (layout( location=0) flat in int)
0:? 'input' (layout( location=1) in 3-element array of structure{ temp float f})
0:? 'input_pos' ( in 3-element array of 4-component vector of float FragCoord)
@@ -261,6 +261,7 @@ gl_FragCoord origin is upper left
Name 67 "@entryPointOutput"
Name 68 "param"
Name 70 "param"
Decorate 32(i) Flat
Decorate 32(i) Location 0
Decorate 39(input) Location 1
Decorate 48(input_pos) BuiltIn FragCoord

View File

@@ -58,7 +58,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:19 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:19 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:19 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -70,7 +70,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -135,7 +135,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:19 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:19 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:19 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -147,7 +147,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -192,6 +192,7 @@ gl_FragCoord origin is upper left
Decorate 50(sbuf_a@count) DescriptorSet 0
Decorate 51(sbuf_c) DescriptorSet 0
Decorate 52(sbuf_c@count) DescriptorSet 0
Decorate 58(pos) Flat
Decorate 58(pos) Location 0
Decorate 61(@entryPointOutput) Location 0
MemberDecorate 65(sbuf_a@count) 0 Offset 0

View File

@@ -45,7 +45,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -57,7 +57,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -109,7 +109,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -121,7 +121,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf_c@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_unused' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -158,6 +158,7 @@ gl_FragCoord origin is upper left
Decorate 22(sbuf_a@count) DescriptorSet 0
Decorate 36(sbuf_c) DescriptorSet 0
Decorate 37(sbuf_c@count) DescriptorSet 0
Decorate 48(pos) Flat
Decorate 48(pos) Location 0
Decorate 51(@entryPointOutput) Location 0
Decorate 55(sbuf_unused) DescriptorSet 0

View File

@@ -224,7 +224,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -232,7 +232,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -463,7 +463,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -471,7 +471,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -498,6 +498,7 @@ gl_FragCoord origin is upper left
MemberDecorate 15(sbuf) 0 Offset 0
Decorate 15(sbuf) BufferBlock
Decorate 17(sbuf) DescriptorSet 0
Decorate 80(pos) Flat
Decorate 80(pos) Location 0
Decorate 83(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -149,7 +149,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -157,7 +157,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -313,7 +313,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -321,7 +321,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -352,6 +352,7 @@ gl_FragCoord origin is upper left
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
Decorate 18(sbuf) DescriptorSet 0
Decorate 107(pos) Flat
Decorate 107(pos) Location 0
Decorate 110(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -74,7 +74,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -83,7 +83,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -164,7 +164,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -173,7 +173,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) coherent buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -217,6 +217,7 @@ gl_FragCoord origin is upper left
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
Decorate 32(sbuf) DescriptorSet 0
Decorate 71(pos) Flat
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -53,7 +53,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:20 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:20 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:20 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -64,7 +64,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf2@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf3' (layout( binding=12 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 3-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -124,7 +124,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:20 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:20 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:20 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -135,7 +135,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf2@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf3' (layout( binding=12 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of 3-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -192,6 +192,7 @@ gl_FragCoord origin is upper left
Decorate 48(sbuf2@count) DescriptorSet 0
Decorate 50(sbuf) DescriptorSet 0
Decorate 50(sbuf) Binding 10
Decorate 63(pos) Flat
Decorate 63(pos) Location 0
Decorate 66(@entryPointOutput) Location 0
MemberDecorate 70(sbuf2@count) 0 Offset 0

View File

@@ -80,7 +80,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -89,7 +89,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:? 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -176,7 +176,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -185,7 +185,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( binding=10 row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test, temp bool test2} @data})
0:? 'sbuf2' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -238,6 +238,7 @@ gl_FragCoord origin is upper left
MemberDecorate 59(sbuf2) 0 Offset 0
Decorate 59(sbuf2) BufferBlock
Decorate 61(sbuf2) DescriptorSet 0
Decorate 89(pos) Flat
Decorate 89(pos) Location 0
Decorate 92(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -85,7 +85,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -97,7 +97,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -189,7 +189,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:7 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -201,7 +201,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf_rw_d@count' (layout( row_major std430) buffer block{layout( row_major std430) buffer int @count})
0:? 'sbuf_rw_nocounter' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of 4-component vector of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -242,6 +242,7 @@ gl_FragCoord origin is upper left
Decorate 34(sbuf_rw_i@count) BufferBlock
Decorate 36(sbuf_rw_i@count) DescriptorSet 0
Decorate 43(sbuf_rw_d@count) DescriptorSet 0
Decorate 63(pos) Flat
Decorate 63(pos) Location 0
Decorate 66(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -74,7 +74,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -83,7 +83,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -164,7 +164,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:12 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:12 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:12 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -173,7 +173,7 @@ gl_FragCoord origin is upper left
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of structure{ temp 3-component vector of float color, temp bool test} @data})
0:? 'sbuf2' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of float @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -213,6 +213,7 @@ gl_FragCoord origin is upper left
MemberDecorate 30(sbuf) 0 Offset 0
Decorate 30(sbuf) BufferBlock
Decorate 32(sbuf) DescriptorSet 0
Decorate 71(pos) Flat
Decorate 71(pos) Location 0
Decorate 74(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -490,7 +490,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -498,7 +498,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
Linked fragment stage:
@@ -995,7 +995,7 @@ gl_FragCoord origin is upper left
0:? Sequence
0:5 move second child to first child ( temp uint)
0:? 'pos' ( temp uint)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
0:5 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:5 Function Call: @main(u1; ( temp 4-component vector of float)
@@ -1003,7 +1003,7 @@ gl_FragCoord origin is upper left
0:? Linker Objects
0:? 'sbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer implicitly-sized array of uint @data})
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'pos' (layout( location=0) in uint)
0:? 'pos' (layout( location=0) flat in uint)
// Module Version 10000
// Generated by (magic number): 80001
@@ -1037,6 +1037,7 @@ gl_FragCoord origin is upper left
MemberDecorate 16(sbuf) 0 Offset 0
Decorate 16(sbuf) BufferBlock
Decorate 18(sbuf) DescriptorSet 0
Decorate 233(pos) Flat
Decorate 233(pos) Location 0
Decorate 236(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -129,10 +129,10 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
0:2 move second child to first child ( temp int)
0:? 'c' ( temp int)
0:? 'c' (layout( location=1) in int)
0:? 'c' (layout( location=1) flat in int)
0:2 move second child to first child ( temp int)
0:? 'd' ( temp int)
0:? 'd' (layout( location=2) in int)
0:? 'd' (layout( location=2) flat in int)
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;i1;i1; ( temp 4-component vector of float)
@@ -142,8 +142,8 @@ gl_FragCoord origin is upper left
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)
0:? 'c' (layout( location=1) in int)
0:? 'd' (layout( location=2) in int)
0:? 'c' (layout( location=1) flat in int)
0:? 'd' (layout( location=2) flat in int)
Linked fragment stage:
@@ -279,10 +279,10 @@ gl_FragCoord origin is upper left
0:? 'input' (layout( location=0) in 4-component vector of float)
0:2 move second child to first child ( temp int)
0:? 'c' ( temp int)
0:? 'c' (layout( location=1) in int)
0:? 'c' (layout( location=1) flat in int)
0:2 move second child to first child ( temp int)
0:? 'd' ( temp int)
0:? 'd' (layout( location=2) in int)
0:? 'd' (layout( location=2) flat in int)
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;i1;i1; ( temp 4-component vector of float)
@@ -292,8 +292,8 @@ gl_FragCoord origin is upper left
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)
0:? 'c' (layout( location=1) in int)
0:? 'd' (layout( location=2) in int)
0:? 'c' (layout( location=1) flat in int)
0:? 'd' (layout( location=2) flat in int)
// Module Version 10000
// Generated by (magic number): 80001
@@ -321,7 +321,9 @@ gl_FragCoord origin is upper left
Name 101 "param"
Name 103 "param"
Decorate 88(input) Location 0
Decorate 92(c) Flat
Decorate 92(c) Location 1
Decorate 95(d) Flat
Decorate 95(d) Location 2
Decorate 98(@entryPointOutput) Location 0
2: TypeVoid

View File

@@ -0,0 +1,151 @@
hlsl.synthesizeInput.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:7 Function Parameters:
0:7 'input' ( in structure{ temp float interp, temp uint no_interp})
0:? Sequence
0:8 Branch: Return with expression
0:? Construct vec4 ( temp 4-component vector of float)
0:8 Convert uint to float ( temp float)
0:8 no_interp: direct index for structure ( temp uint)
0:8 'input' ( in structure{ temp float interp, temp uint no_interp})
0:8 Constant:
0:8 1 (const int)
0:8 interp: direct index for structure ( temp float)
0:8 'input' ( in structure{ temp float interp, temp uint no_interp})
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 0.000000
0:8 Constant:
0:8 1.000000
0:7 Function Definition: main( ( temp void)
0:7 Function Parameters:
0:? Sequence
0:7 move second child to first child ( temp structure{ temp float interp, temp uint no_interp})
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp})
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp})
Linked fragment stage:
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:7 Function Definition: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:7 Function Parameters:
0:7 'input' ( in structure{ temp float interp, temp uint no_interp})
0:? Sequence
0:8 Branch: Return with expression
0:? Construct vec4 ( temp 4-component vector of float)
0:8 Convert uint to float ( temp float)
0:8 no_interp: direct index for structure ( temp uint)
0:8 'input' ( in structure{ temp float interp, temp uint no_interp})
0:8 Constant:
0:8 1 (const int)
0:8 interp: direct index for structure ( temp float)
0:8 'input' ( in structure{ temp float interp, temp uint no_interp})
0:8 Constant:
0:8 0 (const int)
0:8 Constant:
0:8 0.000000
0:8 Constant:
0:8 1.000000
0:7 Function Definition: main( ( temp void)
0:7 Function Parameters:
0:? Sequence
0:7 move second child to first child ( temp structure{ temp float interp, temp uint no_interp})
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp})
0:7 move second child to first child ( temp 4-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:7 Function Call: @main(struct-PSInput-f1-u11; ( temp 4-component vector of float)
0:? 'input' ( temp structure{ temp float interp, temp uint no_interp})
0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:? 'input' (layout( location=0) in structure{ temp float interp, flat temp uint no_interp})
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 44
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 33 40
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Name 4 "main"
Name 8 "PSInput"
MemberName 8(PSInput) 0 "interp"
MemberName 8(PSInput) 1 "no_interp"
Name 13 "@main(struct-PSInput-f1-u11;"
Name 12 "input"
Name 30 "input"
Name 31 "PSInput"
MemberName 31(PSInput) 0 "interp"
MemberName 31(PSInput) 1 "no_interp"
Name 33 "input"
Name 40 "@entryPointOutput"
Name 41 "param"
MemberDecorate 31(PSInput) 1 Flat
Decorate 33(input) Location 0
Decorate 40(@entryPointOutput) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeInt 32 0
8(PSInput): TypeStruct 6(float) 7(int)
9: TypePointer Function 8(PSInput)
10: TypeVector 6(float) 4
11: TypeFunction 10(fvec4) 9(ptr)
15: TypeInt 32 1
16: 15(int) Constant 1
17: TypePointer Function 7(int)
21: 15(int) Constant 0
22: TypePointer Function 6(float)
25: 6(float) Constant 0
26: 6(float) Constant 1065353216
31(PSInput): TypeStruct 6(float) 7(int)
32: TypePointer Input 31(PSInput)
33(input): 32(ptr) Variable Input
39: TypePointer Output 10(fvec4)
40(@entryPointOutput): 39(ptr) Variable Output
4(main): 2 Function None 3
5: Label
30(input): 9(ptr) Variable Function
41(param): 9(ptr) Variable Function
34: 31(PSInput) Load 33(input)
35: 6(float) CompositeExtract 34 0
36: 22(ptr) AccessChain 30(input) 21
Store 36 35
37: 7(int) CompositeExtract 34 1
38: 17(ptr) AccessChain 30(input) 16
Store 38 37
42: 8(PSInput) Load 30(input)
Store 41(param) 42
43: 10(fvec4) FunctionCall 13(@main(struct-PSInput-f1-u11;) 41(param)
Store 40(@entryPointOutput) 43
Return
FunctionEnd
13(@main(struct-PSInput-f1-u11;): 10(fvec4) Function None 11
12(input): 9(ptr) FunctionParameter
14: Label
18: 17(ptr) AccessChain 12(input) 16
19: 7(int) Load 18
20: 6(float) ConvertUToF 19
23: 22(ptr) AccessChain 12(input) 21
24: 6(float) Load 23
27: 10(fvec4) CompositeConstruct 20 24 25 26
ReturnValue 27
FunctionEnd

View File

@@ -1,17 +1,17 @@
cbuffer {
cbuffer buf1 {
float4 v1;
};
}; // extraneous ;
tbuffer {
tbuffer buf2 {
float4 v2;
};
}; // extraneous ;
cbuffer cbufName : register(b2, space10) {
float4 v3;
int i3 : packoffset(c1.y);
} // no semicolon is okay
cbuffer cbufName {
float4 v3 : packoffset(c0);
int i3 : packoffset(c1.y);
}
tbuffer tbufName : register(b8) {
tbuffer tbufName : register(t8) {
float4 v4 : packoffset(c1);
int i4 : packoffset(c3);
float f1 : packoffset(c3.w);
@@ -19,14 +19,19 @@ tbuffer tbufName : register(b8) {
float f4 : packoffset(c4.y);
float f5 : packoffset(c4.z);
float f6 : packoffset(c);
float f7;
float3x4 m1;
row_major float3x4 m2;
column_major float3x4 m3;
float3x4 m4;
} // no semicolon is okay
float4 PixelShaderFunction(float4 input) : COLOR0
{
return input + v1 + v2 + v3 + v4;
float f7 : packoffset(c8);
float3x4 m1 : packoffset(c7);
row_major float3x4 m2 : packoffset(c11);
column_major float3x4 m3 : packoffset(c15);
float3x4 m4 : packoffset(c19);
}
float foo() // float looks like identifier, but can't be part of tbuffer
{
return 1.0;
}
float4 PixelShaderFunction(float4 input : SV_POSITION) : SV_TARGET0
{
return (input + v1 + v2 + v3 + v4) * foo();
}

View File

@@ -0,0 +1,8 @@
void main(out float4 pos : SV_Position,
out float clip : SV_ClipDistance, // scalar float
out float cull : SV_CullDistance) // scalar float
{
pos = 1.0f.xxxx;
clip = 0.5f;
cull = 0.51f;
}

View File

@@ -0,0 +1,15 @@
void main(out float4 pos : SV_Position,
out float2 clip[2] : SV_ClipDistance, // array of vector float
out float2 cull[2] : SV_CullDistance) // array of vector float
{
pos = 1.0f.xxxx;
clip[0].x = 0.5f;
clip[0].y = 0.6f;
clip[1].x = 0.7f;
clip[1].y = 0.8f;
cull[0].x = 0.525f;
cull[0].y = 0.625f;
cull[1].x = 0.725f;
cull[1].y = 0.825f;
}

View File

@@ -0,0 +1,13 @@
void main(out float4 pos : SV_Position,
out float clip[2] : SV_ClipDistance, // array of scalar float
out float cull[2] : SV_CullDistance) // array of scalar float
{
pos = 1.0f.xxxx;
clip[0] = 0.5f;
clip[1] = 0.6f;
cull[0] = 0.525f;
cull[1] = 0.625f;
}

View File

@@ -0,0 +1,21 @@
struct VS_INPUT {
float4 Position : POSITION;
};
struct VS_OUTPUT {
float4 Position : SV_Position;
float4 ClipRect : SV_ClipDistance0; // vector in split struct
};
VS_OUTPUT main(const VS_INPUT v)
{
VS_OUTPUT Output;
Output.Position = 0;
Output.ClipRect.x = 1;
Output.ClipRect.y = 2;
Output.ClipRect.z = 3;
Output.ClipRect.w = 4;
return Output;
}

View File

@@ -0,0 +1,21 @@
struct VS_INPUT {
float4 Position : POSITION;
};
struct VS_OUTPUT {
float4 Position : SV_Position;
float2 ClipRect[2] : SV_ClipDistance0; // array of float2 in split struct
};
VS_OUTPUT main(const VS_INPUT v)
{
VS_OUTPUT Output;
Output.Position = 0;
Output.ClipRect[0].x = 1;
Output.ClipRect[0].y = 2;
Output.ClipRect[1].x = 3;
Output.ClipRect[1].y = 4;
return Output;
}

View File

@@ -4,11 +4,12 @@ struct PS_OUTPUT
float Depth : SV_Depth;
};
inline void MyFunc(in float x, out float y, inout float z)
inline void MyFunc(in float x, out float y, inout float z, in out float w)
{
y = x;
z = y;
x = -1; // no effect since x = in param
w *= 1;
}
PS_OUTPUT main(noperspective in float4 inpos : SV_Position, out int sampleMask : SV_Coverage)
@@ -16,7 +17,7 @@ PS_OUTPUT main(noperspective in float4 inpos : SV_Position, out int sampleMask :
PS_OUTPUT psout;
float x = 7, y, z = 3;
MyFunc(x, y, z);
MyFunc(x, y, z, inpos.w);
psout.Color = float4(x, y, z, 1);
psout.Depth = inpos.w;

View File

@@ -19,27 +19,10 @@ cbuffer c_nameless {
float4 c_anonMember3;
};
cbuffer named {
float3 deadMember1;
int scalar;
float4 member2;
float4 member3;
float2 memfloat2;
float memf1;
bool memf2;
int memf3;
float2 memfloat2a;
float2x2 m22[7];
} ablock;
cbuffer namelessdead {
int a;
};
cbuffer namedDead {
int b;
} bblock;
struct N1 {
float a;
};
@@ -57,7 +40,7 @@ struct N3 {
cbuffer nested {
N3 foo;
} nest;
}
struct TS {
int a;
@@ -89,16 +72,12 @@ struct deep3 {
int3 v3;
};
uniform deep3 deepA[2], deepB[2], deepC[3], deepD[2];
const bool control = true;
void deadFunction()
{
float3 v3 = ablock.deadMember1;
float4 v = anonDeadMember2;
float f = ufDead4;
}
@@ -110,12 +89,12 @@ void liveFunction2()
}
tbuffer abl {
float foo;
} arrBl;
float foo1;
}
tbuffer abl2 {
float foo;
} arrBl2;
float foo2;
}
void flizv(in float attributeFloat, in float2 attributeFloat2, in float3 attributeFloat3, in float4 attributeFloat4, in float4x4 attributeMat4)
{
@@ -130,22 +109,16 @@ void flizv(in float attributeFloat, in float2 attributeFloat2, in float3 attribu
liveFunction2();
f = anonMember3.z;
f = s.a;
f = ablock.scalar;
f = m23[1].y + scalarAfterm23;
f = c_m23[1].y + c_scalarAfterm23;
f += scalarBeforeArray;
f += floatArray[2];
f += floatArray[4];
f += scalarAfterArray;
f += ablock.memfloat2.x;
f += ablock.memf1;
f += float(ablock.memf2);
f += ablock.memf3;
f += ablock.memfloat2a.y;
f += ablock.m22[i][1][0];
f += m22[i][1][0];
f += dm22[3][0][1];
f += m22[2][1].y;
f += nest.foo.n1.a + nest.foo.n2.b + nest.foo.n2.c + nest.foo.n2.d;
f += foo.n1.a + foo.n2.b + foo.n2.c + foo.n2.d;
f += deepA[i].d2.d1[2].va[1].x;
f += deepB[1].d2.d1[i].va[1].x;
f += deepB[i].d2.d1[i].va[1].x;
@@ -154,8 +127,8 @@ void flizv(in float attributeFloat, in float2 attributeFloat2, in float3 attribu
} else
f = ufDead3;
f += arrBl.foo + arrBl.foo;
f += arrBl2.foo;
f += foo1 + foo2;
f += foo2;
f += attributeFloat;
f += attributeFloat2.x;

View File

@@ -0,0 +1,9 @@
struct PSInput {
float interp;
uint no_interp;
};
float4 main(PSInput input : INPUT) : SV_TARGET
{
return float4(float(input.no_interp), input.interp, 0, 1);
}

View File

@@ -1338,7 +1338,24 @@ public:
#else
virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble; }
#endif
virtual bool isIntegerDomain() const
{
switch (basicType) {
case EbtInt:
case EbtUint:
case EbtInt64:
case EbtUint64:
#ifdef AMD_EXTENSIONS
case EbtInt16:
case EbtUint16:
#endif
case EbtAtomicUint:
return true;
default:
break;
}
return false;
}
virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint; }
// "Image" is a superset of "Subpass"
@@ -1451,9 +1468,9 @@ public:
case EbtUint16:
#endif
case EbtBool:
return true;
return true;
default:
return false;
return false;
}
};

View File

@@ -725,7 +725,9 @@ void TReflection::buildCounterIndices()
// Returns false if the input is too malformed to do this.
bool TReflection::addStage(EShLanguage stage, const TIntermediate& intermediate)
{
if (intermediate.getNumEntryPoints() != 1 || intermediate.isRecursive())
if (intermediate.getTreeRoot() == nullptr ||
intermediate.getNumEntryPoints() != 1 ||
intermediate.isRecursive())
return false;
buildAttributeReflection(stage, intermediate);

View File

@@ -97,6 +97,11 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.cast.frag", "PixelShaderFunction"},
{"hlsl.charLit.vert", "main"},
{"hlsl.clip.frag", "main"},
{"hlsl.clipdistance-1.vert", "main"},
{"hlsl.clipdistance-2.vert", "main"},
{"hlsl.clipdistance-3.vert", "main"},
{"hlsl.clipdistance-4.vert", "main"},
{"hlsl.clipdistance-5.vert", "main"},
{"hlsl.comparison.vec.frag", "main"},
{"hlsl.conditional.frag", "PixelShaderFunction"},
{"hlsl.constantbuffer.frag", "main"},
@@ -275,6 +280,7 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.structin.vert", "main"},
{"hlsl.structIoFourWay.frag", "main"},
{"hlsl.structStructName.frag", "main"},
{"hlsl.synthesizeInput.frag", "main"},
{"hlsl.texture.subvec4.frag", "main"},
{"hlsl.this.frag", "main"},
{"hlsl.intrinsics.vert", "VertexShaderFunction"},

View File

@@ -296,7 +296,8 @@ bool HlslGrammar::acceptSamplerDeclarationDX9(TType& /*type*/)
// declaration
// : sampler_declaration_dx9 post_decls SEMICOLON
// | fully_specified_type declarator_list SEMICOLON(optional for cbuffer/tbuffer)
// | fully_specified_type // for cbuffer/tbuffer
// | fully_specified_type declarator_list SEMICOLON // for non cbuffer/tbuffer
// | fully_specified_type identifier function_parameters post_decls compound_statement // function definition
// | fully_specified_type identifier sampler_state post_decls compound_statement // sampler definition
// | typedef declaration
@@ -370,11 +371,19 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
// if (acceptSamplerDeclarationDX9(declaredType))
// return true;
bool forbidDeclarators = (peekTokenClass(EHTokCBuffer) || peekTokenClass(EHTokTBuffer));
// fully_specified_type
if (! acceptFullySpecifiedType(declaredType, nodeList))
return false;
// identifier
// cbuffer and tbuffer end with the closing '}'.
// No semicolon is included.
if (forbidDeclarators)
return true;
// declarator_list
// : declarator
// : identifier
HlslToken idToken;
TIntermAggregate* initializers = nullptr;
while (acceptIdentifier(idToken)) {
@@ -483,11 +492,10 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
}
}
if (acceptTokenClass(EHTokComma)) {
// COMMA
if (acceptTokenClass(EHTokComma))
declarator_list = true;
continue;
}
};
}
// The top-level initializer node is a sequence.
if (initializers != nullptr)
@@ -499,18 +507,15 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList)
else
nodeList = initializers;
// SEMICOLON(optional for cbuffer/tbuffer)
// SEMICOLON
if (! acceptTokenClass(EHTokSemicolon)) {
// This may have been a false detection of what appeared to be a declaration, but
// was actually an assignment such as "float = 4", where "float" is an identifier.
// We put the token back to let further parsing happen for cases where that may
// happen. This errors on the side of caution, and mostly triggers the error.
if (peek() == EHTokAssign || peek() == EHTokLeftBracket || peek() == EHTokDot || peek() == EHTokComma) {
// This may have been a false detection of what appeared to be a declaration, but
// was actually an assignment such as "float = 4", where "float" is an identifier.
// We put the token back to let further parsing happen for cases where that may
// happen. This errors on the side of caution, and mostly triggers the error.
recedeToken();
return false;
} else if (declaredType.getBasicType() == EbtBlock) {
// cbuffer, et. al. (but not struct) don't have an ending semicolon
return true;
} else {
expected(";");
return false;
@@ -675,10 +680,10 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier)
qualifier.noContraction = true;
break;
case EHTokIn:
qualifier.storage = EvqIn;
qualifier.storage = (qualifier.storage == EvqOut) ? EvqInOut : EvqIn;
break;
case EHTokOut:
qualifier.storage = EvqOut;
qualifier.storage = (qualifier.storage == EvqIn) ? EvqInOut : EvqOut;
break;
case EHTokInOut:
qualifier.storage = EvqInOut;
@@ -1901,18 +1906,19 @@ bool HlslGrammar::acceptStruct(TType& type, TIntermNode*& nodeList)
TStorageQualifier storageQualifier = EvqTemporary;
bool readonly = false;
// CBUFFER
if (acceptTokenClass(EHTokCBuffer)) {
// CBUFFER
storageQualifier = EvqUniform;
// TBUFFER
} else if (acceptTokenClass(EHTokTBuffer)) {
// TBUFFER
storageQualifier = EvqBuffer;
readonly = true;
}
// CLASS
// STRUCT
else if (! acceptTokenClass(EHTokClass) && ! acceptTokenClass(EHTokStruct))
} else if (! acceptTokenClass(EHTokClass) && ! acceptTokenClass(EHTokStruct)) {
// Neither CLASS nor STRUCT
return false;
}
// Now known to be one of CBUFFER, TBUFFER, CLASS, or STRUCT
// IDENTIFIER
TString structName = "";

View File

@@ -693,7 +693,7 @@ TIntermTyped* HlslParseContext::handleVariable(const TSourceLoc& loc, const TStr
}
// Recovery, if it wasn't found or was not a variable.
if (! variable) {
if (variable == nullptr) {
error(loc, "unknown variable", string->c_str(), "");
variable = new TVariable(string, TType(EbtVoid));
}
@@ -791,7 +791,7 @@ TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc,
index = makeIntegerIndex(index);
if (index == nullptr) {
error(loc, " unknown undex type ", "", "");
error(loc, " unknown index type ", "", "");
return nullptr;
}
@@ -867,7 +867,7 @@ void HlslParseContext::checkIndex(const TSourceLoc& /*loc*/, const TType& /*type
TIntermTyped* HlslParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right)
{
TIntermTyped* result = intermediate.addBinaryMath(op, left, right, loc);
if (! result)
if (result == nullptr)
binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString());
return result;
@@ -1492,9 +1492,25 @@ void HlslParseContext::fixBuiltInIoType(TType& type)
switch (type.getQualifier().builtIn) {
case EbvTessLevelOuter: requiredArraySize = 4; break;
case EbvTessLevelInner: requiredArraySize = 2; break;
case EbvClipDistance: // TODO: ...
case EbvCullDistance: // TODO: ...
return;
case EbvClipDistance:
case EbvCullDistance:
{
// ClipDistance and CullDistance are handled specially in the entry point output
// copy algorithm, because they may need to be unpacked from components of vectors
// (or a scalar) into a float array. Here, we make the array the right size and type,
// which is the number of components per vector times the array size (or 1 if not
// an array). The copy itself is handled in assignClipCullDistance().
requiredArraySize = type.getVectorSize() * (type.isArray() ? type.getOuterArraySize() : 1);
TType clipCullType(EbtFloat, type.getQualifier().storage, 1);
clipCullType.getQualifier() = type.getQualifier();
type.shallowCopy(clipCullType);
break;
}
case EbvTessCoord:
{
// tesscoord is always a vec3 for the IO variable, no matter the shader's
@@ -1525,15 +1541,15 @@ void HlslParseContext::fixBuiltInIoType(TType& type)
}
// Variables that correspond to the user-interface in and out of a stage
// (not the built-in interface) are assigned locations and
// registered as a linkage node (part of the stage's external interface).
//
// (not the built-in interface) are
// - assigned locations
// - registered as a linkage node (part of the stage's external interface).
// Assumes it is called in the order in which locations should be assigned.
void HlslParseContext::assignLocations(TVariable& variable)
void HlslParseContext::assignToInterface(TVariable& variable)
{
const auto assignLocation = [&](TVariable& variable) {
const TType& type = variable.getType();
const TQualifier& qualifier = type.getQualifier();
TType& type = variable.getWritableType();
TQualifier& qualifier = type.getQualifier();
if (qualifier.storage == EvqVaryingIn || qualifier.storage == EvqVaryingOut) {
if (qualifier.builtIn == EbvNone) {
// Strip off the outer array dimension for those having an extra one.
@@ -1552,7 +1568,6 @@ void HlslParseContext::assignLocations(TVariable& variable)
nextOutLocation += size;
}
}
trackLinkage(variable);
}
};
@@ -1664,7 +1679,7 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l
TSymbol* symbol = symbolTable.find(function.getMangledName());
TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr;
if (! prevDec)
if (prevDec == nullptr)
error(loc, "can't find function", function.getName().c_str(), "");
// Note: 'prevDec' could be 'function' if this is the first time we've seen function
// as it would have just been put in the symbol table. Otherwise, we're looking up
@@ -1914,9 +1929,11 @@ void HlslParseContext::handleEntryPointAttributes(const TSourceLoc& loc, const T
// ret = @shaderEntryPoint(args...);
// oargs = args<that are output>...;
// }
// retType @shaderEntryPoint(args...)
// { body }
//
// The symbol table will still map the original entry point name to the
// the modified function and it's new name:
// the modified function and its new name:
//
// symbol table: shaderEntryPoint -> @shaderEntryPoint
//
@@ -1966,7 +1983,7 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
split(variable);
}
assignLocations(variable);
assignToInterface(variable);
};
if (entryPointOutput)
makeVariableInOut(*entryPointOutput);
@@ -2012,11 +2029,8 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
for (int i = 0; i < userFunction.getParamCount(); i++) {
TParameter& param = userFunction[i];
argVars.push_back(makeInternalVariable(*param.name, *param.type));
argVars.back()->getWritableType().getQualifier().makeTemporary();
TIntermSymbol* arg = intermediate.addSymbol(*argVars.back());
handleFunctionArgument(&callee, callingArgs, arg);
if (param.type->getQualifier().isParamInput()) {
intermediate.growAggregate(synthBody, handleAssign(loc, EOpAssign, arg,
@@ -2062,7 +2076,6 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
} else {
returnAssign = handleAssign(loc, EOpAssign, intermediate.addSymbol(*entryPointOutput), callReturn);
}
intermediate.growAggregate(synthBody, returnAssign);
} else
intermediate.growAggregate(synthBody, callReturn);
@@ -2120,12 +2133,63 @@ void HlslParseContext::handleFunctionBody(const TSourceLoc& loc, TFunction& func
void HlslParseContext::remapEntryPointIO(TFunction& function, TVariable*& returnValue,
TVector<TVariable*>& inputs, TVector<TVariable*>& outputs)
{
// We might have in input structure type with no decorations that caused it
// to look like an input type, yet it has (e.g.) interpolation types that
// must be modified that turn it into an input type.
// Hence, a missing ioTypeMap for 'input' might need to be synthesized.
const auto synthesizeEditedInput = [this](TType& type) {
// True if a type needs to be 'flat'
const auto needsFlat = [](const TType& type) {
return type.containsBasicType(EbtInt) ||
type.containsBasicType(EbtUint) ||
type.containsBasicType(EbtInt64) ||
type.containsBasicType(EbtUint64) ||
type.containsBasicType(EbtBool) ||
type.containsBasicType(EbtDouble);
};
if (language == EShLangFragment && needsFlat(type)) {
if (type.isStruct()) {
TTypeList* finalList = nullptr;
auto it = ioTypeMap.find(type.getStruct());
if (it == ioTypeMap.end() || it->second.input == nullptr) {
// Getting here means we have no input struct, but we need one.
auto list = new TTypeList;
for (auto member = type.getStruct()->begin(); member != type.getStruct()->end(); ++member) {
TType* newType = new TType;
newType->shallowCopy(*member->type);
TTypeLoc typeLoc = { newType, member->loc };
list->push_back(typeLoc);
}
// install the new input type
if (it == ioTypeMap.end()) {
tIoKinds newLists = { list, nullptr, nullptr };
ioTypeMap[type.getStruct()] = newLists;
} else
it->second.input = list;
finalList = list;
} else
finalList = it->second.input;
// edit for 'flat'
for (auto member = finalList->begin(); member != finalList->end(); ++member) {
if (needsFlat(*member->type)) {
member->type->getQualifier().clearInterpolation();
member->type->getQualifier().flat = true;
}
}
} else {
type.getQualifier().clearInterpolation();
type.getQualifier().flat = true;
}
}
};
// Do the actual work to make a type be a shader input or output variable,
// and clear the original to be non-IO (for use as a normal function parameter/return).
const auto makeIoVariable = [this](const char* name, TType& type, TStorageQualifier storage) -> TVariable* {
TVariable* ioVariable = makeInternalVariable(name, type);
clearUniformInputOutput(type.getQualifier());
if (type.getStruct() != nullptr) {
if (type.isStruct()) {
auto newLists = ioTypeMap.find(ioVariable->getType().getStruct());
if (newLists != ioTypeMap.end()) {
if (storage == EvqVaryingIn && newLists->second.input)
@@ -2178,6 +2242,7 @@ void HlslParseContext::remapEntryPointIO(TFunction& function, TVariable*& return
for (int i = 0; i < function.getParamCount(); i++) {
TType& paramType = *function[i].type;
if (paramType.getQualifier().isParamInput()) {
synthesizeEditedInput(paramType);
TVariable* argAsGlobal = makeIoVariable(function[i].name->c_str(), paramType, EvqVaryingIn);
inputs.push_back(argAsGlobal);
@@ -2241,6 +2306,88 @@ void HlslParseContext::handleFunctionArgument(TFunction* function,
arguments = newArg;
}
// Clip and cull distance require special handling due to a semantic mismatch. In HLSL,
// these can be float scalar, float vector, or arrays of float scalar or float vector.
// In SPIR-V, they are arrays of scalar floats in all cases. We must copy individual components
// (e.g, both x and y components of a float2) out into the destination float array.
//
// The values are assigned to sequential members of the output array. The inner dimension
// is vector components. The outer dimension is array elements.
TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc, TOperator op,
TIntermTyped* left, TIntermTyped* right)
{
// ***
// TODO: this does not yet handle the index coming from the semantic's ID, as in SV_ClipDistance[012345...]
// ***
// left has got to be an array of scalar floats, per SPIR-V semantics.
// fixBuiltInIoType() should have handled that upstream.
assert(left->getType().isArray());
assert(left->getType().getVectorSize() == 1);
assert(left->getType().getBasicType() == EbtFloat);
// array sizes, or 1 if it's not an array:
const int lhsArraySize = (left->getType().isArray() ? left->getType().getOuterArraySize() : 1);
const int rhsArraySize = (right->getType().isArray() ? right->getType().getOuterArraySize() : 1);
// vector sizes:
const int lhsVectorSize = left->getType().getVectorSize();
const int rhsVectorSize = right->getType().getVectorSize();
// We may be creating multiple sub-assignments. This is an aggregate to hold them.
// TODO: it would be possible to be clever sometimes and avoid the sequence node if not needed.
TIntermAggregate* assignList = nullptr;
// If the types are homomorphic, use a simple assign. No need to mess about with
// individual components.
if (left->getType().isArray() == right->getType().isArray() &&
lhsArraySize == rhsArraySize &&
lhsVectorSize == rhsVectorSize) {
assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, left, right, loc));
assignList->setOperator(EOpSequence);
return assignList;
}
// We are going to copy each component of the right (per array element if indicated) to sequential
// array elements of the left. This tracks the lhs element we're writing to as we go along.
int lhsArrayPos = 0;
// Loop through every component of every element of the RHS, and copy to LHS elements in turn.
for (int rhsArrayPos = 0; rhsArrayPos < rhsArraySize; ++rhsArrayPos) {
for (int rhsComponent = 0; rhsComponent < rhsVectorSize; ++rhsComponent) {
// LHS array member to write to:
TIntermTyped* lhsMember = intermediate.addIndex(EOpIndexDirect, left,
intermediate.addConstantUnion(lhsArrayPos++, loc), loc);
TIntermTyped* rhsMember = right;
// If right is an array, extract the element of interest
if (right->getType().isArray()) {
const TType derefType(rhsMember->getType(), 0);
rhsMember = intermediate.addIndex(EOpIndexDirect, rhsMember,
intermediate.addConstantUnion(rhsArrayPos, loc), loc);
rhsMember->setType(derefType);
}
// If right is a vector, extract the component of interest.
if (right->getType().isVector()) {
const TType derefType(rhsMember->getType(), 0);
rhsMember = intermediate.addIndex(EOpIndexDirect, rhsMember,
intermediate.addConstantUnion(rhsComponent, loc), loc);
rhsMember->setType(derefType);
}
// Assign: to the proper lhs member.
assignList = intermediate.growAggregate(assignList,
intermediate.addAssign(op, lhsMember, rhsMember, loc));
}
}
assert(assignList != nullptr);
assignList->setOperator(EOpSequence);
return assignList;
}
// Some simple source assignments need to be flattened to a sequence
// of AST assignments. Catch these and flatten, otherwise, pass through
// to intermediate.addAssign().
@@ -2263,8 +2410,14 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
// OK to do a single assign if both are split, or both are unsplit. But if one is and the other
// isn't, we fall back to a member-wise copy.
if (! isFlattenLeft && ! isFlattenRight && !isSplitLeft && !isSplitRight)
if (! isFlattenLeft && ! isFlattenRight && !isSplitLeft && !isSplitRight) {
// Clip and cull distance requires more processing. See comment above assignClipCullDistance.
const TBuiltInVariable leftBuiltIn = left->getType().getQualifier().builtIn;
if (leftBuiltIn == EbvClipDistance || leftBuiltIn == EbvCullDistance)
return assignClipCullDistance(loc, op, left, right);
return intermediate.addAssign(op, left, right, loc);
}
TIntermAggregate* assignList = nullptr;
const TVector<TVariable*>* leftVariables = nullptr;
@@ -2425,13 +2578,21 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
TIntermTyped* subSplitLeft = isSplitLeft ? getMember(true, left, member, splitLeft, memberL) : subLeft;
TIntermTyped* subSplitRight = isSplitRight ? getMember(false, right, member, splitRight, memberR) : subRight;
// If this is the final flattening (no nested types below to flatten) we'll copy the member, else
// recurse into the type hierarchy. However, if splitting the struct, that means we can copy a whole
// subtree here IFF it does not itself contain any interstage built-in IO variables, so we only have to
// recurse into it if there's something for splitting to do. That can save a lot of AST verbosity for
// a bunch of memberwise copies.
if ((!isFlattenLeft && !isFlattenRight &&
!typeL.containsBuiltInInterstageIO(language) && !typeR.containsBuiltInInterstageIO(language))) {
const TBuiltInVariable leftBuiltIn = subSplitLeft->getType().getQualifier().builtIn;
if (leftBuiltIn == EbvClipDistance || leftBuiltIn == EbvCullDistance) {
// Clip and cull distance builtin assignment is complex in its own right, and is handled in
// a separate function dedicated to that task. See comment above assignClipCullDistance;
assignList = intermediate.growAggregate(assignList, assignClipCullDistance(loc, op, subSplitLeft, subSplitRight), loc);
} else if ((!isFlattenLeft && !isFlattenRight &&
!typeL.containsBuiltInInterstageIO(language) && !typeR.containsBuiltInInterstageIO(language))) {
// If this is the final flattening (no nested types below to flatten) we'll copy the member, else
// recurse into the type hierarchy. However, if splitting the struct, that means we can copy a whole
// subtree here IFF it does not itself contain any interstage built-in IO variables, so we only have to
// recurse into it if there's something for splitting to do. That can save a lot of AST verbosity for
// a bunch of memberwise copies.
assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subSplitLeft, subSplitRight, loc), loc);
} else {
traverse(subLeft, subRight, subSplitLeft, subSplitRight);
@@ -3031,7 +3192,7 @@ TIntermConstantUnion* HlslParseContext::getSamplePosArray(int count)
//
void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments)
{
if (!node || !node->getAsOperator())
if (node == nullptr || !node->getAsOperator())
return;
const auto clampReturn = [&loc, &node, this](TIntermTyped* result, const TSampler& sampler) -> TIntermTyped* {
@@ -3773,7 +3934,7 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType
//
void HlslParseContext::decomposeGeometryMethods(const TSourceLoc& loc, TIntermTyped*& node, TIntermNode* arguments)
{
if (!node || !node->getAsOperator())
if (node == nullptr || !node->getAsOperator())
return;
const TOperator op = node->getAsOperator()->getOp();
@@ -4967,7 +5128,7 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn
}
if (arg > 0) {
if (! aggArgs[arg]->getAsConstantUnion())
if (aggArgs[arg]->getAsConstantUnion() == nullptr)
error(loc, "argument must be compile-time constant", "texel offset", "");
else {
const TType& type = aggArgs[arg]->getAsTyped()->getType();
@@ -5706,7 +5867,7 @@ void HlslParseContext::arrayDimMerge(TType& type, const TArraySizes* sizes)
//
void HlslParseContext::declareArray(const TSourceLoc& loc, const TString& identifier, const TType& type, TSymbol*& symbol, bool track)
{
if (! symbol) {
if (symbol == nullptr) {
bool currentScope;
symbol = symbolTable.find(identifier, nullptr, &currentScope);
@@ -5737,7 +5898,7 @@ void HlslParseContext::declareArray(const TSourceLoc& loc, const TString& identi
// Process a redeclaration.
//
if (! symbol) {
if (symbol == nullptr) {
error(loc, "array variable name expected", identifier.c_str(), "");
return;
}
@@ -5856,7 +6017,7 @@ void HlslParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& n
// If the block was not found, this must be a version/profile/stage
// that doesn't have it, or the instance name is wrong.
const char* errorName = instanceName ? instanceName->c_str() : newTypeList.front().type->getFieldName().c_str();
if (! block) {
if (block == nullptr) {
error(loc, "no declaration found for redeclaration", errorName, "");
return;
}
@@ -6967,7 +7128,7 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, const TStr
declareArray(loc, identifier, type, symbol, !flattenVar);
} else {
// non-array case
if (! symbol)
if (symbol == nullptr)
symbol = declareNonArray(loc, identifier, type, !flattenVar);
else if (type != symbol->getType())
error(loc, "cannot change the type of", "redeclaration", symbol->getName().c_str());
@@ -6976,7 +7137,7 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, const TStr
if (flattenVar)
flatten(loc, *symbol->getAsVariable());
if (! symbol)
if (symbol == nullptr)
return nullptr;
// Deal with initializer
@@ -6993,7 +7154,7 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, const TStr
*/
TVariable* variable = symbol->getAsVariable();
if (! variable) {
if (variable == nullptr) {
error(loc, "initializer requires a variable, not a member", identifier.c_str(), "");
return nullptr;
}
@@ -7089,7 +7250,7 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm
skeletalType.getQualifier().makeTemporary();
if (initializer->getAsAggregate() && initializer->getAsAggregate()->getOp() == EOpNull)
initializer = convertInitializerList(loc, skeletalType, initializer, nullptr);
if (! initializer) {
if (initializer == nullptr) {
// error recovery; don't leave const without constant values
if (qualifier == EvqConst)
variable->getWritableType().getQualifier().storage = EvqTemporary;
@@ -7152,7 +7313,7 @@ TIntermNode* HlslParseContext::executeInitializer(const TSourceLoc& loc, TInterm
specializationCheck(loc, initializer->getType(), "initializer");
TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc);
TIntermNode* initNode = handleAssign(loc, EOpAssign, intermSymbol, initializer);
if (! initNode)
if (initNode == nullptr)
assignError(loc, "=", intermSymbol->getCompleteString(), initializer->getCompleteString());
return initNode;
@@ -7182,7 +7343,7 @@ TIntermTyped* HlslParseContext::convertInitializerList(const TSourceLoc& loc, co
// see if we have bottomed out in the tree within the initializer-list part
TIntermAggregate* initList = initializer->getAsAggregate();
if (! initList || initList->getOp() != EOpNull) {
if (initList == nullptr || initList->getOp() != EOpNull) {
// We don't have a list, but if it's a scalar and the 'type' is a
// composite, we need to lengthen below to make it useful.
// Otherwise, this is an already formed object to initialize with.
@@ -7650,7 +7811,7 @@ TIntermTyped* HlslParseContext::constructAggregate(TIntermNode* node, const TTyp
{
// Handle cases that map more 1:1 between constructor arguments and constructed.
TIntermTyped* converted = intermediate.addConversion(EOpConstructStruct, type, node->getAsTyped());
if (! converted || converted->getType() != type) {
if (converted == nullptr || converted->getType() != type) {
error(loc, "", "constructor", "cannot convert parameter %d from '%s' to '%s'", paramCount,
node->getAsTyped()->getType().getCompleteString().c_str(), type.getCompleteString().c_str());
@@ -7803,7 +7964,7 @@ void HlslParseContext::declareBlock(const TSourceLoc& loc, TType& type, const TS
// Add the variable, as anonymous or named instanceName.
// Make an anonymous variable if no name was provided.
if (! instanceName)
if (instanceName == nullptr)
instanceName = NewPoolTString("");
TVariable& variable = *new TVariable(instanceName, blockType);
@@ -7953,7 +8114,7 @@ void HlslParseContext::fixBlockUniformOffsets(const TQualifier& qualifier, TType
void HlslParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier qualifier, const TString& identifier)
{
TSymbol* symbol = symbolTable.find(identifier);
if (! symbol) {
if (symbol == nullptr) {
error(loc, "identifier not previously declared", identifier.c_str(), "");
return;
}
@@ -8842,7 +9003,7 @@ void HlslParseContext::addPatchConstantInvocation()
if (pcfOutput->getType().containsBuiltInInterstageIO(language))
split(*pcfOutput);
assignLocations(*pcfOutput);
assignToInterface(*pcfOutput);
TIntermSymbol* pcfOutputSym = intermediate.addSymbol(*pcfOutput, loc);

View File

@@ -77,7 +77,7 @@ public:
TIntermTyped* handleUnaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* childNode);
TIntermTyped* handleDotDereference(const TSourceLoc&, TIntermTyped* base, const TString& field);
bool isBuiltInMethod(const TSourceLoc&, TIntermTyped* base, const TString& field);
void assignLocations(TVariable& variable);
void assignToInterface(TVariable& variable);
void handleFunctionDeclarator(const TSourceLoc&, TFunction& function, bool prototype);
TIntermAggregate* handleFunctionDefinition(const TSourceLoc&, TFunction&, const TAttributeMap&, TIntermNode*& entryPointTree);
TIntermNode* transformEntryPoint(const TSourceLoc&, TFunction&, const TAttributeMap&);
@@ -90,6 +90,7 @@ public:
TIntermTyped* handleAssign(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
TIntermTyped* handleAssignToMatrixSwizzle(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
TIntermTyped* handleFunctionCall(const TSourceLoc&, TFunction*, TIntermTyped*);
TIntermAggregate* assignClipCullDistance(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right);
void decomposeIntrinsic(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
void decomposeStructBufferMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);