From 2c9deaaaf06fba7b4d5f71e9e75cd4919aa5a18e Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 6 Dec 2022 12:57:45 +0100 Subject: [PATCH] glgsg: Fix 1 texture stage limit when setting `gl-version 3 2` or higher Fixes #1404 --- panda/src/glstuff/glGraphicsStateGuardian_src.cxx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index 24bd54134d..3e22c98eb3 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -11623,7 +11623,17 @@ set_state_and_transform(const RenderState *target, if (_target_rs->get_attrib(texture_slot) != _state_rs->get_attrib(texture_slot) || !_state_mask.get_bit(texture_slot)) { PStatGPUTimer timer(this, _draw_set_state_texture_pcollector); - determine_target_texture(); + if (has_fixed_function_pipeline() || + _current_shader == nullptr || + _current_shader == _default_shader) { + determine_target_texture(); + } else { + // If we have a custom shader, don't filter down the list of textures. + _target_texture = (const TextureAttrib *) + _target_rs->get_attrib_def(TextureAttrib::get_class_slot()); + _target_tex_gen = (const TexGenAttrib *) + _target_rs->get_attrib_def(TexGenAttrib::get_class_slot()); + } do_issue_texture(); // Since the TexGen and TexMatrix states depend partly on the particular