From bfbe415ea82ec20c870bf1db60920b7bd12387a5 Mon Sep 17 00:00:00 2001 From: Neil Roberts Date: Wed, 21 Jul 2010 19:28:09 +0100 Subject: [PATCH] Add a shader which does a negation as one of the arguments to dot This is basically doing: vec3 a_vec; vec3 b_vec; /* some random calculations */ float result = dot(-a_vec, b_vec); But for some reason it currently gets compiled as if it was: vec3 a_vec; vec3 b_vec; /* some random calculations */ float result = dot(--a_vec, b_vec); Ie, the negation gets done twice. https://bugs.freedesktop.org/show_bug.cgi?id=29199 --- tests/all.tests | 1 + tests/shaders/glsl-fs-neg-dot.shader_test | 33 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 0 deletions(-) create mode 100644 tests/shaders/glsl-fs-neg-dot.shader_test diff --git a/tests/all.tests b/tests/all.tests index de2cff0..28fdef3 100644 --- a/tests/all.tests +++ b/tests/all.tests @@ -355,6 +355,7 @@ add_plain_test(shaders, 'vp-ignore-input') add_plain_test(shaders, 'glsl-empty-vs-no-fs') add_plain_test(shaders, 'glsl-useprogram-displaylist') add_plain_test(shaders, 'glsl-vs-point-size') +add_shader_generic(shaders, 'glsl-fs-neg') fpgeneric = Group() def add_fpgeneric(name): diff --git a/tests/shaders/glsl-fs-neg-dot.shader_test b/tests/shaders/glsl-fs-neg-dot.shader_test new file mode 100644 index 0000000..779a2ea --- /dev/null +++ b/tests/shaders/glsl-fs-neg-dot.shader_test @@ -0,0 +1,33 @@ +[require] +GL >= 2.0 +GLSL >= 1.10 + +[vertex shader] +void main() +{ + gl_Position = gl_Vertex; +} + +[fragment shader] + +uniform vec3 vec_a; +uniform vec3 vec_b; + +void main() +{ + /* This is just doing some random calculations. This should end up + with tmp_vec = vec_a */ + vec3 tmp_vec = vec_a * 3.0; + tmp_vec /= length (tmp_vec); + /* For some reason, tmp_vec here seems to get negated twice and + the wrong value results */ + float dot_value = dot(-tmp_vec, vec_b); + gl_FragColor.xyz = vec3 (dot_value); + gl_FragColor.a = 1.0; +} + +[test] +uniform vec3 vec_a 1.0 0.0 0.0 +uniform vec3 vec_b -1.0 0.0 0.0 +draw rect -1 -1 2 2 +probe rgb 1 1 1.0 1.0 1.0 -- 1.7.1.87.g94e70