[Bf-blender-cvs] [896a51c67eb] soc-2020-xr-input: Some more copied changes

Peter Klimenko noreply at git.blender.org
Fri Jul 31 13:35:50 CEST 2020


Commit: 896a51c67eb891bd7cd95eeb44adc1472b225f99
Author: Peter Klimenko
Date:   Fri Jul 31 21:35:43 2020 +1000
Branches: soc-2020-xr-input
https://developer.blender.org/rB896a51c67eb891bd7cd95eeb44adc1472b225f99

Some more copied changes

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

M	intern/ghost/GHOST_Types.h
M	source/blender/windowmanager/xr/intern/wm_xr.c
M	source/blender/windowmanager/xr/intern/wm_xr_draw.c
M	source/blender/windowmanager/xr/intern/wm_xr_intern.h
M	source/blender/windowmanager/xr/intern/wm_xr_session.c

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

diff --git a/intern/ghost/GHOST_Types.h b/intern/ghost/GHOST_Types.h
index a047f48552f..cc85d4bef9b 100644
--- a/intern/ghost/GHOST_Types.h
+++ b/intern/ghost/GHOST_Types.h
@@ -674,6 +674,10 @@ typedef struct GHOST_XrDrawViewInfo {
 
   /** Set if the buffer should be submitted with a srgb transfer applied. */
   char expects_srgb_buffer;
+
+  GHOST_XrPose world_pose;
+  float world_scale;
+
 } GHOST_XrDrawViewInfo;
 
 typedef struct GHOST_XrError {
diff --git a/source/blender/windowmanager/xr/intern/wm_xr.c b/source/blender/windowmanager/xr/intern/wm_xr.c
index 36ced62660a..49c7c6b26a9 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr.c
@@ -40,6 +40,8 @@
 #include "wm_surface.h"
 #include "wm_xr_intern.h"
 
+#include "BLI_math_rotation.h"
+
 typedef struct {
   wmWindowManager *wm;
 } wmXrErrorHandlerData;
diff --git a/source/blender/windowmanager/xr/intern/wm_xr_draw.c b/source/blender/windowmanager/xr/intern/wm_xr_draw.c
index b1c59cb41be..ed727dfef74 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr_draw.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr_draw.c
@@ -131,7 +131,6 @@ void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
 
   wm_xr_session_draw_data_update(session_state, settings, draw_view, draw_data);
   wm_xr_draw_matrices_create(
-      wm_xr_session_state_update(settings, draw_data, draw_view, session_state);
       draw_data, draw_view, settings, session_state->world_scale, viewmat, winmat);
 
   apply_world_transform(viewmat, session_state->world_pose, session_state->world_scale);
diff --git a/source/blender/windowmanager/xr/intern/wm_xr_intern.h b/source/blender/windowmanager/xr/intern/wm_xr_intern.h
index 9b7e9a15948..794159118c4 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr_intern.h
+++ b/source/blender/windowmanager/xr/intern/wm_xr_intern.h
@@ -45,6 +45,9 @@ typedef struct wmXrSessionState {
 
   bool force_reset_to_base_pose;
   bool is_view_data_set;
+  GHOST_XrPose world_pose;
+  float world_scale;
+
 } wmXrSessionState;
 
 typedef struct wmXrRuntimeData {
@@ -81,10 +84,13 @@ void wm_xr_session_draw_data_update(const wmXrSessionState *state,
                                     const XrSessionSettings *settings,
                                     const GHOST_XrDrawViewInfo *draw_view,
                                     wmXrDrawData *draw_data);
+
 void wm_xr_session_state_update(const XrSessionSettings *settings,
                                 const wmXrDrawData *draw_data,
                                 const GHOST_XrDrawViewInfo *draw_view,
-                                wmXrSessionState *state);
+                                wmXrSessionState *state,
+                                float viewmat[4][4]);
+
 bool wm_xr_session_surface_offscreen_ensure(wmXrSurfaceData *surface_data,
                                             const GHOST_XrDrawViewInfo *draw_view);
 void *wm_xr_session_gpu_binding_context_create(void);
diff --git a/source/blender/windowmanager/xr/intern/wm_xr_session.c b/source/blender/windowmanager/xr/intern/wm_xr_session.c
index c564f74b771..77728e60e23 100644
--- a/source/blender/windowmanager/xr/intern/wm_xr_session.c
+++ b/source/blender/windowmanager/xr/intern/wm_xr_session.c
@@ -245,7 +245,8 @@ void wm_xr_session_draw_data_update(const wmXrSessionState *state,
 void wm_xr_session_state_update(const XrSessionSettings *settings,
                                 const wmXrDrawData *draw_data,
                                 const GHOST_XrDrawViewInfo *draw_view,
-                                wmXrSessionState *state)
+                                wmXrSessionState *state,
+                                float viewmat[4][4])
 {
   GHOST_XrPose viewer_pose;
   const bool use_position_tracking = settings->flag & XR_SESSION_USE_POSITION_TRACKING;
@@ -267,7 +268,10 @@ void wm_xr_session_state_update(const XrSessionSettings *settings,
 
   copy_v3_v3(state->viewer_pose.position, viewer_pose.position);
   copy_qt_qt(state->viewer_pose.orientation_quat, viewer_pose.orientation_quat);
-  wm_xr_pose_to_viewmat(&viewer_pose, state->viewer_viewmat);
+
+  /* Viewmat transform. */
+  memcpy(state->viewer_viewmat, viewmat, 16 * sizeof(float));
+
   /* No idea why, but multiplying by two seems to make it match the VR view more. */
   state->focal_len = 2.0f *
                      fov_to_focallength(draw_view->fov.angle_right - draw_view->fov.angle_left,



More information about the Bf-blender-cvs mailing list