[Bf-blender-cvs] [cd67fde848f] tmp-workbench-rewrite2: Optimize out depth_in_front_tx when possible
Miguel Pozo
noreply at git.blender.org
Fri Oct 28 15:11:17 CEST 2022
Commit: cd67fde848f7b7f5d83ed5b9e58e81c8e3916690
Author: Miguel Pozo
Date: Tue Oct 25 17:52:00 2022 +0200
Branches: tmp-workbench-rewrite2
https://developer.blender.org/rBcd67fde848f7b7f5d83ed5b9e58e81c8e3916690
Optimize out depth_in_front_tx when possible
===================================================================
M source/blender/draw/engines/workbench/workbench_engine.cc
M source/blender/draw/engines/workbench/workbench_mesh_passes.cc
===================================================================
diff --git a/source/blender/draw/engines/workbench/workbench_engine.cc b/source/blender/draw/engines/workbench/workbench_engine.cc
index a3b604a86a5..542c1503995 100644
--- a/source/blender/draw/engines/workbench/workbench_engine.cc
+++ b/source/blender/draw/engines/workbench/workbench_engine.cc
@@ -516,13 +516,15 @@ class Instance {
fb.bind();
GPU_framebuffer_clear_depth_stencil(fb, 1.0f, 0x00);
- if (!opaque_ps.gbuffer_in_front_ps_.is_empty() ||
- !transparent_ps.accumulation_in_front_ps_.is_empty()) {
+ if (!transparent_ps.accumulation_in_front_ps_.is_empty()) {
resources.depth_in_front_tx.acquire(resolution, GPU_DEPTH24_STENCIL8);
- Framebuffer fb = Framebuffer("Workbench.Clear");
- fb.ensure(GPU_ATTACHMENT_TEXTURE(resources.depth_in_front_tx));
- fb.bind();
- GPU_framebuffer_clear_depth_stencil(fb, 1.0f, 0x00);
+ if (opaque_ps.gbuffer_in_front_ps_.is_empty()) {
+ /* Clear only if it wont be overwitten by opaque_ps */
+ Framebuffer fb = Framebuffer("Workbench.Clear");
+ fb.ensure(GPU_ATTACHMENT_TEXTURE(resources.depth_in_front_tx));
+ fb.bind();
+ GPU_framebuffer_clear_depth_stencil(fb, 1.0f, 0x00);
+ }
}
opaque_ps.draw(manager, view, resources, resolution);
diff --git a/source/blender/draw/engines/workbench/workbench_mesh_passes.cc b/source/blender/draw/engines/workbench/workbench_mesh_passes.cc
index 73accf5791f..dd7ffcf86db 100644
--- a/source/blender/draw/engines/workbench/workbench_mesh_passes.cc
+++ b/source/blender/draw/engines/workbench/workbench_mesh_passes.cc
@@ -136,14 +136,17 @@ void OpaquePass::draw(Manager &manager, View &view, SceneResources &resources, i
}
if (!gbuffer_in_front_ps_.is_empty()) {
- opaque_fb.ensure(GPU_ATTACHMENT_TEXTURE(resources.depth_in_front_tx),
+ opaque_fb.ensure(GPU_ATTACHMENT_TEXTURE(resources.depth_tx),
GPU_ATTACHMENT_TEXTURE(gbuffer_material_tx),
GPU_ATTACHMENT_TEXTURE(gbuffer_normal_tx),
object_id_attachment);
opaque_fb.bind();
manager.submit(gbuffer_in_front_ps_, view);
- GPU_texture_copy(resources.depth_tx, resources.depth_in_front_tx);
+ if (resources.depth_in_front_tx.is_valid()) {
+ /* Only needed when transparent infront is needed */
+ GPU_texture_copy(resources.depth_in_front_tx, resources.depth_tx);
+ }
}
if (!gbuffer_ps_.is_empty()) {
More information about the Bf-blender-cvs
mailing list