From 37f9858e1be0d0e617b57276f99330c79eec320c Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 11 Jun 2014 21:54:15 +0000 Subject: [PATCH] Add p3d_Material in GLSL --- panda/src/glstuff/glShaderContext_src.cxx | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/panda/src/glstuff/glShaderContext_src.cxx b/panda/src/glstuff/glShaderContext_src.cxx index d528e088a0..e9da393fd4 100755 --- a/panda/src/glstuff/glShaderContext_src.cxx +++ b/panda/src/glstuff/glShaderContext_src.cxx @@ -429,6 +429,35 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) { s->_tex_spec.push_back(bind); continue; } + if (size > 9 && noprefix.substr(0, 9) == "Material.") { + Shader::ShaderMatSpec bind; + bind._id = arg_id; + bind._func = Shader::SMF_first; + bind._part[0] = Shader::SMO_attr_material; + bind._arg[0] = NULL; + bind._dep[0] = Shader::SSD_general | Shader::SSD_material; + bind._part[1] = Shader::SMO_identity; + bind._arg[1] = NULL; + bind._dep[1] = Shader::SSD_NONE; + + if (noprefix == "Material.ambient") { + bind._piece = Shader::SMP_row0; + s->_mat_spec.push_back(bind); + continue; + } else if (noprefix == "Material.diffuse") { + bind._piece = Shader::SMP_row1; + s->_mat_spec.push_back(bind); + continue; + } else if (noprefix == "Material.emission") { + bind._piece = Shader::SMP_row2; + s->_mat_spec.push_back(bind); + continue; + } else if (noprefix == "Material.specular") { + bind._piece = Shader::SMP_row3; + s->_mat_spec.push_back(bind); + continue; + } + } if (noprefix == "ColorScale") { Shader::ShaderMatSpec bind; bind._id = arg_id;