Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jbakker>2020-03-19 10:06:49 +0300
committerJeroen Bakker <jeroen@blender.org>2020-03-19 10:26:48 +0300
commitfd48ff1296f45b32bffeca2c60dca2a12bb84229 (patch)
tree250137802d4bed0628a7926df724227349320757 /source/blender/draw
parentfe045b2b77dc6d7f0b552619fe824b496d34db6c (diff)
Fix T73931: Stereo Viewport Color Management
Stereoscopic viewport didn't support Color Manangement due recent changes in the color management pipeline. In order to solve the issue we will migrate the strereo rendering into the GPUViewport. This will share some textures and reduce required GPU memory. Reviewed By: fclem, dfelinto Differential Revision: https://developer.blender.org/D6922
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/DRW_engine_types.h3
-rw-r--r--source/blender/draw/intern/draw_manager.c6
2 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/draw/DRW_engine_types.h b/source/blender/draw/DRW_engine_types.h
index dd56f87182c..d31bab5a1b5 100644
--- a/source/blender/draw/DRW_engine_types.h
+++ b/source/blender/draw/DRW_engine_types.h
@@ -35,11 +35,14 @@ typedef struct DefaultFramebufferList {
struct GPUFrameBuffer *color_only_fb;
struct GPUFrameBuffer *depth_only_fb;
struct GPUFrameBuffer *overlay_only_fb;
+ struct GPUFrameBuffer *stereo_comp_fb;
} DefaultFramebufferList;
typedef struct DefaultTextureList {
struct GPUTexture *color;
struct GPUTexture *color_overlay;
+ struct GPUTexture *color_stereo;
+ struct GPUTexture *color_overlay_stereo;
struct GPUTexture *depth;
struct GPUTexture *depth_in_front;
} DefaultTextureList;
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index df3a1e3da79..0c049e030b1 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1218,7 +1218,7 @@ void DRW_notify_view_update(const DRWUpdateContext *update_ctx)
/* Separate update for each stereo view. */
for (int view = 0; view < 2; view++) {
- GPUViewport *viewport = WM_draw_region_get_viewport(region, view);
+ GPUViewport *viewport = WM_draw_region_get_viewport(region);
if (!viewport) {
continue;
}
@@ -1232,6 +1232,7 @@ void DRW_notify_view_update(const DRWUpdateContext *update_ctx)
drw_state_prepare_clean_for_draw(&DST);
DST.viewport = viewport;
+ GPU_viewport_active_view_set(viewport, view);
DST.draw_ctx = (DRWContextState){
.region = region,
.rv3d = rv3d,
@@ -1416,7 +1417,6 @@ void DRW_draw_render_loop_ex(struct Depsgraph *depsgraph,
DST.draw_ctx.evil_C = evil_C;
DST.viewport = viewport;
-
/* Setup viewport */
DST.draw_ctx = (DRWContextState){
.region = region,
@@ -2374,7 +2374,7 @@ void DRW_draw_select_id(Depsgraph *depsgraph, ARegion *region, View3D *v3d, cons
drw_context_state_init();
/* Setup viewport */
- DST.viewport = WM_draw_region_get_viewport(region, 0);
+ DST.viewport = WM_draw_region_get_viewport(region);
drw_viewport_var_init();
/* Update ubos */