[Bf-blender-cvs] [b7a28b315a0] master: GPUFramebuffer: Make GPU_framebuffer_read_depth more flexible

Clément Foucault noreply at git.blender.org
Tue Sep 8 00:02:11 CEST 2020


Commit: b7a28b315a0ba85f9796845718e578abf5379f7d
Author: Clément Foucault
Date:   Mon Sep 7 21:08:31 2020 +0200
Branches: master
https://developer.blender.org/rBb7a28b315a0ba85f9796845718e578abf5379f7d

GPUFramebuffer: Make GPU_framebuffer_read_depth more flexible

This is to make use of it in selection code.

===================================================================

M	source/blender/draw/engines/gpencil/gpencil_render.c
M	source/blender/draw/engines/workbench/workbench_render.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/gpu/GPU_framebuffer.h
M	source/blender/gpu/intern/gpu_framebuffer.cc

===================================================================

diff --git a/source/blender/draw/engines/gpencil/gpencil_render.c b/source/blender/draw/engines/gpencil/gpencil_render.c
index 5d417d995ac..b18013d742a 100644
--- a/source/blender/draw/engines/gpencil/gpencil_render.c
+++ b/source/blender/draw/engines/gpencil/gpencil_render.c
@@ -182,6 +182,7 @@ static void GPENCIL_render_result_z(struct RenderLayer *rl,
                                rect->ymin,
                                BLI_rcti_size_x(rect),
                                BLI_rcti_size_y(rect),
+                               GPU_DATA_FLOAT,
                                rp->rect);
 
     float winmat[4][4];
diff --git a/source/blender/draw/engines/workbench/workbench_render.c b/source/blender/draw/engines/workbench/workbench_render.c
index 8760f2651ee..2c3b5a5f935 100644
--- a/source/blender/draw/engines/workbench/workbench_render.c
+++ b/source/blender/draw/engines/workbench/workbench_render.c
@@ -124,6 +124,7 @@ static void workbench_render_result_z(struct RenderLayer *rl,
                                rect->ymin,
                                BLI_rcti_size_x(rect),
                                BLI_rcti_size_y(rect),
+                               GPU_DATA_FLOAT,
                                rp->rect);
 
     float winmat[4][4];
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index c4da39bca2f..6cd940244b4 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2157,8 +2157,13 @@ static void view3d_opengl_read_Z_pixels(GPUViewport *viewport, rcti *rect, void
   GPU_framebuffer_texture_attach(tmp_fb, dtxl->depth, 0, 0);
   GPU_framebuffer_bind(tmp_fb);
 
-  GPU_framebuffer_read_depth(
-      tmp_fb, rect->xmin, rect->ymin, BLI_rcti_size_x(rect), BLI_rcti_size_y(rect), data);
+  GPU_framebuffer_read_depth(tmp_fb,
+                             rect->xmin,
+                             rect->ymin,
+                             BLI_rcti_size_x(rect),
+                             BLI_rcti_size_y(rect),
+                             GPU_DATA_FLOAT,
+                             data);
 
   GPU_framebuffer_restore();
   GPU_framebuffer_free(tmp_fb);
diff --git a/source/blender/gpu/GPU_framebuffer.h b/source/blender/gpu/GPU_framebuffer.h
index f4599ac44bb..c0391d96e06 100644
--- a/source/blender/gpu/GPU_framebuffer.h
+++ b/source/blender/gpu/GPU_framebuffer.h
@@ -188,7 +188,8 @@ void GPU_framebuffer_clear(GPUFrameBuffer *fb,
 
 void GPU_framebuffer_multi_clear(GPUFrameBuffer *fb, const float (*clear_cols)[4]);
 
-void GPU_framebuffer_read_depth(GPUFrameBuffer *fb, int x, int y, int w, int h, float *data);
+void GPU_framebuffer_read_depth(
+    GPUFrameBuffer *fb, int x, int y, int w, int h, eGPUDataFormat format, void *data);
 void GPU_framebuffer_read_color(GPUFrameBuffer *fb,
                                 int x,
                                 int y,
diff --git a/source/blender/gpu/intern/gpu_framebuffer.cc b/source/blender/gpu/intern/gpu_framebuffer.cc
index a0b05df583a..f9caa8df143 100644
--- a/source/blender/gpu/intern/gpu_framebuffer.cc
+++ b/source/blender/gpu/intern/gpu_framebuffer.cc
@@ -393,10 +393,11 @@ void GPU_clear_depth(float depth)
   GPU_context_active_get()->active_fb->clear(GPU_DEPTH_BIT, clear_col, depth, 0x0);
 }
 
-void GPU_framebuffer_read_depth(GPUFrameBuffer *gpu_fb, int x, int y, int w, int h, float *data)
+void GPU_framebuffer_read_depth(
+    GPUFrameBuffer *gpu_fb, int x, int y, int w, int h, eGPUDataFormat format, void *data)
 {
   int rect[4] = {x, y, w, h};
-  reinterpret_cast<FrameBuffer *>(gpu_fb)->read(GPU_DEPTH_BIT, GPU_DATA_FLOAT, rect, 1, 1, data);
+  reinterpret_cast<FrameBuffer *>(gpu_fb)->read(GPU_DEPTH_BIT, format, rect, 1, 1, data);
 }
 
 void GPU_framebuffer_read_color(GPUFrameBuffer *gpu_fb,



More information about the Bf-blender-cvs mailing list