Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2019-11-13 16:00:03 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2019-11-27 17:40:07 +0300
commit17b63db4e2721f5cf8389c3354460771d8348c50 (patch)
treeeefd549551c03663d3a9d7dc83b023d2df53fdd9 /source/blender/draw/engines/eevee/eevee_render.c
parentf1c994c555da7c3e27984cc26b7f226badbe670d (diff)
EEVEE: Renderlayer artifacts
When rendering the Subsurface scattering lighting render layer with high sample count render artifacts can appear. This patch will remove these render artifacts by using a more precise texture format when samples will be larger than 128. As with the new eevee-shadows it is more common to use higher number of samples. The reason why it was visible in the subsurface scattering is that every sample could change the color. Adding different values will reduce precision over the number of samples. The subsurface color render layer also has this issue, but it is not noticeable as the colors tend to be close to each other so the colors would most of the time just shift the precision and hold up better. Reviewed By: fclem Differential Revision: https://developer.blender.org/D6245
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_render.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_render.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_render.c b/source/blender/draw/engines/eevee/eevee_render.c
index 75e837f140b..ee1dc8a0208 100644
--- a/source/blender/draw/engines/eevee/eevee_render.c
+++ b/source/blender/draw/engines/eevee/eevee_render.c
@@ -517,9 +517,17 @@ void EEVEE_render_draw(EEVEE_Data *vedata, RenderEngine *engine, RenderLayer *rl
GPU_framebuffer_bind(fbl->main_fb);
DRW_hair_update();
+ uint tot_sample = scene_eval->eevee.taa_render_samples;
+ uint render_samples = 0;
+
+ /* SSR needs one iteration to start properly. */
+ if (stl->effects->enabled_effects & EFFECT_SSR) {
+ tot_sample += 1;
+ }
+
if ((view_layer->passflag & (SCE_PASS_SUBSURFACE_COLOR | SCE_PASS_SUBSURFACE_DIRECT |
SCE_PASS_SUBSURFACE_INDIRECT)) != 0) {
- EEVEE_subsurface_output_init(sldata, vedata);
+ EEVEE_subsurface_output_init(sldata, vedata, tot_sample);
}
if ((view_layer->passflag & SCE_PASS_MIST) != 0) {
@@ -527,21 +535,13 @@ void EEVEE_render_draw(EEVEE_Data *vedata, RenderEngine *engine, RenderLayer *rl
}
if ((view_layer->passflag & SCE_PASS_AO) != 0) {
- EEVEE_occlusion_output_init(sldata, vedata);
+ EEVEE_occlusion_output_init(sldata, vedata, tot_sample);
}
- uint tot_sample = scene_eval->eevee.taa_render_samples;
- uint render_samples = 0;
-
if (RE_engine_test_break(engine)) {
return;
}
- /* SSR needs one iteration to start properly. */
- if (stl->effects->enabled_effects & EFFECT_SSR) {
- tot_sample += 1;
- }
-
while (render_samples < tot_sample && !RE_engine_test_break(engine)) {
float clear_col[4] = {0.0f, 0.0f, 0.0f, 0.0f};
float clear_depth = 1.0f;