Blender  V2.93
wm_xr_intern.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16 
21 #pragma once
22 
23 #include "CLG_log.h"
24 
25 #include "wm_xr.h"
26 
27 typedef struct wmXrSessionState {
28  bool is_started;
29 
31  GHOST_XrPose viewer_pose;
33  float viewer_viewmat[4][4];
34  float focal_len;
35 
38  char prev_base_pose_type; /* eXRSessionBasePoseType */
44 
48 
49 typedef struct wmXrRuntimeData {
50  GHOST_XrContextHandle context;
51 
55 
60 
61 typedef struct {
65 
66 typedef struct wmXrDrawData {
67  struct Scene *scene;
69 
72 
76  GHOST_XrPose base_pose;
79  float eye_position_ofs[3]; /* Local/view space. */
81 
84 
86  const XrSessionSettings *settings,
87  const GHOST_XrDrawViewInfo *draw_view,
88  wmXrDrawData *draw_data);
90  const wmXrDrawData *draw_data,
91  const GHOST_XrDrawViewInfo *draw_view,
94  const GHOST_XrDrawViewInfo *draw_view);
97 
98 void wm_xr_pose_to_viewmat(const GHOST_XrPose *pose, float r_viewmat[4][4]);
99 void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata);
struct Depsgraph Depsgraph
Definition: DEG_depsgraph.h:51
static ulong state[N]
struct SELECTID_Context context
Definition: select_engine.c:47
wmXrData * xr_data
Definition: wm_xr_intern.h:70
float eye_position_ofs[3]
Definition: wm_xr_intern.h:79
struct Depsgraph * depsgraph
Definition: wm_xr_intern.h:68
GHOST_XrPose base_pose
Definition: wm_xr_intern.h:76
wmXrSurfaceData * surface_data
Definition: wm_xr_intern.h:71
struct Scene * scene
Definition: wm_xr_intern.h:67
GHOST_XrContextHandle context
Definition: wm_xr_intern.h:50
wmXrSessionExitFn exit_fn
Definition: wm_xr_intern.h:58
wmXrSessionState session_state
Definition: wm_xr_intern.h:57
wmWindow * session_root_win
Definition: wm_xr_intern.h:54
float viewer_viewmat[4][4]
Definition: wm_xr_intern.h:33
bool force_reset_to_base_pose
Definition: wm_xr_intern.h:45
float prev_eye_position_ofs[3]
Definition: wm_xr_intern.h:43
Object * prev_base_pose_object
Definition: wm_xr_intern.h:39
char prev_base_pose_type
Definition: wm_xr_intern.h:38
GHOST_XrPose viewer_pose
Definition: wm_xr_intern.h:31
struct GPUViewport * viewport
Definition: wm_xr_intern.h:63
struct GPUOffScreen * offscreen
Definition: wm_xr_intern.h:62
void(* wmXrSessionExitFn)(const wmXrData *xr_data)
Definition: wm_xr.h:26
void wm_xr_session_gpu_binding_context_destroy(GHOST_ContextHandle context)
struct wmXrDrawData wmXrDrawData
struct wmXrSessionState wmXrSessionState
void wm_xr_runtime_data_free(wmXrRuntimeData **runtime)
Definition: wm_xr.c:149
void wm_xr_session_draw_data_update(const wmXrSessionState *state, const XrSessionSettings *settings, const GHOST_XrDrawViewInfo *draw_view, wmXrDrawData *draw_data)
wmXrRuntimeData * wm_xr_runtime_data_create(void)
Definition: wm_xr.c:143
void wm_xr_pose_to_viewmat(const GHOST_XrPose *pose, float r_viewmat[4][4])
Definition: wm_xr_draw.c:40
struct wmXrRuntimeData wmXrRuntimeData
void * wm_xr_session_gpu_binding_context_create(void)
void wm_xr_session_state_update(const XrSessionSettings *settings, const wmXrDrawData *draw_data, const GHOST_XrDrawViewInfo *draw_view, wmXrSessionState *state)
bool wm_xr_session_surface_offscreen_ensure(wmXrSurfaceData *surface_data, const GHOST_XrDrawViewInfo *draw_view)
void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
Draw a viewport for a single eye.
Definition: wm_xr_draw.c:105