Merge pull request #116248 from KoBeWi/ReloadHD
Rework updating editor viewport HDR
This commit is contained in:
commit
77c66698e6
10 changed files with 42 additions and 38 deletions
|
|
@ -569,6 +569,24 @@ void EditorNode::_update_from_settings() {
|
|||
tree->set_debug_collisions_color(GLOBAL_GET("debug/shapes/collision/shape_color"));
|
||||
tree->set_debug_collision_contact_color(GLOBAL_GET("debug/shapes/collision/contact_color"));
|
||||
|
||||
if (ProjectSettings::get_singleton()->check_changed_settings_in_group("display/window/hdr/request_hdr_output") || ProjectSettings::get_singleton()->check_changed_settings_in_group("rendering/viewport/hdr_2d")) {
|
||||
const bool use_hdr = GLOBAL_GET("display/window/hdr/request_hdr_output").operator bool() || GLOBAL_GET("rendering/viewport/hdr_2d").operator bool();
|
||||
|
||||
LocalVector<ObjectID> invalid_viewports;
|
||||
for (const ObjectID &id : hdr_viewports) {
|
||||
Viewport *vp = ObjectDB::get_instance<Viewport>(id);
|
||||
if (vp) {
|
||||
vp->set_use_hdr_2d(use_hdr);
|
||||
} else {
|
||||
invalid_viewports.push_back(id);
|
||||
}
|
||||
}
|
||||
|
||||
for (const ObjectID &id : invalid_viewports) {
|
||||
hdr_viewports.erase(id);
|
||||
}
|
||||
}
|
||||
|
||||
ResourceImporterTexture::get_singleton()->update_imports();
|
||||
|
||||
_update_translations();
|
||||
|
|
@ -4701,6 +4719,14 @@ void EditorNode::setup_color_picker(ColorPicker *p_picker) {
|
|||
palette_file_selected_callback = callable_mp(p_picker, &ColorPicker::_quick_open_palette_file_selected);
|
||||
}
|
||||
|
||||
void EditorNode::register_hdr_viewport(Viewport *p_viewport) {
|
||||
const bool hdr_requested = GLOBAL_GET("display/window/hdr/request_hdr_output");
|
||||
const bool hdr_2d_enabled = GLOBAL_GET("rendering/viewport/hdr_2d");
|
||||
p_viewport->set_use_hdr_2d(hdr_2d_enabled || hdr_requested);
|
||||
|
||||
hdr_viewports.push_back(p_viewport->get_instance_id());
|
||||
}
|
||||
|
||||
bool EditorNode::is_scene_open(const String &p_path) {
|
||||
for (int i = 0; i < editor_data.get_edited_scene_count(); i++) {
|
||||
if (editor_data.get_scene_path(i) == p_path) {
|
||||
|
|
|
|||
|
|
@ -476,6 +476,7 @@ private:
|
|||
HashSet<String> textfile_extensions;
|
||||
HashSet<String> other_file_extensions;
|
||||
HashSet<FileDialog *> file_dialogs;
|
||||
LocalVector<ObjectID> hdr_viewports;
|
||||
|
||||
Vector<Ref<EditorResourceConversionPlugin>> resource_conversion_plugins;
|
||||
PrintHandlerList print_handler;
|
||||
|
|
@ -940,6 +941,7 @@ public:
|
|||
bool is_multi_window_enabled() const;
|
||||
|
||||
void setup_color_picker(ColorPicker *p_picker);
|
||||
void register_hdr_viewport(Viewport *p_viewport);
|
||||
|
||||
void request_instantiate_scene(const String &p_path);
|
||||
void request_instantiate_scenes(const Vector<String> &p_files);
|
||||
|
|
|
|||
|
|
@ -1995,14 +1995,7 @@ SceneImportSettingsDialog::SceneImportSettingsDialog() {
|
|||
update_view_timer->connect("timeout", callable_mp(this, &SceneImportSettingsDialog::_update_view_gizmos));
|
||||
add_child(update_view_timer);
|
||||
|
||||
ProjectSettings::get_singleton()->connect("settings_changed", callable_mp(this, &SceneImportSettingsDialog::_project_settings_changed));
|
||||
_project_settings_changed();
|
||||
}
|
||||
|
||||
void SceneImportSettingsDialog::_project_settings_changed() {
|
||||
const bool hdr_requested = GLOBAL_GET("display/window/hdr/request_hdr_output");
|
||||
const bool hdr_2d_enabled = GLOBAL_GET("rendering/viewport/hdr_2d");
|
||||
base_viewport->set_use_hdr_2d(hdr_2d_enabled || hdr_requested);
|
||||
EditorNode::get_singleton()->register_hdr_viewport(base_viewport);
|
||||
}
|
||||
|
||||
SceneImportSettingsDialog::~SceneImportSettingsDialog() {
|
||||
|
|
|
|||
|
|
@ -207,7 +207,6 @@ class SceneImportSettingsDialog : public ConfirmationDialog {
|
|||
ResourceImporterScene *_resource_importer_scene = nullptr;
|
||||
|
||||
void _re_import();
|
||||
void _project_settings_changed();
|
||||
|
||||
String base_path;
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "camera_3d_editor_plugin.h"
|
||||
|
||||
#include "core/config/project_settings.h"
|
||||
#include "editor/editor_node.h"
|
||||
#include "node_3d_editor_plugin.h"
|
||||
#include "scene/gui/aspect_ratio_container.h"
|
||||
#include "scene/gui/foldable_container.h"
|
||||
|
|
@ -116,16 +117,16 @@ Camera3DPreview::Camera3DPreview(Camera3D *p_camera) {
|
|||
|
||||
RenderingServer::get_singleton()->viewport_attach_camera(sub_viewport->get_viewport_rid(), camera->get_camera());
|
||||
|
||||
EditorNode::get_singleton()->register_hdr_viewport(sub_viewport);
|
||||
|
||||
ProjectSettings::get_singleton()->connect("settings_changed", callable_mp(this, &Camera3DPreview::_project_settings_changed));
|
||||
_project_settings_changed();
|
||||
_update_sub_viewport_size();
|
||||
}
|
||||
|
||||
void Camera3DPreview::_project_settings_changed() {
|
||||
_update_sub_viewport_size();
|
||||
|
||||
const bool hdr_requested = GLOBAL_GET("display/window/hdr/request_hdr_output");
|
||||
const bool use_hdr_2d = GLOBAL_GET("rendering/viewport/hdr_2d");
|
||||
sub_viewport->set_use_hdr_2d(use_hdr_2d || hdr_requested);
|
||||
if (ProjectSettings::get_singleton()->check_changed_settings_in_group("display/window/size")) {
|
||||
_update_sub_viewport_size();
|
||||
}
|
||||
}
|
||||
|
||||
bool EditorInspectorPluginCamera3DPreview::can_handle(Object *p_object) {
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "mesh_editor_plugin.h"
|
||||
|
||||
#include "core/config/project_settings.h"
|
||||
#include "editor/editor_node.h"
|
||||
#include "editor/themes/editor_scale.h"
|
||||
#include "scene/gui/button.h"
|
||||
#include "scene/main/viewport.h"
|
||||
|
|
@ -71,12 +72,6 @@ void MeshEditor::_update_rotation() {
|
|||
rotation->set_transform(t);
|
||||
}
|
||||
|
||||
void MeshEditor::_project_settings_changed() {
|
||||
const bool hdr_requested = GLOBAL_GET("display/window/hdr/request_hdr_output");
|
||||
const bool use_hdr_2d = GLOBAL_GET("rendering/viewport/hdr_2d");
|
||||
viewport->set_use_hdr_2d(use_hdr_2d || hdr_requested);
|
||||
}
|
||||
|
||||
void MeshEditor::edit(Ref<Mesh> p_mesh) {
|
||||
mesh = p_mesh;
|
||||
mesh_instance->set_mesh(mesh);
|
||||
|
|
@ -170,8 +165,7 @@ MeshEditor::MeshEditor() {
|
|||
rot_x = 0;
|
||||
rot_y = 0;
|
||||
|
||||
ProjectSettings::get_singleton()->connect("settings_changed", callable_mp(this, &MeshEditor::_project_settings_changed));
|
||||
_project_settings_changed();
|
||||
EditorNode::get_singleton()->register_hdr_viewport(viewport);
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
|
|
|
|||
|
|
@ -68,7 +68,6 @@ class MeshEditor : public SubViewportContainer {
|
|||
void _on_light_1_switch_pressed();
|
||||
void _on_light_2_switch_pressed();
|
||||
void _update_rotation();
|
||||
void _project_settings_changed();
|
||||
|
||||
protected:
|
||||
virtual void _update_theme_item_cache() override;
|
||||
|
|
|
|||
|
|
@ -3226,10 +3226,6 @@ void Node3DEditorViewport::_project_settings_changed() {
|
|||
const bool transparent_background = GLOBAL_GET("rendering/viewport/transparent_background");
|
||||
viewport->set_transparent_background(transparent_background);
|
||||
|
||||
const bool hdr_requested = GLOBAL_GET("display/window/hdr/request_hdr_output");
|
||||
const bool use_hdr_2d = GLOBAL_GET("rendering/viewport/hdr_2d");
|
||||
viewport->set_use_hdr_2d(use_hdr_2d || hdr_requested);
|
||||
|
||||
const bool use_debanding = GLOBAL_GET("rendering/anti_aliasing/quality/use_debanding");
|
||||
viewport->set_use_debanding(use_debanding);
|
||||
|
||||
|
|
@ -6621,6 +6617,8 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, int p
|
|||
|
||||
view_type = VIEW_TYPE_USER;
|
||||
_update_name();
|
||||
|
||||
EditorNode::get_singleton()->register_hdr_viewport(viewport);
|
||||
}
|
||||
|
||||
Node3DEditorViewport::~Node3DEditorViewport() {
|
||||
|
|
|
|||
|
|
@ -155,13 +155,6 @@ void MaterialEditor::_update_rotation() {
|
|||
rotation->set_transform(t);
|
||||
}
|
||||
|
||||
void MaterialEditor::_project_settings_changed() {
|
||||
const bool hdr_requested = GLOBAL_GET("display/window/hdr/request_hdr_output");
|
||||
const bool use_hdr_2d = GLOBAL_GET("rendering/viewport/hdr_2d");
|
||||
viewport->set_use_hdr_2d(use_hdr_2d || hdr_requested);
|
||||
viewport_2d->set_use_hdr_2d(use_hdr_2d || hdr_requested);
|
||||
}
|
||||
|
||||
void MaterialEditor::edit(Ref<Material> p_material, const Ref<Environment> &p_env) {
|
||||
material = p_material;
|
||||
camera->set_environment(p_env);
|
||||
|
|
@ -407,8 +400,8 @@ MaterialEditor::MaterialEditor() {
|
|||
Vector2 stored_rot = EditorSettings::get_singleton()->get_project_metadata("inspector_options", "material_preview_rotation", Vector2());
|
||||
_set_rotation(stored_rot.x, stored_rot.y);
|
||||
|
||||
ProjectSettings::get_singleton()->connect("settings_changed", callable_mp(this, &MaterialEditor::_project_settings_changed));
|
||||
_project_settings_changed();
|
||||
EditorNode::get_singleton()->register_hdr_viewport(viewport);
|
||||
EditorNode::get_singleton()->register_hdr_viewport(viewport_2d);
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
|
|
|
|||
|
|
@ -102,7 +102,6 @@ class MaterialEditor : public Control {
|
|||
void _set_rotation(real_t p_x_degrees, real_t p_y_degrees);
|
||||
void _store_rotation_metadata();
|
||||
void _update_rotation();
|
||||
void _project_settings_changed();
|
||||
|
||||
protected:
|
||||
virtual void _update_theme_item_cache() override;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue