mirror of https://github.com/godotengine/godot
Merge pull request #113609 from Kaleb-Reid/sun-scatter-incremental
Check if sun scatter is enabled when using SKY_MODE_AUTOMATIC
This commit is contained in:
commit
db8b25e62a
|
|
@ -683,8 +683,9 @@ void RasterizerSceneGLES3::_setup_sky(const RenderDataGLES3 *p_render_data, cons
|
|||
}
|
||||
}
|
||||
|
||||
bool sun_scatter_enabled = environment_get_fog_enabled(p_render_data->environment) && environment_get_fog_sun_scatter(p_render_data->environment) > 0.001;
|
||||
glBindBufferBase(GL_UNIFORM_BUFFER, SKY_DIRECTIONAL_LIGHT_UNIFORM_LOCATION, sky_globals.directional_light_buffer);
|
||||
if (shader_data->uses_light || (environment_get_fog_enabled(p_render_data->environment) && environment_get_fog_sun_scatter(p_render_data->environment) > 0.001)) {
|
||||
if (shader_data->uses_light || sun_scatter_enabled) {
|
||||
sky_globals.directional_light_count = 0;
|
||||
for (int i = 0; i < (int)p_lights.size(); i++) {
|
||||
GLES3::LightInstance *li = GLES3::LightStorage::get_singleton()->get_light_instance(p_lights[i]);
|
||||
|
|
@ -926,10 +927,12 @@ void RasterizerSceneGLES3::_update_sky_radiance(RID p_env, const Projection &p_p
|
|||
RS::SkyMode sky_mode = sky->mode;
|
||||
|
||||
if (sky_mode == RS::SKY_MODE_AUTOMATIC) {
|
||||
bool sun_scatter_enabled = environment_get_fog_enabled(p_env) && environment_get_fog_sun_scatter(p_env) > 0.001;
|
||||
|
||||
if ((shader_data->uses_time || shader_data->uses_position) && sky->radiance_size == 256) {
|
||||
update_single_frame = true;
|
||||
sky_mode = RS::SKY_MODE_REALTIME;
|
||||
} else if (shader_data->uses_light || shader_data->ubo_size > 0) {
|
||||
} else if (shader_data->uses_light || sun_scatter_enabled || shader_data->ubo_size > 0) {
|
||||
update_single_frame = false;
|
||||
sky_mode = RS::SKY_MODE_INCREMENTAL;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1024,8 +1024,9 @@ void SkyRD::setup_sky(const RenderDataRD *p_render_data, const Size2i p_screen_s
|
|||
}
|
||||
}
|
||||
|
||||
bool sun_scatter_enabled = RendererSceneRenderRD::get_singleton()->environment_get_fog_enabled(p_render_data->environment) && RendererSceneRenderRD::get_singleton()->environment_get_fog_sun_scatter(p_render_data->environment) > 0.001;
|
||||
sky_scene_state.ubo.directional_light_count = 0;
|
||||
if (shader_data->uses_light || (RendererSceneRenderRD::get_singleton()->environment_get_fog_enabled(p_render_data->environment) && RendererSceneRenderRD::get_singleton()->environment_get_fog_sun_scatter(p_render_data->environment) > 0.001)) {
|
||||
if (shader_data->uses_light || sun_scatter_enabled) {
|
||||
const PagedArray<RID> &lights = *p_render_data->lights;
|
||||
// Run through the list of lights in the scene and pick out the Directional Lights.
|
||||
// This can't be done in RenderSceneRenderRD::_setup lights because that needs to be called
|
||||
|
|
@ -1236,10 +1237,12 @@ void SkyRD::update_radiance_buffers(Ref<RenderSceneBuffersRD> p_render_buffers,
|
|||
RS::SkyMode sky_mode = sky->mode;
|
||||
|
||||
if (sky_mode == RS::SKY_MODE_AUTOMATIC) {
|
||||
bool sun_scatter_enabled = RendererSceneRenderRD::get_singleton()->environment_get_fog_enabled(p_env) && RendererSceneRenderRD::get_singleton()->environment_get_fog_sun_scatter(p_env) > 0.001;
|
||||
|
||||
if ((shader_data->uses_time || shader_data->uses_position) && sky->radiance_size == Sky::REAL_TIME_SIZE) {
|
||||
update_single_frame = true;
|
||||
sky_mode = RS::SKY_MODE_REALTIME;
|
||||
} else if (shader_data->uses_light || shader_data->ubo_size > 0) {
|
||||
} else if (shader_data->uses_light || sun_scatter_enabled || shader_data->ubo_size > 0) {
|
||||
update_single_frame = false;
|
||||
sky_mode = RS::SKY_MODE_INCREMENTAL;
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in New Issue