From 21472cda9b5a2e3aebd2699a9dd00392caa0cf55 Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 23 Feb 2013 10:55:43 +0000 Subject: [PATCH] Fix GLSL bugs with passing Vec2 and Vec3 --- panda/src/glstuff/glShaderContext_src.cxx | 8 ++++---- panda/src/pgraph/shaderInput.I | 16 ++++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/panda/src/glstuff/glShaderContext_src.cxx b/panda/src/glstuff/glShaderContext_src.cxx index 376c98f4bf..6fad6d35e4 100755 --- a/panda/src/glstuff/glShaderContext_src.cxx +++ b/panda/src/glstuff/glShaderContext_src.cxx @@ -397,7 +397,7 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) { continue; } - if (param_size==1) { + if (param_size == 1) { switch (param_type) { #ifndef OPENGLES case GL_SAMPLER_1D_SHADOW: @@ -836,9 +836,9 @@ issue_parameters(GSG *gsg, int altered) { } GLint p = _glsl_parameter_map[_shader->_ptr_spec[i]._id._seqno]; switch(_ptr._dim[1]) { - case 1: gsg->_glUniform4fv(p, _ptr._dim[0], (float*)_ptr_data->_ptr); continue; - case 2: gsg->_glUniform4fv(p, _ptr._dim[0], (float*)_ptr_data->_ptr); continue; - case 3: gsg->_glUniform4fv(p, _ptr._dim[0], (float*)_ptr_data->_ptr); continue; + case 1: gsg->_glUniform1fv(p, _ptr._dim[0], (float*)_ptr_data->_ptr); continue; + case 2: gsg->_glUniform2fv(p, _ptr._dim[0], (float*)_ptr_data->_ptr); continue; + case 3: gsg->_glUniform3fv(p, _ptr._dim[0], (float*)_ptr_data->_ptr); continue; case 4: gsg->_glUniform4fv(p, _ptr._dim[0], (float*)_ptr_data->_ptr); continue; } } diff --git a/panda/src/pgraph/shaderInput.I b/panda/src/pgraph/shaderInput.I index bc0c2da6e1..82d55f090c 100644 --- a/panda/src/pgraph/shaderInput.I +++ b/panda/src/pgraph/shaderInput.I @@ -130,7 +130,7 @@ ShaderInput(const InternalName *name, const LVecBase4f &vec, int priority) : _type(M_numeric), _priority(priority), _stored_ptr(vec), - _stored_vector(LCAST(PN_stdfloat, vec)) //old GLSL inputs must be supported + _stored_vector(LCAST(PN_stdfloat, vec)) { } @@ -144,7 +144,8 @@ ShaderInput(const InternalName *name, const LVecBase3f &vec, int priority) : _name(name), _type(M_numeric), _priority(priority), - _stored_ptr(vec) + _stored_ptr(vec), + _stored_vector(vec.get_x(), vec.get_y(), vec.get_z(), 0.0) { } @@ -158,7 +159,8 @@ ShaderInput(const InternalName *name, const LVecBase2f &vec, int priority) : _name(name), _type(M_numeric), _priority(priority), - _stored_ptr(vec) + _stored_ptr(vec), + _stored_vector(vec.get_x(), vec.get_y(), 0.0, 0.0) { } @@ -285,7 +287,7 @@ ShaderInput(const InternalName *name, const LVecBase4d &vec, int priority) : _type(M_numeric), _priority(priority), _stored_ptr(vec), - _stored_vector(LCAST(PN_stdfloat, vec)) //old GLSL inputs must be supported + _stored_vector(LCAST(PN_stdfloat, vec)) { } @@ -299,7 +301,8 @@ ShaderInput(const InternalName *name, const LVecBase3d &vec, int priority) : _name(name), _type(M_numeric), _priority(priority), - _stored_ptr(vec) + _stored_ptr(vec), + _stored_vector(vec.get_x(), vec.get_y(), vec.get_z(), 0.0) { } @@ -313,7 +316,8 @@ ShaderInput(const InternalName *name, const LVecBase2d &vec, int priority) : _name(name), _type(M_numeric), _priority(priority), - _stored_ptr(vec) + _stored_ptr(vec), + _stored_vector(vec.get_x(), vec.get_y(), 0.0, 0.0) { }