From f6971cc724b78ccc47aa13ffed76eef475c9abef Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 19 Nov 2009 19:22:18 +0000 Subject: [PATCH] fix texture limit on shader case --- panda/src/dxgsg9/dxShaderContext9.cxx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/panda/src/dxgsg9/dxShaderContext9.cxx b/panda/src/dxgsg9/dxShaderContext9.cxx index 01ab62beb4..41db581b0b 100644 --- a/panda/src/dxgsg9/dxShaderContext9.cxx +++ b/panda/src/dxgsg9/dxShaderContext9.cxx @@ -740,11 +740,16 @@ update_shader_texture_bindings(CLP(ShaderContext) *prev, GSG *gsg) const ShaderInput *input = gsg->_target_shader->get_shader_input(id); tex = input->get_texture(); } else { - if (_shader->_tex_spec[i]._stage >= gsg->_target_texture->get_num_on_stages()) { + // We get the TextureAttrib directly from the _target_rs, not the + // filtered TextureAttrib in _target_texture. + const TextureAttrib *texattrib = DCAST(TextureAttrib, gsg->_target_rs->get_attrib_def(TextureAttrib::get_class_slot())); + nassertv(texattrib != (TextureAttrib *)NULL); + + if (_shader->_tex_spec[i]._stage >= texattrib->get_num_on_stages()) { continue; } - TextureStage *stage = gsg->_target_texture->get_on_stage(_shader->_tex_spec[i]._stage); - tex = gsg->_target_texture->get_on_texture(stage); + TextureStage *stage = texattrib->get_on_stage(_shader->_tex_spec[i]._stage); + tex = texattrib->get_on_texture(stage); } if (_shader->_tex_spec[i]._suffix != 0) { // The suffix feature is inefficient. It is a temporary hack.