[Bf-blender-cvs] [c78b831e69f] master: Fix T78073 EEVEE: new motion blur and overscan produce wrong render
Clément Foucault
noreply at git.blender.org
Wed Jun 24 17:22:36 CEST 2020
Commit: c78b831e69faaa206ca457e80581f6371cad73fa
Author: Clément Foucault
Date: Wed Jun 24 15:49:51 2020 +0200
Branches: master
https://developer.blender.org/rBc78b831e69faaa206ca457e80581f6371cad73fa
Fix T78073 EEVEE: new motion blur and overscan produce wrong render
This was caused by the override viewport size not being maintained after
DRW_cache_restart().
Also this fixes issue with the inv_size not being updated correctly.
===================================================================
M source/blender/draw/intern/draw_manager.c
===================================================================
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 5b1276d0d6b..3e42c4cdb23 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -373,6 +373,8 @@ void DRW_render_viewport_size_set(int size[2])
{
DST.size[0] = size[0];
DST.size[1] = size[1];
+ DST.inv_size[0] = 1.0f / size[0];
+ DST.inv_size[1] = 1.0f / size[1];
}
const float *DRW_viewport_size_get(void)
@@ -1945,6 +1947,11 @@ void DRW_custom_pipeline(DrawEngineType *draw_engine_type,
/* Used when the render engine want to redo another cache populate inside the same render frame. */
void DRW_cache_restart(void)
{
+ /* Save viewport size. */
+ float size[2], inv_size[2];
+ copy_v2_v2(size, DST.size);
+ copy_v2_v2(inv_size, DST.inv_size);
+
/* Force cache to reset. */
drw_viewport_cache_resize();
@@ -1953,6 +1960,10 @@ void DRW_cache_restart(void)
DST.buffer_finish_called = false;
DRW_hair_init();
+
+ /* Restore. */
+ copy_v2_v2(DST.size, size);
+ copy_v2_v2(DST.inv_size, inv_size);
}
static struct DRWSelectBuffer {
More information about the Bf-blender-cvs
mailing list