fix texture limit on shader case

This commit is contained in:
David Rose 2009-11-19 19:22:18 +00:00
parent 02db4e5ae1
commit f6971cc724

View File

@ -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.