From bf339842a530e4e21beb395b9b4eea97c9578e0e Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 22 Dec 2021 19:38:48 +0100 Subject: [PATCH] Expose RenderingServer GI half resolution setter method This is required for projects to be able to change the GI half-resolution setting at run-time. --- doc/classes/ProjectSettings.xml | 2 ++ doc/classes/RenderingServer.xml | 7 +++++++ servers/rendering_server.cpp | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 26d519506b3..602511d810e 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -1675,6 +1675,8 @@ + If [code]true[/code], renders [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) buffers at halved resolution (e.g. 960×540 when the viewport size is 1920×1080). This improves performance significantly when VoxelGI or SDFGI is enabled, at the cost of artifacts that may be visible on polygon edges. The loss in quality becomes less noticeable as the viewport resolution increases. [LightmapGI] rendering is not affected by this setting. + [b]Note:[/b] This property is only read when the project starts. To set half-resolution GI at run-time, call [method RenderingServer.gi_set_use_half_resolution] instead. diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml index 0700650a915..24a8a963a5c 100644 --- a/doc/classes/RenderingServer.xml +++ b/doc/classes/RenderingServer.xml @@ -1245,6 +1245,13 @@ Returns the id of a white texture. Creates one if none exists. + + + + + If [code]half_resolution[/code] is [code]true[/code], renders [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) buffers at halved resolution (e.g. 960×540 when the viewport size is 1920×1080). This improves performance significantly when VoxelGI or SDFGI is enabled, at the cost of artifacts that may be visible on polygon edges. The loss in quality becomes less noticeable as the viewport resolution increases. [LightmapGI] rendering is not affected by this setting. See also [member ProjectSettings.rendering/global_illumination/gi/use_half_resolution]. + + diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp index 23d3bf030f7..5bb8d130e71 100644 --- a/servers/rendering_server.cpp +++ b/servers/rendering_server.cpp @@ -1999,6 +1999,10 @@ void RenderingServer::_bind_methods() { BIND_ENUM_CONSTANT(DECAL_FILTER_LINEAR_MIPMAPS); BIND_ENUM_CONSTANT(DECAL_FILTER_LINEAR_MIPMAPS_ANISOTROPIC); + /* GI API (affects VoxelGI and SDFGI) */ + + ClassDB::bind_method(D_METHOD("gi_set_use_half_resolution", "half_resolution"), &RenderingServer::gi_set_use_half_resolution); + /* VOXEL GI API */ ClassDB::bind_method(D_METHOD("voxel_gi_create"), &RenderingServer::voxel_gi_create);