forked from KhronosGroup/glslang
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request KhronosGroup#2806 from ZhiqianXia/bestFunctionMatc…
…hing #extension GL_ARB_gpu_shader5 support the implicit conversion ,
- Loading branch information
Showing
4 changed files
with
231 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#version 150 | ||
#extension GL_ARB_gpu_shader5 : require | ||
|
||
uniform ivec4 u1; | ||
uniform uvec4 u2; | ||
out vec4 result; | ||
vec4 f(in vec4 a, in vec4 b){ return a * b;} // choice 1 | ||
vec4 f(in uvec4 a, in uvec4 b){ return vec4(a - b);} // choice 2 | ||
|
||
void main() | ||
{ | ||
result = f(u1, u2); // should match choice 2. which have less implicit conversion. | ||
switch (gl_VertexID) | ||
{ | ||
case 0: gl_Position = vec4(-1.0, 1.0, 0.0, 1.0); break; | ||
case 1: gl_Position = vec4( 1.0, 1.0, 0.0, 1.0); break; | ||
case 2: gl_Position = vec4(-1.0,-1.0, 0.0, 1.0); break; | ||
case 3: gl_Position = vec4( 1.0,-1.0, 0.0, 1.0); break; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,206 @@ | ||
BestMatchFunction.vert | ||
WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 | ||
|
||
Shader version: 150 | ||
Requested GL_ARB_gpu_shader5 | ||
0:? Sequence | ||
0:7 Function Definition: f(vf4;vf4; ( global 4-component vector of float) | ||
0:7 Function Parameters: | ||
0:7 'a' ( in 4-component vector of float) | ||
0:7 'b' ( in 4-component vector of float) | ||
0:7 Sequence | ||
0:7 Branch: Return with expression | ||
0:7 component-wise multiply ( temp 4-component vector of float) | ||
0:7 'a' ( in 4-component vector of float) | ||
0:7 'b' ( in 4-component vector of float) | ||
0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float) | ||
0:8 Function Parameters: | ||
0:8 'a' ( in 4-component vector of uint) | ||
0:8 'b' ( in 4-component vector of uint) | ||
0:8 Sequence | ||
0:8 Branch: Return with expression | ||
0:8 Convert uint to float ( temp 4-component vector of float) | ||
0:8 subtract ( temp 4-component vector of uint) | ||
0:8 'a' ( in 4-component vector of uint) | ||
0:8 'b' ( in 4-component vector of uint) | ||
0:10 Function Definition: main( ( global void) | ||
0:10 Function Parameters: | ||
0:12 Sequence | ||
0:12 move second child to first child ( temp 4-component vector of float) | ||
0:12 'result' ( smooth out 4-component vector of float) | ||
0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float) | ||
0:12 Convert int to uint ( temp 4-component vector of uint) | ||
0:12 'u1' ( uniform 4-component vector of int) | ||
0:12 'u2' ( uniform 4-component vector of uint) | ||
0:13 switch | ||
0:13 condition | ||
0:13 'gl_VertexID' ( gl_VertexId int VertexId) | ||
0:13 body | ||
0:13 Sequence | ||
0:15 case: with expression | ||
0:15 Constant: | ||
0:15 0 (const int) | ||
0:? Sequence | ||
0:15 move second child to first child ( temp 4-component vector of float) | ||
0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:15 Constant: | ||
0:15 0 (const uint) | ||
0:15 Constant: | ||
0:15 -1.000000 | ||
0:15 1.000000 | ||
0:15 0.000000 | ||
0:15 1.000000 | ||
0:15 Branch: Break | ||
0:16 case: with expression | ||
0:16 Constant: | ||
0:16 1 (const int) | ||
0:? Sequence | ||
0:16 move second child to first child ( temp 4-component vector of float) | ||
0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:16 Constant: | ||
0:16 0 (const uint) | ||
0:16 Constant: | ||
0:16 1.000000 | ||
0:16 1.000000 | ||
0:16 0.000000 | ||
0:16 1.000000 | ||
0:16 Branch: Break | ||
0:17 case: with expression | ||
0:17 Constant: | ||
0:17 2 (const int) | ||
0:? Sequence | ||
0:17 move second child to first child ( temp 4-component vector of float) | ||
0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:17 Constant: | ||
0:17 0 (const uint) | ||
0:17 Constant: | ||
0:17 -1.000000 | ||
0:17 -1.000000 | ||
0:17 0.000000 | ||
0:17 1.000000 | ||
0:17 Branch: Break | ||
0:18 case: with expression | ||
0:18 Constant: | ||
0:18 3 (const int) | ||
0:? Sequence | ||
0:18 move second child to first child ( temp 4-component vector of float) | ||
0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
0:18 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:18 Constant: | ||
0:18 0 (const uint) | ||
0:18 Constant: | ||
0:18 1.000000 | ||
0:18 -1.000000 | ||
0:18 0.000000 | ||
0:18 1.000000 | ||
0:18 Branch: Break | ||
0:? Linker Objects | ||
0:? 'u1' ( uniform 4-component vector of int) | ||
0:? 'u2' ( uniform 4-component vector of uint) | ||
0:? 'result' ( smooth out 4-component vector of float) | ||
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:? 'gl_VertexID' ( gl_VertexId int VertexId) | ||
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) | ||
|
||
|
||
Linked vertex stage: | ||
|
||
|
||
Shader version: 150 | ||
Requested GL_ARB_gpu_shader5 | ||
0:? Sequence | ||
0:8 Function Definition: f(vu4;vu4; ( global 4-component vector of float) | ||
0:8 Function Parameters: | ||
0:8 'a' ( in 4-component vector of uint) | ||
0:8 'b' ( in 4-component vector of uint) | ||
0:8 Sequence | ||
0:8 Branch: Return with expression | ||
0:8 Convert uint to float ( temp 4-component vector of float) | ||
0:8 subtract ( temp 4-component vector of uint) | ||
0:8 'a' ( in 4-component vector of uint) | ||
0:8 'b' ( in 4-component vector of uint) | ||
0:10 Function Definition: main( ( global void) | ||
0:10 Function Parameters: | ||
0:12 Sequence | ||
0:12 move second child to first child ( temp 4-component vector of float) | ||
0:12 'result' ( smooth out 4-component vector of float) | ||
0:12 Function Call: f(vu4;vu4; ( global 4-component vector of float) | ||
0:12 Convert int to uint ( temp 4-component vector of uint) | ||
0:12 'u1' ( uniform 4-component vector of int) | ||
0:12 'u2' ( uniform 4-component vector of uint) | ||
0:13 switch | ||
0:13 condition | ||
0:13 'gl_VertexID' ( gl_VertexId int VertexId) | ||
0:13 body | ||
0:13 Sequence | ||
0:15 case: with expression | ||
0:15 Constant: | ||
0:15 0 (const int) | ||
0:? Sequence | ||
0:15 move second child to first child ( temp 4-component vector of float) | ||
0:15 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
0:15 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:15 Constant: | ||
0:15 0 (const uint) | ||
0:15 Constant: | ||
0:15 -1.000000 | ||
0:15 1.000000 | ||
0:15 0.000000 | ||
0:15 1.000000 | ||
0:15 Branch: Break | ||
0:16 case: with expression | ||
0:16 Constant: | ||
0:16 1 (const int) | ||
0:? Sequence | ||
0:16 move second child to first child ( temp 4-component vector of float) | ||
0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:16 Constant: | ||
0:16 0 (const uint) | ||
0:16 Constant: | ||
0:16 1.000000 | ||
0:16 1.000000 | ||
0:16 0.000000 | ||
0:16 1.000000 | ||
0:16 Branch: Break | ||
0:17 case: with expression | ||
0:17 Constant: | ||
0:17 2 (const int) | ||
0:? Sequence | ||
0:17 move second child to first child ( temp 4-component vector of float) | ||
0:17 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:17 Constant: | ||
0:17 0 (const uint) | ||
0:17 Constant: | ||
0:17 -1.000000 | ||
0:17 -1.000000 | ||
0:17 0.000000 | ||
0:17 1.000000 | ||
0:17 Branch: Break | ||
0:18 case: with expression | ||
0:18 Constant: | ||
0:18 3 (const int) | ||
0:? Sequence | ||
0:18 move second child to first child ( temp 4-component vector of float) | ||
0:18 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) | ||
0:18 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:18 Constant: | ||
0:18 0 (const uint) | ||
0:18 Constant: | ||
0:18 1.000000 | ||
0:18 -1.000000 | ||
0:18 0.000000 | ||
0:18 1.000000 | ||
0:18 Branch: Break | ||
0:? Linker Objects | ||
0:? 'u1' ( uniform 4-component vector of int) | ||
0:? 'u2' ( uniform 4-component vector of uint) | ||
0:? 'result' ( smooth out 4-component vector of float) | ||
0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) | ||
0:? 'gl_VertexID' ( gl_VertexId int VertexId) | ||
0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters