Rework updating editor viewport HDR

This commit is contained in:
kobewi 2026-02-13 13:37:30 +01:00
parent 923c751af4
commit 7e2d260e68
10 changed files with 42 additions and 38 deletions

View file

@ -570,6 +570,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();
@ -4702,6 +4720,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) {