X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tests%2Fglsl%2Fspecialization_constants.glsl;fp=tests%2Fglsl%2Fspecialization_constants.glsl;h=b5666f2de1d37d290363d8e78932f68809790ddc;hb=05d8360ceef28e0b36e96127e04a82dd77a5c433;hp=0000000000000000000000000000000000000000;hpb=cfee1ea700d860db170fd1621f3716bc47b677f8;p=libs%2Fgl.git diff --git a/tests/glsl/specialization_constants.glsl b/tests/glsl/specialization_constants.glsl new file mode 100644 index 00000000..b5666f2d --- /dev/null +++ b/tests/glsl/specialization_constants.glsl @@ -0,0 +1,50 @@ +layout(constant_id=0) const bool use_texture = false; +layout(constant_id=1) const bool use_vertex_color = false; +uniform sampler2D tex; +uniform mat4 mvp; + +#pragma MSP stage(vertex) +layout(location=0) in vec4 position; +layout(location=1) in vec4 color; +layout(location=2) in vec2 texcoord; +void main() +{ + passthrough; + gl_Position = mvp*position; +} + +#pragma MSP stage(fragment) +layout(location=0) out vec4 frag_color; +void main() +{ + frag_color = vec4(1.0); + if(use_texture) + frag_color *= texture(tex, texcoord); + if(use_vertex_color) + frag_color *= color; +} + +// Specialize: use_texture true + +/* Expected output: vertex +uniform mat4 mvp; +layout(location=0) in vec4 position; +layout(location=2) in vec2 texcoord; +out vec2 _vs_out_texcoord; +void main() +{ + _vs_out_texcoord = texcoord; + gl_Position = mvp*position; +} +*/ + +/* Expected output: fragment +uniform sampler2D tex; +layout(location=0) out vec4 frag_color; +in vec2 _vs_out_texcoord; +void main() +{ + frag_color = vec4(1.0); + frag_color *= texture(tex, _vs_out_texcoord); +} +*/