From 58e2ec18ae58918017170c915e7587759f322779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Thu, 3 Mar 2022 21:16:54 +0100 Subject: EEVEE: Deferred: Large refactor This changes drastically the implementation to leverage arbitrary writes in order to reduce complexity, memory usage and increase speed. Since we are no longer dependent on the framebuffer requirement, we can allocate bigger size texture that fits all views and avoid the extra. Transparency, holdout and emissions are no longer deferred and are now composited using dual source blending. The indirect lighting and raytracing is still not functional but will also gets a large refactor on its own --- source/blender/draw/engines/eevee/eevee_instance.cc | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source/blender/draw/engines/eevee/eevee_instance.cc') diff --git a/source/blender/draw/engines/eevee/eevee_instance.cc b/source/blender/draw/engines/eevee/eevee_instance.cc index 59270029a98..e733cf6ee06 100644 --- a/source/blender/draw/engines/eevee/eevee_instance.cc +++ b/source/blender/draw/engines/eevee/eevee_instance.cc @@ -109,6 +109,11 @@ void Instance::update_eval_members(void) void Instance::begin_sync() { + /* Must be sync before views. */ + gbuffer.begin_sync(); + hiz_front.begin_sync(); + hiz_back.begin_sync(); + camera.sync(); render_passes.sync(); shading_passes.sync(); @@ -225,6 +230,8 @@ void Instance::end_sync(void) render_passes.end_sync(); lightprobes.end_sync(); subsurface.end_sync(); + hiz_front.end_sync(); + hiz_back.end_sync(); } void Instance::render_sync(void) -- cgit v1.2.3