Fix editor screenshots with HDR enabled.
This commit is contained in:
@@ -177,6 +177,7 @@
|
||||
#include "servers/display/display_server.h"
|
||||
#include "servers/navigation_2d/navigation_server_2d.h"
|
||||
#include "servers/navigation_3d/navigation_server_3d.h"
|
||||
#include "servers/rendering/rendering_device.h"
|
||||
#include "servers/rendering/rendering_server.h"
|
||||
|
||||
#ifdef VULKAN_ENABLED
|
||||
@@ -4011,6 +4012,12 @@ void EditorNode::_save_screenshot_with_embedded_process(int64_t p_w, int64_t p_h
|
||||
Ref<Image> img = texture->get_image();
|
||||
ERR_FAIL_COND_MSG(img.is_null(), "Cannot get an image from a viewport texture of the editor main screen.");
|
||||
img->convert(Image::FORMAT_RGBA8);
|
||||
#ifdef RD_ENABLED
|
||||
RenderingDevice *rendering_device = RD::get_singleton();
|
||||
if (rendering_device && RenderingServer::get_singleton()->viewport_is_using_hdr_2d(viewport->get_viewport_rid())) {
|
||||
img->linear_to_srgb();
|
||||
}
|
||||
#endif
|
||||
ERR_FAIL_COND(p_emb_path.is_empty());
|
||||
Ref<Image> overlay = Image::load_from_file(p_emb_path);
|
||||
DirAccess::remove_absolute(p_emb_path);
|
||||
@@ -4035,6 +4042,13 @@ void EditorNode::_save_screenshot(const String &p_path) {
|
||||
ERR_FAIL_COND_MSG(texture.is_null(), "Cannot get a viewport texture from the editor main screen.");
|
||||
Ref<Image> img = texture->get_image();
|
||||
ERR_FAIL_COND_MSG(img.is_null(), "Cannot get an image from a viewport texture of the editor main screen.");
|
||||
img->convert(Image::FORMAT_RGBA8);
|
||||
#ifdef RD_ENABLED
|
||||
RenderingDevice *rendering_device = RD::get_singleton();
|
||||
if (rendering_device && RenderingServer::get_singleton()->viewport_is_using_hdr_2d(viewport->get_viewport_rid())) {
|
||||
img->linear_to_srgb();
|
||||
}
|
||||
#endif
|
||||
Error error = img->save_png(p_path);
|
||||
ERR_FAIL_COND_MSG(error != OK, "Cannot save screenshot to file '" + p_path + "'.");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user