浏览代码

Merge pull request #56170 from Calinou/renderingserver-expose-gi-half-resolution

Rémi Verschelde 3 年之前
父节点
当前提交
9e97262132
共有 3 个文件被更改,包括 13 次插入0 次删除
  1. 2 0
      doc/classes/ProjectSettings.xml
  2. 7 0
      doc/classes/RenderingServer.xml
  3. 4 0
      servers/rendering_server.cpp

+ 2 - 0
doc/classes/ProjectSettings.xml

@@ -1691,6 +1691,8 @@
 		<member name="rendering/gles2/compatibility/enable_high_float.Android" type="bool" setter="" getter="" default="false">
 		</member>
 		<member name="rendering/global_illumination/gi/use_half_resolution" type="bool" setter="" getter="" default="false">
+			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.
 		</member>
 		<member name="rendering/global_illumination/sdfgi/frames_to_converge" type="int" setter="" getter="" default="4">
 		</member>

+ 7 - 0
doc/classes/RenderingServer.xml

@@ -1265,6 +1265,13 @@
 				Returns the id of a white texture. Creates one if none exists.
 			</description>
 		</method>
+		<method name="gi_set_use_half_resolution">
+			<return type="void" />
+			<argument index="0" name="half_resolution" type="bool" />
+			<description>
+				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].
+			</description>
+		</method>
 		<method name="global_variable_add">
 			<return type="void" />
 			<argument index="0" name="name" type="StringName" />

+ 4 - 0
servers/rendering_server.cpp

@@ -2000,6 +2000,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);