Fix radiance for sky in GLES stereo rendering

This commit is contained in:
Bastiaan Olij 2023-12-11 09:34:03 +11:00
parent b94eb58d35
commit e06ac4d40c
2 changed files with 12 additions and 3 deletions

View file

@ -976,10 +976,10 @@ void RasterizerSceneGLES3::_update_sky_radiance(RID p_env, const Projection &p_p
glDisable(GL_BLEND); glDisable(GL_BLEND);
glDepthMask(GL_FALSE); glDepthMask(GL_FALSE);
glDisable(GL_DEPTH_TEST); glDisable(GL_DEPTH_TEST);
scene_state.current_depth_test = GLES3::SceneShaderData::DEPTH_TEST_DISABLED;
glDisable(GL_SCISSOR_TEST); glDisable(GL_SCISSOR_TEST);
glCullFace(GL_BACK); glDisable(GL_CULL_FACE);
glEnable(GL_CULL_FACE); scene_state.cull_mode = GLES3::SceneShaderData::CULL_DISABLED;
scene_state.cull_mode = GLES3::SceneShaderData::CULL_BACK;
for (int i = 0; i < 6; i++) { for (int i = 0; i < 6; i++) {
Basis local_view = Basis::looking_at(view_normals[i], view_up[i]); Basis local_view = Basis::looking_at(view_normals[i], view_up[i]);
@ -1000,6 +1000,14 @@ void RasterizerSceneGLES3::_update_sky_radiance(RID p_env, const Projection &p_p
sky->reflection_dirty = false; sky->reflection_dirty = false;
} else { } else {
if (sky_mode == RS::SKY_MODE_INCREMENTAL && sky->processing_layer < max_processing_layer) { if (sky_mode == RS::SKY_MODE_INCREMENTAL && sky->processing_layer < max_processing_layer) {
glDisable(GL_BLEND);
glDepthMask(GL_FALSE);
glDisable(GL_DEPTH_TEST);
scene_state.current_depth_test = GLES3::SceneShaderData::DEPTH_TEST_DISABLED;
glDisable(GL_SCISSOR_TEST);
glDisable(GL_CULL_FACE);
scene_state.cull_mode = GLES3::SceneShaderData::CULL_DISABLED;
_filter_sky_radiance(sky, sky->processing_layer); _filter_sky_radiance(sky, sky->processing_layer);
sky->processing_layer++; sky->processing_layer++;
} }

View file

@ -1121,6 +1121,7 @@ void LightStorage::update_directional_shadow_atlas() {
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, directional_shadow.depth, 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, directional_shadow.depth, 0);
} }
glUseProgram(0);
glDepthMask(GL_TRUE); glDepthMask(GL_TRUE);
glBindFramebuffer(GL_FRAMEBUFFER, directional_shadow.fbo); glBindFramebuffer(GL_FRAMEBUFFER, directional_shadow.fbo);
RasterizerGLES3::clear_depth(1.0); RasterizerGLES3::clear_depth(1.0);