summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorThaddeus Crews <repiteo@outlook.com>2024-11-27 10:46:58 -0600
committerThaddeus Crews <repiteo@outlook.com>2024-11-27 10:46:58 -0600
commit6e533b5ee462af5275982e92a1d36028429b0dae (patch)
tree67d9c789227296b6db83d6e258f08d6ea823a29c /drivers
parentc58ae91efaaf593f1cfa38e9ee557203a8531c48 (diff)
parent45a7bcc477623b7941bb4a145ddfa62b77e97096 (diff)
downloadredot-engine-6e533b5ee462af5275982e92a1d36028429b0dae.tar.gz
Merge pull request #99606 from jamie-pate/fix_99592
Fix gl_compatibility lightmap uniforms not being set
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index dfc7d02ac0..17bdcbcad3 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -3314,10 +3314,6 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
}
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::OPAQUE_PREPASS_THRESHOLD, opaque_prepass_threshold, shader->version, instance_variant, spec_constants);
-
- prev_shader = shader;
- prev_variant = instance_variant;
- prev_spec_constants = spec_constants;
}
// Pass in lighting uniforms.
@@ -3355,7 +3351,7 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
}
// Pass light count and array of light indices for base pass.
- if ((prev_inst != inst || prev_shader != shader || prev_variant != instance_variant) && pass == 0) {
+ if ((prev_inst != inst || prev_shader != shader || prev_variant != instance_variant || prev_spec_constants != spec_constants) && pass == 0) {
// Rebind the light indices.
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::OMNI_LIGHT_COUNT, inst->omni_light_gl_cache.size(), shader->version, instance_variant, spec_constants);
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::SPOT_LIGHT_COUNT, inst->spot_light_gl_cache.size(), shader->version, instance_variant, spec_constants);
@@ -3412,11 +3408,14 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
} else if (inst->lightmap_sh) {
glUniform4fv(material_storage->shaders.scene_shader.version_get_uniform(SceneShaderGLES3::LIGHTMAP_CAPTURES, shader->version, instance_variant, spec_constants), 9, reinterpret_cast<const GLfloat *>(inst->lightmap_sh->sh));
}
-
prev_inst = inst;
}
}
+ prev_shader = shader;
+ prev_variant = instance_variant;
+ prev_spec_constants = spec_constants;
+
// Pass in reflection probe data
if constexpr (p_pass_mode == PASS_MODE_COLOR || p_pass_mode == PASS_MODE_COLOR_TRANSPARENT) {
if (pass == 0 && inst->reflection_probe_rid_cache.size() > 0) {