[Bf-blender-cvs] [63d34abc0f3] vr_scene_inspection: Fix too bright rendering on some runtimes

Julian Eisel noreply at git.blender.org
Wed Feb 19 21:17:50 CET 2020


Commit: 63d34abc0f3acf12cad4162be505bf2d03dcd8a3
Author: Julian Eisel
Date:   Wed Feb 19 21:15:18 2020 +0100
Branches: vr_scene_inspection
https://developer.blender.org/rB63d34abc0f3acf12cad4162be505bf2d03dcd8a3

Fix too bright rendering on some runtimes

Transform to display space on our end is only needed for the Monado
runtime.

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

M	source/blender/gpu/GPU_viewport.h
M	source/blender/gpu/intern/gpu_viewport.c
M	source/blender/windowmanager/intern/wm_xr.c

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

diff --git a/source/blender/gpu/GPU_viewport.h b/source/blender/gpu/GPU_viewport.h
index 2d125032f47..3aa3970359a 100644
--- a/source/blender/gpu/GPU_viewport.h
+++ b/source/blender/gpu/GPU_viewport.h
@@ -100,6 +100,9 @@ GPUViewport *GPU_viewport_create(void);
 void GPU_viewport_bind(GPUViewport *viewport, const rcti *rect);
 void GPU_viewport_unbind(GPUViewport *viewport);
 void GPU_viewport_draw_to_screen(GPUViewport *viewport, const rcti *rect);
+void GPU_viewport_draw_to_screen_ex(GPUViewport *viewport,
+                                    const rcti *rect,
+                                    bool display_colorspace);
 void GPU_viewport_free(GPUViewport *viewport);
 
 void GPU_viewport_colorspace_set(GPUViewport *viewport,
diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c
index 8db9102de7c..437d42f0b5f 100644
--- a/source/blender/gpu/intern/gpu_viewport.c
+++ b/source/blender/gpu/intern/gpu_viewport.c
@@ -533,13 +533,12 @@ static void gpu_viewport_draw_colormanaged(GPUViewport *viewport,
 }
 
 /**
- * Merge and draw the buffers of \a viewport into the currently active framebuffer, performing
- * color transform to display space.
- *
- * \param rect: Coordinates to draw into. By swapping min and max values, drawing can be done with
- *              inversed axis coordinates (upside down or sideways).
+ * Version of #GPU_viewport_draw_to_screen() that lets caller decide if display colorspace
+ * transform should be performed.
  */
-void GPU_viewport_draw_to_screen(GPUViewport *viewport, const rcti *rect)
+void GPU_viewport_draw_to_screen_ex(GPUViewport *viewport,
+                                    const rcti *rect,
+                                    bool display_colorspace)
 {
   DefaultFramebufferList *dfbl = viewport->fbl;
   DefaultTextureList *dtxl = viewport->txl;
@@ -585,7 +584,19 @@ void GPU_viewport_draw_to_screen(GPUViewport *viewport, const rcti *rect)
     SWAP(int, uv_rect.ymin, uv_rect.ymax);
   }
 
-  gpu_viewport_draw_colormanaged(viewport, &pos_rect, &uv_rect, true);
+  gpu_viewport_draw_colormanaged(viewport, &pos_rect, &uv_rect, display_colorspace);
+}
+
+/**
+ * Merge and draw the buffers of \a viewport into the currently active framebuffer, performing
+ * color transform to display space.
+ *
+ * \param rect: Coordinates to draw into. By swapping min and max values, drawing can be done with
+ *              inversed axis coordinates (upside down or sideways).
+ */
+void GPU_viewport_draw_to_screen(GPUViewport *viewport, const rcti *rect)
+{
+  GPU_viewport_draw_to_screen_ex(viewport, rect, true);
 }
 
 /**
diff --git a/source/blender/windowmanager/intern/wm_xr.c b/source/blender/windowmanager/intern/wm_xr.c
index bb5a8c4d0a1..3cce3d59fb1 100644
--- a/source/blender/windowmanager/intern/wm_xr.c
+++ b/source/blender/windowmanager/intern/wm_xr.c
@@ -548,7 +548,7 @@ static void wm_xr_draw_viewport_buffers_to_active_framebuffer(
   if (is_upside_down) {
     SWAP(int, rect.ymin, rect.ymax);
   }
-  GPU_viewport_draw_to_screen(surface_data->viewport, &rect);
+  GPU_viewport_draw_to_screen_ex(surface_data->viewport, &rect, draw_view->expects_srgb_buffer);
 }
 
 /**



More information about the Bf-blender-cvs mailing list