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:
authorPhilipp Oeser <info@graphics-engineer.com>2021-02-02 19:27:12 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2021-02-03 17:50:17 +0300
commit85fe12071ad7f7f866b2f2e213ee291dc607b38d (patch)
treef788654a2321e4ecb4913742717ca0774a4c6624
parent487fe5abfcaa981d572df36bf0986181b8174298 (diff)
Fix T85261: Eevee passes have slight inaccurate colors
In everything in `EEVEE_renderpasses_postprocess` (or the corresponding renderpass_postprocess_frag.glsl) colors get divided by a 'currentSample'. This 'currentSample' is always incremented in `EEVEE_temporal_sampling_draw` (and also one more time before we reach `EEVEE_renderpasses_postprocess`. This results in a "off-by-one", slightly inacurate colors and slight inaccurate transparency (in certain passes like AOVs). Now decrement the currentSample `EEVEE_renderpasses_postprocess` again by one to compensate. Maniphest Tasks: T85261 Differential Revision: https://developer.blender.org/D10286
-rw-r--r--source/blender/draw/engines/eevee/eevee_renderpasses.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_renderpasses.c b/source/blender/draw/engines/eevee/eevee_renderpasses.c
index ce5292fbbb0..52160248d75 100644
--- a/source/blender/draw/engines/eevee/eevee_renderpasses.c
+++ b/source/blender/draw/engines/eevee/eevee_renderpasses.c
@@ -282,7 +282,9 @@ void EEVEE_renderpasses_postprocess(EEVEE_ViewLayerData *UNUSED(sldata),
EEVEE_PrivateData *g_data = stl->g_data;
EEVEE_EffectsInfo *effects = stl->effects;
- const int current_sample = effects->taa_current_sample;
+ /* Compensate for taa_current_sample being incremented after last drawing in
+ * EEVEE_temporal_sampling_draw. */
+ const int current_sample = effects->taa_current_sample - 1;
g_data->renderpass_current_sample = current_sample;
g_data->renderpass_type = renderpass_type;
g_data->renderpass_postprocess = PASS_POST_UNDEFINED;