diff options
author | clayjohn <claynjohn@gmail.com> | 2024-04-29 10:34:17 -0700 |
---|---|---|
committer | clayjohn <claynjohn@gmail.com> | 2024-05-02 11:34:48 -0700 |
commit | 8eae822b54aa671f4c9b39ea884df5164e7ca318 (patch) | |
tree | d4b99782f8fe5794b41064a7b44ce7531f953124 | |
parent | b9e022302aa4a5d97f8b25a1db809e64b46b6f96 (diff) | |
download | redot-engine-8eae822b54aa671f4c9b39ea884df5164e7ca318.tar.gz |
Ensure that environment is available before checking for BCS
-rw-r--r-- | drivers/gles3/rasterizer_scene_gles3.cpp | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp index ee770be3da..7048301e57 100644 --- a/drivers/gles3/rasterizer_scene_gles3.cpp +++ b/drivers/gles3/rasterizer_scene_gles3.cpp @@ -2706,27 +2706,32 @@ void RasterizerSceneGLES3::_render_post_processing(const RenderDataGLES3 *p_rend rb->check_glow_buffers(); } - bool use_bcs = environment_get_adjustments_enabled(p_render_data->environment); uint64_t bcs_spec_constants = 0; - RID color_correction_texture = environment_get_color_correction(p_render_data->environment); - if (use_bcs && color_correction_texture.is_valid()) { - bcs_spec_constants |= PostShaderGLES3::USE_BCS; - bcs_spec_constants |= PostShaderGLES3::USE_COLOR_CORRECTION; - - bool use_1d_lut = environment_get_use_1d_color_correction(p_render_data->environment); - GLenum texture_target = GL_TEXTURE_3D; - if (use_1d_lut) { - bcs_spec_constants |= PostShaderGLES3::USE_1D_LUT; - texture_target = GL_TEXTURE_2D; - } + if (p_render_data->environment.is_valid()) { + bool use_bcs = environment_get_adjustments_enabled(p_render_data->environment); + RID color_correction_texture = environment_get_color_correction(p_render_data->environment); + if (use_bcs) { + bcs_spec_constants |= PostShaderGLES3::USE_BCS; + + if (color_correction_texture.is_valid()) { + bcs_spec_constants |= PostShaderGLES3::USE_COLOR_CORRECTION; - glActiveTexture(GL_TEXTURE2); - glBindTexture(texture_target, texture_storage->texture_get_texid(color_correction_texture)); - glTexParameteri(texture_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(texture_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(texture_target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); + bool use_1d_lut = environment_get_use_1d_color_correction(p_render_data->environment); + GLenum texture_target = GL_TEXTURE_3D; + if (use_1d_lut) { + bcs_spec_constants |= PostShaderGLES3::USE_1D_LUT; + texture_target = GL_TEXTURE_2D; + } + + glActiveTexture(GL_TEXTURE2); + glBindTexture(texture_target, texture_storage->texture_get_texid(color_correction_texture)); + glTexParameteri(texture_target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(texture_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(texture_target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(texture_target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexParameteri(texture_target, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); + } + } } if (view_count == 1) { |