From 89c5f6f602dbbf121e68ddae6b0cb77c1142fa75 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 4 Jul 2014 14:47:41 +0000 Subject: [PATCH] Allow using PTA's for float vectors --- panda/src/glstuff/glShaderContext_src.cxx | 45 ++++++++--------------- 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/panda/src/glstuff/glShaderContext_src.cxx b/panda/src/glstuff/glShaderContext_src.cxx index bc0d54eb19..54ea96f726 100755 --- a/panda/src/glstuff/glShaderContext_src.cxx +++ b/panda/src/glstuff/glShaderContext_src.cxx @@ -541,31 +541,6 @@ CLP(ShaderContext)(CLP(GraphicsStateGuardian) *glgsg, Shader *s) : ShaderContext bind._dep[1] = Shader::SSD_NONE; s->_mat_spec.push_back(bind); continue; } - case GL_FLOAT: - case GL_FLOAT_VEC2: - case GL_FLOAT_VEC3: - case GL_FLOAT_VEC4: { - Shader::ShaderMatSpec bind; - bind._id = arg_id; - switch (param_type) { - case GL_BOOL: - case GL_FLOAT: bind._piece = Shader::SMP_row3x1; break; - case GL_BOOL_VEC2: - case GL_FLOAT_VEC2: bind._piece = Shader::SMP_row3x2; break; - case GL_BOOL_VEC3: - case GL_FLOAT_VEC3: bind._piece = Shader::SMP_row3x3; break; - case GL_BOOL_VEC4: - case GL_FLOAT_VEC4: bind._piece = Shader::SMP_row3 ; break; - } - bind._func = Shader::SMF_first; - bind._part[0] = Shader::SMO_vec_constant_x; - bind._arg[0] = InternalName::make(param_name); - bind._dep[0] = Shader::SSD_general | Shader::SSD_shaderinputs; - bind._part[1] = Shader::SMO_identity; - bind._arg[1] = NULL; - bind._dep[1] = Shader::SSD_NONE; - s->_mat_spec.push_back(bind); - continue; } case GL_BOOL: case GL_BOOL_VEC2: case GL_BOOL_VEC3: @@ -573,18 +548,28 @@ CLP(ShaderContext)(CLP(GraphicsStateGuardian) *glgsg, Shader *s) : ShaderContext case GL_INT: case GL_INT_VEC2: case GL_INT_VEC3: - case GL_INT_VEC4: { + case GL_INT_VEC4: + case GL_FLOAT: + case GL_FLOAT_VEC2: + case GL_FLOAT_VEC3: + case GL_FLOAT_VEC4: { Shader::ShaderPtrSpec bind; bind._id = arg_id; switch (param_type) { case GL_BOOL: - case GL_INT: bind._dim[1] = 1; break; + case GL_INT: + case GL_FLOAT: bind._dim[1] = 1; break; case GL_BOOL_VEC2: - case GL_INT_VEC2: bind._dim[1] = 2; break; + case GL_INT_VEC2: + case GL_FLOAT_VEC2: bind._dim[1] = 2; break; case GL_BOOL_VEC3: - case GL_INT_VEC3: bind._dim[1] = 3; break; + case GL_INT_VEC3: + case GL_FLOAT_VEC3: bind._dim[1] = 3; break; case GL_BOOL_VEC4: - case GL_INT_VEC4: bind._dim[1] = 4; break; + case GL_INT_VEC4: + case GL_FLOAT_VEC4: bind._dim[1] = 4; break; + case GL_FLOAT_MAT3: bind._dim[1] = 9; break; + case GL_FLOAT_MAT4: bind._dim[1] = 16; break; } bind._arg = InternalName::make(param_name); bind._dim[0] = 1;