[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