|
@@ -430,6 +430,74 @@ void EditorNode::_unhandled_input(const Ref<InputEvent> &p_event) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void EditorNode::_update_from_settings() {
|
|
|
+ int current_filter = GLOBAL_GET("rendering/canvas_textures/default_texture_filter");
|
|
|
+ if (current_filter != scene_root->get_default_canvas_item_texture_filter()) {
|
|
|
+ Viewport::DefaultCanvasItemTextureFilter tf = (Viewport::DefaultCanvasItemTextureFilter)current_filter;
|
|
|
+ scene_root->set_default_canvas_item_texture_filter(tf);
|
|
|
+ }
|
|
|
+ int current_repeat = GLOBAL_GET("rendering/canvas_textures/default_texture_repeat");
|
|
|
+ if (current_repeat != scene_root->get_default_canvas_item_texture_repeat()) {
|
|
|
+ Viewport::DefaultCanvasItemTextureRepeat tr = (Viewport::DefaultCanvasItemTextureRepeat)current_repeat;
|
|
|
+ scene_root->set_default_canvas_item_texture_repeat(tr);
|
|
|
+ }
|
|
|
+
|
|
|
+ RS::DOFBokehShape dof_shape = RS::DOFBokehShape(int(GLOBAL_GET("rendering/quality/depth_of_field/depth_of_field_bokeh_shape")));
|
|
|
+ RS::get_singleton()->camera_effects_set_dof_blur_bokeh_shape(dof_shape);
|
|
|
+ RS::DOFBlurQuality dof_quality = RS::DOFBlurQuality(int(GLOBAL_GET("rendering/quality/depth_of_field/depth_of_field_bokeh_quality")));
|
|
|
+ bool dof_jitter = GLOBAL_GET("rendering/quality/depth_of_field/depth_of_field_use_jitter");
|
|
|
+ RS::get_singleton()->camera_effects_set_dof_blur_quality(dof_quality, dof_jitter);
|
|
|
+ RS::get_singleton()->environment_set_ssao_quality(RS::EnvironmentSSAOQuality(int(GLOBAL_GET("rendering/quality/ssao/quality"))), GLOBAL_GET("rendering/quality/ssao/half_size"), GLOBAL_GET("rendering/quality/ssao/adaptive_target"), GLOBAL_GET("rendering/quality/ssao/blur_passes"), GLOBAL_GET("rendering/quality/ssao/fadeout_from"), GLOBAL_GET("rendering/quality/ssao/fadeout_to"));
|
|
|
+ RS::get_singleton()->screen_space_roughness_limiter_set_active(GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_enabled"), GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_amount"), GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_limit"));
|
|
|
+ bool glow_bicubic = int(GLOBAL_GET("rendering/quality/glow/upscale_mode")) > 0;
|
|
|
+ RS::get_singleton()->environment_glow_set_use_bicubic_upscale(glow_bicubic);
|
|
|
+ bool glow_high_quality = GLOBAL_GET("rendering/quality/glow/use_high_quality");
|
|
|
+ RS::get_singleton()->environment_glow_set_use_high_quality(glow_high_quality);
|
|
|
+ RS::EnvironmentSSRRoughnessQuality ssr_roughness_quality = RS::EnvironmentSSRRoughnessQuality(int(GLOBAL_GET("rendering/quality/screen_space_reflection/roughness_quality")));
|
|
|
+ RS::get_singleton()->environment_set_ssr_roughness_quality(ssr_roughness_quality);
|
|
|
+ RS::SubSurfaceScatteringQuality sss_quality = RS::SubSurfaceScatteringQuality(int(GLOBAL_GET("rendering/quality/subsurface_scattering/subsurface_scattering_quality")));
|
|
|
+ RS::get_singleton()->sub_surface_scattering_set_quality(sss_quality);
|
|
|
+ float sss_scale = GLOBAL_GET("rendering/quality/subsurface_scattering/subsurface_scattering_scale");
|
|
|
+ float sss_depth_scale = GLOBAL_GET("rendering/quality/subsurface_scattering/subsurface_scattering_depth_scale");
|
|
|
+ RS::get_singleton()->sub_surface_scattering_set_scale(sss_scale, sss_depth_scale);
|
|
|
+
|
|
|
+ uint32_t directional_shadow_size = GLOBAL_GET("rendering/quality/directional_shadow/size");
|
|
|
+ uint32_t directional_shadow_16_bits = GLOBAL_GET("rendering/quality/directional_shadow/16_bits");
|
|
|
+ RS::get_singleton()->directional_shadow_atlas_set_size(directional_shadow_size, directional_shadow_16_bits);
|
|
|
+
|
|
|
+ RS::ShadowQuality shadows_quality = RS::ShadowQuality(int(GLOBAL_GET("rendering/quality/shadows/soft_shadow_quality")));
|
|
|
+ RS::get_singleton()->shadows_quality_set(shadows_quality);
|
|
|
+ RS::ShadowQuality directional_shadow_quality = RS::ShadowQuality(int(GLOBAL_GET("rendering/quality/directional_shadow/soft_shadow_quality")));
|
|
|
+ RS::get_singleton()->directional_shadow_quality_set(directional_shadow_quality);
|
|
|
+ float probe_update_speed = GLOBAL_GET("rendering/lightmapper/probe_capture_update_speed");
|
|
|
+ RS::get_singleton()->lightmap_set_probe_capture_update_speed(probe_update_speed);
|
|
|
+ RS::EnvironmentSDFGIFramesToConverge frames_to_converge = RS::EnvironmentSDFGIFramesToConverge(int(GLOBAL_GET("rendering/sdfgi/frames_to_converge")));
|
|
|
+ RS::get_singleton()->environment_set_sdfgi_frames_to_converge(frames_to_converge);
|
|
|
+ RS::EnvironmentSDFGIRayCount ray_count = RS::EnvironmentSDFGIRayCount(int(GLOBAL_GET("rendering/sdfgi/probe_ray_count")));
|
|
|
+ RS::get_singleton()->environment_set_sdfgi_ray_count(ray_count);
|
|
|
+ RS::GIProbeQuality gi_probe_quality = RS::GIProbeQuality(int(GLOBAL_GET("rendering/quality/gi_probes/quality")));
|
|
|
+ RS::get_singleton()->gi_probe_set_quality(gi_probe_quality);
|
|
|
+ RS::get_singleton()->environment_set_volumetric_fog_volume_size(GLOBAL_GET("rendering/volumetric_fog/volume_size"), GLOBAL_GET("rendering/volumetric_fog/volume_depth"));
|
|
|
+ RS::get_singleton()->environment_set_volumetric_fog_filter_active(bool(GLOBAL_GET("rendering/volumetric_fog/use_filter")));
|
|
|
+ RS::get_singleton()->canvas_set_shadow_texture_size(GLOBAL_GET("rendering/quality/2d_shadow_atlas/size"));
|
|
|
+
|
|
|
+ bool use_half_res_gi = GLOBAL_DEF("rendering/quality/gi/use_half_resolution", false);
|
|
|
+ RS::get_singleton()->gi_set_use_half_resolution(use_half_res_gi);
|
|
|
+
|
|
|
+ bool snap_2d_transforms = GLOBAL_GET("rendering/quality/2d/snap_2d_transforms_to_pixel");
|
|
|
+ scene_root->set_snap_2d_transforms_to_pixel(snap_2d_transforms);
|
|
|
+ bool snap_2d_vertices = GLOBAL_GET("rendering/quality/2d/snap_2d_vertices_to_pixel");
|
|
|
+ scene_root->set_snap_2d_vertices_to_pixel(snap_2d_vertices);
|
|
|
+
|
|
|
+ Viewport::SDFOversize sdf_oversize = Viewport::SDFOversize(int(GLOBAL_GET("rendering/quality/2d_sdf/oversize")));
|
|
|
+ scene_root->set_sdf_oversize(sdf_oversize);
|
|
|
+ Viewport::SDFScale sdf_scale = Viewport::SDFScale(int(GLOBAL_GET("rendering/quality/2d_sdf/scale")));
|
|
|
+ scene_root->set_sdf_scale(sdf_scale);
|
|
|
+
|
|
|
+ float lod_threshold = GLOBAL_GET("rendering/quality/mesh_lod/threshold_pixels");
|
|
|
+ scene_root->set_lod_threshold(lod_threshold);
|
|
|
+}
|
|
|
+
|
|
|
void EditorNode::_notification(int p_what) {
|
|
|
switch (p_what) {
|
|
|
case NOTIFICATION_PROCESS: {
|
|
@@ -468,75 +536,13 @@ void EditorNode::_notification(int p_what) {
|
|
|
|
|
|
editor_selection->update();
|
|
|
|
|
|
- { //TODO should only happen on settings changed
|
|
|
- int current_filter = GLOBAL_GET("rendering/canvas_textures/default_texture_filter");
|
|
|
- if (current_filter != scene_root->get_default_canvas_item_texture_filter()) {
|
|
|
- Viewport::DefaultCanvasItemTextureFilter tf = (Viewport::DefaultCanvasItemTextureFilter)current_filter;
|
|
|
- scene_root->set_default_canvas_item_texture_filter(tf);
|
|
|
- }
|
|
|
- int current_repeat = GLOBAL_GET("rendering/canvas_textures/default_texture_repeat");
|
|
|
- if (current_repeat != scene_root->get_default_canvas_item_texture_repeat()) {
|
|
|
- Viewport::DefaultCanvasItemTextureRepeat tr = (Viewport::DefaultCanvasItemTextureRepeat)current_repeat;
|
|
|
- scene_root->set_default_canvas_item_texture_repeat(tr);
|
|
|
- }
|
|
|
+ ResourceImporterTexture::get_singleton()->update_imports();
|
|
|
|
|
|
- RS::DOFBokehShape dof_shape = RS::DOFBokehShape(int(GLOBAL_GET("rendering/quality/depth_of_field/depth_of_field_bokeh_shape")));
|
|
|
- RS::get_singleton()->camera_effects_set_dof_blur_bokeh_shape(dof_shape);
|
|
|
- RS::DOFBlurQuality dof_quality = RS::DOFBlurQuality(int(GLOBAL_GET("rendering/quality/depth_of_field/depth_of_field_bokeh_quality")));
|
|
|
- bool dof_jitter = GLOBAL_GET("rendering/quality/depth_of_field/depth_of_field_use_jitter");
|
|
|
- RS::get_singleton()->camera_effects_set_dof_blur_quality(dof_quality, dof_jitter);
|
|
|
- RS::get_singleton()->environment_set_ssao_quality(RS::EnvironmentSSAOQuality(int(GLOBAL_GET("rendering/quality/ssao/quality"))), GLOBAL_GET("rendering/quality/ssao/half_size"), GLOBAL_GET("rendering/quality/ssao/adaptive_target"), GLOBAL_GET("rendering/quality/ssao/blur_passes"), GLOBAL_GET("rendering/quality/ssao/fadeout_from"), GLOBAL_GET("rendering/quality/ssao/fadeout_to"));
|
|
|
- RS::get_singleton()->screen_space_roughness_limiter_set_active(GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_enabled"), GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_amount"), GLOBAL_GET("rendering/quality/screen_filters/screen_space_roughness_limiter_limit"));
|
|
|
- bool glow_bicubic = int(GLOBAL_GET("rendering/quality/glow/upscale_mode")) > 0;
|
|
|
- RS::get_singleton()->environment_glow_set_use_bicubic_upscale(glow_bicubic);
|
|
|
- bool glow_high_quality = GLOBAL_GET("rendering/quality/glow/use_high_quality");
|
|
|
- RS::get_singleton()->environment_glow_set_use_high_quality(glow_high_quality);
|
|
|
- RS::EnvironmentSSRRoughnessQuality ssr_roughness_quality = RS::EnvironmentSSRRoughnessQuality(int(GLOBAL_GET("rendering/quality/screen_space_reflection/roughness_quality")));
|
|
|
- RS::get_singleton()->environment_set_ssr_roughness_quality(ssr_roughness_quality);
|
|
|
- RS::SubSurfaceScatteringQuality sss_quality = RS::SubSurfaceScatteringQuality(int(GLOBAL_GET("rendering/quality/subsurface_scattering/subsurface_scattering_quality")));
|
|
|
- RS::get_singleton()->sub_surface_scattering_set_quality(sss_quality);
|
|
|
- float sss_scale = GLOBAL_GET("rendering/quality/subsurface_scattering/subsurface_scattering_scale");
|
|
|
- float sss_depth_scale = GLOBAL_GET("rendering/quality/subsurface_scattering/subsurface_scattering_depth_scale");
|
|
|
- RS::get_singleton()->sub_surface_scattering_set_scale(sss_scale, sss_depth_scale);
|
|
|
-
|
|
|
- uint32_t directional_shadow_size = GLOBAL_GET("rendering/quality/directional_shadow/size");
|
|
|
- uint32_t directional_shadow_16_bits = GLOBAL_GET("rendering/quality/directional_shadow/16_bits");
|
|
|
- RS::get_singleton()->directional_shadow_atlas_set_size(directional_shadow_size, directional_shadow_16_bits);
|
|
|
-
|
|
|
- RS::ShadowQuality shadows_quality = RS::ShadowQuality(int(GLOBAL_GET("rendering/quality/shadows/soft_shadow_quality")));
|
|
|
- RS::get_singleton()->shadows_quality_set(shadows_quality);
|
|
|
- RS::ShadowQuality directional_shadow_quality = RS::ShadowQuality(int(GLOBAL_GET("rendering/quality/directional_shadow/soft_shadow_quality")));
|
|
|
- RS::get_singleton()->directional_shadow_quality_set(directional_shadow_quality);
|
|
|
- float probe_update_speed = GLOBAL_GET("rendering/lightmapper/probe_capture_update_speed");
|
|
|
- RS::get_singleton()->lightmap_set_probe_capture_update_speed(probe_update_speed);
|
|
|
- RS::EnvironmentSDFGIFramesToConverge frames_to_converge = RS::EnvironmentSDFGIFramesToConverge(int(GLOBAL_GET("rendering/sdfgi/frames_to_converge")));
|
|
|
- RS::get_singleton()->environment_set_sdfgi_frames_to_converge(frames_to_converge);
|
|
|
- RS::EnvironmentSDFGIRayCount ray_count = RS::EnvironmentSDFGIRayCount(int(GLOBAL_GET("rendering/sdfgi/probe_ray_count")));
|
|
|
- RS::get_singleton()->environment_set_sdfgi_ray_count(ray_count);
|
|
|
- RS::GIProbeQuality gi_probe_quality = RS::GIProbeQuality(int(GLOBAL_GET("rendering/quality/gi_probes/quality")));
|
|
|
- RS::get_singleton()->gi_probe_set_quality(gi_probe_quality);
|
|
|
- RS::get_singleton()->environment_set_volumetric_fog_volume_size(GLOBAL_GET("rendering/volumetric_fog/volume_size"), GLOBAL_GET("rendering/volumetric_fog/volume_depth"));
|
|
|
- RS::get_singleton()->environment_set_volumetric_fog_filter_active(bool(GLOBAL_GET("rendering/volumetric_fog/use_filter")));
|
|
|
- RS::get_singleton()->canvas_set_shadow_texture_size(GLOBAL_GET("rendering/quality/2d_shadow_atlas/size"));
|
|
|
-
|
|
|
- bool use_half_res_gi = GLOBAL_DEF("rendering/quality/gi/use_half_resolution", false);
|
|
|
- RS::get_singleton()->gi_set_use_half_resolution(use_half_res_gi);
|
|
|
-
|
|
|
- bool snap_2d_transforms = GLOBAL_GET("rendering/quality/2d/snap_2d_transforms_to_pixel");
|
|
|
- scene_root->set_snap_2d_transforms_to_pixel(snap_2d_transforms);
|
|
|
- bool snap_2d_vertices = GLOBAL_GET("rendering/quality/2d/snap_2d_vertices_to_pixel");
|
|
|
- scene_root->set_snap_2d_vertices_to_pixel(snap_2d_vertices);
|
|
|
-
|
|
|
- Viewport::SDFOversize sdf_oversize = Viewport::SDFOversize(int(GLOBAL_GET("rendering/quality/2d_sdf/oversize")));
|
|
|
- scene_root->set_sdf_oversize(sdf_oversize);
|
|
|
- Viewport::SDFScale sdf_scale = Viewport::SDFScale(int(GLOBAL_GET("rendering/quality/2d_sdf/scale")));
|
|
|
- scene_root->set_sdf_scale(sdf_scale);
|
|
|
-
|
|
|
- float lod_threshold = GLOBAL_GET("rendering/quality/mesh_lod/threshold_pixels");
|
|
|
- scene_root->set_lod_threshold(lod_threshold);
|
|
|
+ if (settings_changed) {
|
|
|
+ _update_from_settings();
|
|
|
+ settings_changed = false;
|
|
|
+ emit_signal("project_settings_changed");
|
|
|
}
|
|
|
-
|
|
|
- ResourceImporterTexture::get_singleton()->update_imports();
|
|
|
} break;
|
|
|
|
|
|
case NOTIFICATION_ENTER_TREE: {
|
|
@@ -960,6 +966,7 @@ void EditorNode::_reload_modified_scenes() {
|
|
|
|
|
|
void EditorNode::_reload_project_settings() {
|
|
|
ProjectSettings::get_singleton()->setup(ProjectSettings::get_singleton()->get_resource_path(), String(), true);
|
|
|
+ settings_changed = true;
|
|
|
}
|
|
|
|
|
|
void EditorNode::_vp_resized() {
|
|
@@ -5538,6 +5545,7 @@ void EditorNode::_bind_methods() {
|
|
|
ADD_SIGNAL(MethodInfo("request_help_search"));
|
|
|
ADD_SIGNAL(MethodInfo("script_add_function_request", PropertyInfo(Variant::OBJECT, "obj"), PropertyInfo(Variant::STRING, "function"), PropertyInfo(Variant::PACKED_STRING_ARRAY, "args")));
|
|
|
ADD_SIGNAL(MethodInfo("resource_saved", PropertyInfo(Variant::OBJECT, "obj")));
|
|
|
+ ADD_SIGNAL(MethodInfo("project_settings_changed"));
|
|
|
}
|
|
|
|
|
|
static Node *_resource_get_edited_scene() {
|
|
@@ -5605,6 +5613,10 @@ int EditorNode::execute_and_show_output(const String &p_title, const String &p_p
|
|
|
return eta.exitcode;
|
|
|
}
|
|
|
|
|
|
+void EditorNode::notify_settings_changed() {
|
|
|
+ settings_changed = true;
|
|
|
+}
|
|
|
+
|
|
|
EditorNode::EditorNode() {
|
|
|
Input::get_singleton()->set_use_accumulated_input(true);
|
|
|
Resource::_get_local_scene_func = _resource_get_edited_scene;
|