Tweak default SDFGI settings for better quality
- Enable Read Sky Light to get proper outdoors lighting out of the box. - Set bounce feedback to 0.5 by default to get a better quality result. - Higher values may cause infinite feedback with bright surfaces. - Increase the number of frames to converge to improve quality at the cost of latency. Most scenes are fairly static after all. - Use 75% Y scale by default as most scenes are not highly vertical. - Reorder the Y scale enum to go from the lowest Y scale to the highest. Also rename the "Disabled" setting to "100%" for clarity.
This commit is contained in:
parent
fd0d2dcabf
commit
7721e19ccc
|
@ -171,7 +171,7 @@
|
|||
</member>
|
||||
<member name="reflected_light_source" type="int" setter="set_reflection_source" getter="get_reflection_source" enum="Environment.ReflectionSource" default="0">
|
||||
</member>
|
||||
<member name="sdfgi_bounce_feedback" type="float" setter="set_sdfgi_bounce_feedback" getter="get_sdfgi_bounce_feedback" default="0.0">
|
||||
<member name="sdfgi_bounce_feedback" type="float" setter="set_sdfgi_bounce_feedback" getter="get_sdfgi_bounce_feedback" default="0.5">
|
||||
</member>
|
||||
<member name="sdfgi_cascade0_distance" type="float" setter="set_sdfgi_cascade0_distance" getter="get_sdfgi_cascade0_distance" default="12.8">
|
||||
</member>
|
||||
|
@ -193,11 +193,11 @@
|
|||
</member>
|
||||
<member name="sdfgi_probe_bias" type="float" setter="set_sdfgi_probe_bias" getter="get_sdfgi_probe_bias" default="1.1">
|
||||
</member>
|
||||
<member name="sdfgi_read_sky_light" type="bool" setter="set_sdfgi_read_sky_light" getter="is_sdfgi_reading_sky_light" default="false">
|
||||
<member name="sdfgi_read_sky_light" type="bool" setter="set_sdfgi_read_sky_light" getter="is_sdfgi_reading_sky_light" default="true">
|
||||
</member>
|
||||
<member name="sdfgi_use_occlusion" type="bool" setter="set_sdfgi_use_occlusion" getter="is_sdfgi_using_occlusion" default="false">
|
||||
</member>
|
||||
<member name="sdfgi_y_scale" type="int" setter="set_sdfgi_y_scale" getter="get_sdfgi_y_scale" enum="Environment.SDFGIYScale" default="0">
|
||||
<member name="sdfgi_y_scale" type="int" setter="set_sdfgi_y_scale" getter="get_sdfgi_y_scale" enum="Environment.SDFGIYScale" default="1">
|
||||
</member>
|
||||
<member name="sky" type="Sky" setter="set_sky" getter="get_sky">
|
||||
The [Sky] resource used for this [Environment].
|
||||
|
@ -379,11 +379,11 @@
|
|||
<constant name="GLOW_BLEND_MODE_MIX" value="4" enum="GlowBlendMode">
|
||||
Mixes the glow with the underlying color to avoid increasing brightness as much while still maintaining a glow effect.
|
||||
</constant>
|
||||
<constant name="SDFGI_Y_SCALE_DISABLED" value="0" enum="SDFGIYScale">
|
||||
<constant name="SDFGI_Y_SCALE_50_PERCENT" value="0" enum="SDFGIYScale">
|
||||
</constant>
|
||||
<constant name="SDFGI_Y_SCALE_75_PERCENT" value="1" enum="SDFGIYScale">
|
||||
</constant>
|
||||
<constant name="SDFGI_Y_SCALE_50_PERCENT" value="2" enum="SDFGIYScale">
|
||||
<constant name="SDFGI_Y_SCALE_100_PERCENT" value="2" enum="SDFGIYScale">
|
||||
</constant>
|
||||
</constants>
|
||||
</class>
|
||||
|
|
|
@ -1696,7 +1696,7 @@
|
|||
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 name="rendering/global_illumination/sdfgi/frames_to_converge" type="int" setter="" getter="" default="5">
|
||||
</member>
|
||||
<member name="rendering/global_illumination/sdfgi/frames_to_update_lights" type="int" setter="" getter="" default="2">
|
||||
</member>
|
||||
|
|
|
@ -4181,11 +4181,11 @@
|
|||
<constant name="ENV_SSIL_QUALITY_ULTRA" value="4" enum="EnvironmentSSILQuality">
|
||||
Highest quality screen-space indirect lighting. Uses the adaptive target setting which can be dynamically adjusted to smoothly balance performance and visual quality.
|
||||
</constant>
|
||||
<constant name="ENV_SDFGI_Y_SCALE_DISABLED" value="0" enum="EnvironmentSDFGIYScale">
|
||||
<constant name="ENV_SDFGI_Y_SCALE_50_PERCENT" value="0" enum="EnvironmentSDFGIYScale">
|
||||
</constant>
|
||||
<constant name="ENV_SDFGI_Y_SCALE_75_PERCENT" value="1" enum="EnvironmentSDFGIYScale">
|
||||
</constant>
|
||||
<constant name="ENV_SDFGI_Y_SCALE_50_PERCENT" value="2" enum="EnvironmentSDFGIYScale">
|
||||
<constant name="ENV_SDFGI_Y_SCALE_100_PERCENT" value="2" enum="EnvironmentSDFGIYScale">
|
||||
</constant>
|
||||
<constant name="ENV_SDFGI_RAY_COUNT_4" value="0" enum="EnvironmentSDFGIRayCount">
|
||||
</constant>
|
||||
|
|
|
@ -1332,7 +1332,7 @@ void Environment::_bind_methods() {
|
|||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sdfgi_min_cell_size", PROPERTY_HINT_RANGE, "0.01,64,0.01"), "set_sdfgi_min_cell_size", "get_sdfgi_min_cell_size");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sdfgi_cascade0_distance", PROPERTY_HINT_RANGE, "0.1,16384,0.1,or_greater"), "set_sdfgi_cascade0_distance", "get_sdfgi_cascade0_distance");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sdfgi_max_distance", PROPERTY_HINT_RANGE, "0.1,16384,0.1,or_greater"), "set_sdfgi_max_distance", "get_sdfgi_max_distance");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "sdfgi_y_scale", PROPERTY_HINT_ENUM, "Disable,75%,50%"), "set_sdfgi_y_scale", "get_sdfgi_y_scale");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "sdfgi_y_scale", PROPERTY_HINT_ENUM, "50% (Compact),75% (Balanced),100% (Sparse)"), "set_sdfgi_y_scale", "get_sdfgi_y_scale");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sdfgi_energy"), "set_sdfgi_energy", "get_sdfgi_energy");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sdfgi_normal_bias"), "set_sdfgi_normal_bias", "get_sdfgi_normal_bias");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "sdfgi_probe_bias"), "set_sdfgi_probe_bias", "get_sdfgi_probe_bias");
|
||||
|
@ -1511,9 +1511,9 @@ void Environment::_bind_methods() {
|
|||
BIND_ENUM_CONSTANT(GLOW_BLEND_MODE_REPLACE);
|
||||
BIND_ENUM_CONSTANT(GLOW_BLEND_MODE_MIX);
|
||||
|
||||
BIND_ENUM_CONSTANT(SDFGI_Y_SCALE_DISABLED);
|
||||
BIND_ENUM_CONSTANT(SDFGI_Y_SCALE_75_PERCENT);
|
||||
BIND_ENUM_CONSTANT(SDFGI_Y_SCALE_50_PERCENT);
|
||||
BIND_ENUM_CONSTANT(SDFGI_Y_SCALE_75_PERCENT);
|
||||
BIND_ENUM_CONSTANT(SDFGI_Y_SCALE_100_PERCENT);
|
||||
}
|
||||
|
||||
Environment::Environment() {
|
||||
|
|
|
@ -71,9 +71,9 @@ public:
|
|||
};
|
||||
|
||||
enum SDFGIYScale {
|
||||
SDFGI_Y_SCALE_DISABLED,
|
||||
SDFGI_Y_SCALE_75_PERCENT,
|
||||
SDFGI_Y_SCALE_50_PERCENT,
|
||||
SDFGI_Y_SCALE_75_PERCENT,
|
||||
SDFGI_Y_SCALE_100_PERCENT,
|
||||
};
|
||||
|
||||
enum GlowBlendMode {
|
||||
|
@ -149,10 +149,10 @@ private:
|
|||
bool sdfgi_enabled = false;
|
||||
int sdfgi_cascades = 6;
|
||||
float sdfgi_min_cell_size = 0.2;
|
||||
SDFGIYScale sdfgi_y_scale = SDFGI_Y_SCALE_DISABLED;
|
||||
SDFGIYScale sdfgi_y_scale = SDFGI_Y_SCALE_75_PERCENT;
|
||||
bool sdfgi_use_occlusion = false;
|
||||
float sdfgi_bounce_feedback = 0.0;
|
||||
bool sdfgi_read_sky_light = false;
|
||||
float sdfgi_bounce_feedback = 0.5;
|
||||
bool sdfgi_read_sky_light = true;
|
||||
float sdfgi_energy = 1.0;
|
||||
float sdfgi_normal_bias = 1.1;
|
||||
float sdfgi_probe_bias = 1.1;
|
||||
|
|
|
@ -138,12 +138,12 @@ public:
|
|||
int sdfgi_cascades = 6;
|
||||
float sdfgi_min_cell_size = 0.2;
|
||||
bool sdfgi_use_occlusion = false;
|
||||
float sdfgi_bounce_feedback = 0.0;
|
||||
bool sdfgi_read_sky_light = false;
|
||||
float sdfgi_bounce_feedback = 0.5;
|
||||
bool sdfgi_read_sky_light = true;
|
||||
float sdfgi_energy = 1.0;
|
||||
float sdfgi_normal_bias = 1.1;
|
||||
float sdfgi_probe_bias = 1.1;
|
||||
RS::EnvironmentSDFGIYScale sdfgi_y_scale = RS::ENV_SDFGI_Y_SCALE_DISABLED;
|
||||
RS::EnvironmentSDFGIYScale sdfgi_y_scale = RS::ENV_SDFGI_Y_SCALE_75_PERCENT;
|
||||
|
||||
/// Adjustments
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ void RendererSceneGIRD::SDFGI::create(RendererSceneEnvironmentRD *p_env, const V
|
|||
min_cell_size = p_env->sdfgi_min_cell_size;
|
||||
uses_occlusion = p_env->sdfgi_use_occlusion;
|
||||
y_scale_mode = p_env->sdfgi_y_scale;
|
||||
static const float y_scale[3] = { 1.0, 1.5, 2.0 };
|
||||
static const float y_scale[3] = { 2.0, 1.5, 1.0 };
|
||||
y_mult = y_scale[y_scale_mode];
|
||||
cascades.resize(num_cascades);
|
||||
probe_axis_count = SDFGI::PROBE_DIVISOR + 1;
|
||||
|
|
|
@ -504,12 +504,12 @@ public:
|
|||
RID cascades_ubo;
|
||||
|
||||
bool uses_occlusion = false;
|
||||
float bounce_feedback = 0.0;
|
||||
bool reads_sky = false;
|
||||
float bounce_feedback = 0.5;
|
||||
bool reads_sky = true;
|
||||
float energy = 1.0;
|
||||
float normal_bias = 1.1;
|
||||
float probe_bias = 1.1;
|
||||
RS::EnvironmentSDFGIYScale y_scale_mode = RS::ENV_SDFGI_Y_SCALE_DISABLED;
|
||||
RS::EnvironmentSDFGIYScale y_scale_mode = RS::ENV_SDFGI_Y_SCALE_75_PERCENT;
|
||||
|
||||
float y_mult = 1.0;
|
||||
|
||||
|
@ -536,7 +536,7 @@ public:
|
|||
};
|
||||
|
||||
RS::EnvironmentSDFGIRayCount sdfgi_ray_count = RS::ENV_SDFGI_RAY_COUNT_16;
|
||||
RS::EnvironmentSDFGIFramesToConverge sdfgi_frames_to_converge = RS::ENV_SDFGI_CONVERGE_IN_10_FRAMES;
|
||||
RS::EnvironmentSDFGIFramesToConverge sdfgi_frames_to_converge = RS::ENV_SDFGI_CONVERGE_IN_30_FRAMES;
|
||||
RS::EnvironmentSDFGIFramesToUpdateLight sdfgi_frames_to_update_light = RS::ENV_SDFGI_UPDATE_LIGHT_IN_4_FRAMES;
|
||||
|
||||
float sdfgi_solid_cell_ratio = 0.25;
|
||||
|
|
|
@ -2388,9 +2388,9 @@ void RenderingServer::_bind_methods() {
|
|||
BIND_ENUM_CONSTANT(ENV_SSIL_QUALITY_HIGH);
|
||||
BIND_ENUM_CONSTANT(ENV_SSIL_QUALITY_ULTRA);
|
||||
|
||||
BIND_ENUM_CONSTANT(ENV_SDFGI_Y_SCALE_DISABLED);
|
||||
BIND_ENUM_CONSTANT(ENV_SDFGI_Y_SCALE_75_PERCENT);
|
||||
BIND_ENUM_CONSTANT(ENV_SDFGI_Y_SCALE_50_PERCENT);
|
||||
BIND_ENUM_CONSTANT(ENV_SDFGI_Y_SCALE_75_PERCENT);
|
||||
BIND_ENUM_CONSTANT(ENV_SDFGI_Y_SCALE_100_PERCENT);
|
||||
|
||||
BIND_ENUM_CONSTANT(ENV_SDFGI_RAY_COUNT_4);
|
||||
BIND_ENUM_CONSTANT(ENV_SDFGI_RAY_COUNT_8);
|
||||
|
@ -2979,7 +2979,7 @@ RenderingServer::RenderingServer() {
|
|||
|
||||
GLOBAL_DEF("rendering/global_illumination/sdfgi/probe_ray_count", 1);
|
||||
ProjectSettings::get_singleton()->set_custom_property_info("rendering/global_illumination/sdfgi/probe_ray_count", PropertyInfo(Variant::INT, "rendering/global_illumination/sdfgi/probe_ray_count", PROPERTY_HINT_ENUM, "8 (Fastest),16,32,64,96,128 (Slowest)"));
|
||||
GLOBAL_DEF("rendering/global_illumination/sdfgi/frames_to_converge", 4);
|
||||
GLOBAL_DEF("rendering/global_illumination/sdfgi/frames_to_converge", 5);
|
||||
ProjectSettings::get_singleton()->set_custom_property_info("rendering/global_illumination/sdfgi/frames_to_converge", PropertyInfo(Variant::INT, "rendering/global_illumination/sdfgi/frames_to_converge", PROPERTY_HINT_ENUM, "5 (Less Latency but Lower Quality),10,15,20,25,30 (More Latency but Higher Quality)"));
|
||||
GLOBAL_DEF("rendering/global_illumination/sdfgi/frames_to_update_lights", 2);
|
||||
ProjectSettings::get_singleton()->set_custom_property_info("rendering/global_illumination/sdfgi/frames_to_update_lights", PropertyInfo(Variant::INT, "rendering/global_illumination/sdfgi/frames_to_update_lights", PROPERTY_HINT_ENUM, "1 (Slower),2,4,8,16 (Faster)"));
|
||||
|
|
|
@ -1042,9 +1042,9 @@ public:
|
|||
virtual void environment_set_ssil_quality(EnvironmentSSILQuality p_quality, bool p_half_size, float p_adaptive_target, int p_blur_passes, float p_fadeout_from, float p_fadeout_to) = 0;
|
||||
|
||||
enum EnvironmentSDFGIYScale {
|
||||
ENV_SDFGI_Y_SCALE_DISABLED,
|
||||
ENV_SDFGI_Y_SCALE_50_PERCENT,
|
||||
ENV_SDFGI_Y_SCALE_75_PERCENT,
|
||||
ENV_SDFGI_Y_SCALE_50_PERCENT
|
||||
ENV_SDFGI_Y_SCALE_100_PERCENT,
|
||||
};
|
||||
|
||||
virtual void environment_set_sdfgi(RID p_env, bool p_enable, int p_cascades, float p_min_cell_size, EnvironmentSDFGIYScale p_y_scale, bool p_use_occlusion, float p_bounce_feedback, bool p_read_sky, float p_energy, float p_normal_bias, float p_probe_bias) = 0;
|
||||
|
|
Loading…
Reference in New Issue