From eb0cced3c0267372381b4bb441475a18d59973ff Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sun, 26 May 2019 11:50:25 +0200 Subject: [PATCH] Improve SSAO performance and quality MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This decreases the number of samples significantly, leading to a notable performance increase with only a very slight loss in visual quality. This also tweaks the default SSAO settings to use 3×3 blurring, which makes noise patterns much less visible. --- drivers/gles3/shaders/ssao.glsl | 6 +++--- scene/resources/environment.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gles3/shaders/ssao.glsl b/drivers/gles3/shaders/ssao.glsl index be443651698..d9cdc3fc1fc 100644 --- a/drivers/gles3/shaders/ssao.glsl +++ b/drivers/gles3/shaders/ssao.glsl @@ -16,15 +16,15 @@ void main() { #define TWO_PI 6.283185307179586476925286766559 #ifdef SSAO_QUALITY_HIGH -#define NUM_SAMPLES (80) +#define NUM_SAMPLES (16) #endif #ifdef SSAO_QUALITY_LOW -#define NUM_SAMPLES (15) +#define NUM_SAMPLES (8) #endif #if !defined(SSAO_QUALITY_LOW) && !defined(SSAO_QUALITY_HIGH) -#define NUM_SAMPLES (40) +#define NUM_SAMPLES (12) #endif // If using depth mip levels, the log of the maximum pixel offset before we need to switch to a lower diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp index 17609ed5058..52dfffda5b7 100644 --- a/scene/resources/environment.cpp +++ b/scene/resources/environment.cpp @@ -1294,8 +1294,8 @@ void Environment::_bind_methods() { Environment::Environment() : bg_mode(BG_CLEAR_COLOR), tone_mapper(TONE_MAPPER_LINEAR), - ssao_blur(SSAO_BLUR_DISABLED), - ssao_quality(SSAO_QUALITY_LOW), + ssao_blur(SSAO_BLUR_3x3), + ssao_quality(SSAO_QUALITY_MEDIUM), glow_blend_mode(GLOW_BLEND_MODE_ADDITIVE), dof_blur_far_quality(DOF_BLUR_QUALITY_LOW), dof_blur_near_quality(DOF_BLUR_QUALITY_LOW) { @@ -1346,7 +1346,7 @@ Environment::Environment() : ssao_ao_channel_affect = 0.0; ssao_blur = SSAO_BLUR_3x3; set_ssao_edge_sharpness(4); - set_ssao_quality(SSAO_QUALITY_LOW); + set_ssao_quality(SSAO_QUALITY_MEDIUM); glow_enabled = false; glow_levels = (1 << 2) | (1 << 4);