Blender V4.3
wm_xr_intern.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "CLG_log.h"
12
13#include "GHOST_Types.h"
14
15#include "DNA_listBase.h"
16#include "DNA_xr_types.h"
17
18#include "wm_xr.hh"
19
20struct Object;
21struct wmXrActionSet;
22
25
27 GHOST_XrPose viewer_pose;
29 float viewer_viewmat[4][4];
31 float viewer_mat_base[4][4];
32 float focal_len;
33
36 char prev_base_pose_type; /* #eXRSessionBasePoseType. */
41 GHOST_XrPose prev_base_pose;
45 GHOST_XrPose prev_local_pose;
48
51
53 GHOST_XrPose nav_pose;
54 float nav_scale;
57 GHOST_XrPose nav_pose_prev;
60
62 ListBase controllers; /* #wmXrController. */
63
68 /* Name of the action set (if any) to activate before the next actions sync. */
69 char active_action_set_next[64]; /* #MAX_NAME. */
70};
71
90
96
99 ListBase viewports; /* #wmXrViewportPair. */
100
105};
106
108 struct Scene *scene;
109 struct Depsgraph *depsgraph;
110
113
117 GHOST_XrPose base_pose;
122 float eye_position_ofs[3]; /* Local/view space. */
123};
124
128 char subaction_path[64]; /* #XR_MAX_USER_PATH_LENGTH. */
129
132 GHOST_XrPose grip_pose;
133 float grip_mat[4][4];
134 float grip_mat_base[4][4];
137 GHOST_XrPose aim_pose;
138 float aim_mat[4][4];
139 float aim_mat_base[4][4];
140
142 blender::gpu::Batch *model;
143};
144
177
184
197
198/* `wm_xr.cc` */
199
202
203/* `wm_xr_session.cc` */
204
207 const wmXrRuntimeData *runtime_data);
209 const XrSessionSettings *settings,
210 const GHOST_XrDrawViewInfo *draw_view,
211 wmXrDrawData *draw_data);
218 const wmXrDrawData *draw_data,
219 const GHOST_XrDrawViewInfo *draw_view,
222 const GHOST_XrDrawViewInfo *draw_view);
224void wm_xr_session_gpu_binding_context_destroy(GHOST_ContextHandle context);
225
229 const wmXrAction *aim_action,
230 wmXrData *xr);
232
233/* `wm_xr_draw.cc` */
234
235void wm_xr_pose_to_mat(const GHOST_XrPose *pose, float r_mat[4][4]);
236void wm_xr_pose_scale_to_mat(const GHOST_XrPose *pose, float scale, float r_mat[4][4]);
237void wm_xr_pose_to_imat(const GHOST_XrPose *pose, float r_imat[4][4]);
238void wm_xr_pose_scale_to_imat(const GHOST_XrPose *pose, float scale, float r_imat[4][4]);
245void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata);
246void wm_xr_draw_controllers(const bContext *C, ARegion *region, void *customdata);
247
254bool wm_xr_passthrough_enabled(void *customdata);
261void wm_xr_disable_passthrough(void *customdata);
These structs are the foundation for all linked lists in the library system.
eXrOpFlag
eXrAxisFlag
eXrActionType
eXrActionFlag
eXrHapticFlag
direct_radiance_1_tx direct_radiance_3_tx indirect_radiance_2_tx radiance_feedback_img draw_fullscreen fragment_source("eevee_deferred_combine_frag.glsl") .specialization_constant(Type out_radiance draw_view
static ulong state[N]
__int64 int64_t
Definition stdint.h:89
wmXrAction * controller_aim_action
wmXrAction * controller_grip_action
ListBase active_modal_actions
ListBase active_haptic_actions
eXrActionType type
struct wmOperatorType * ot
eXrAxisFlag * axis_flags
char * haptic_name
unsigned int count_subaction_paths
void * states_prev
eXrOpFlag op_flag
float haptic_frequency
int64_t haptic_duration
eXrActionFlag action_flag
const char * active_modal_path
char ** subaction_paths
float * float_thresholds
float haptic_amplitude
eXrHapticFlag haptic_flag
IDProperty * op_properties
float grip_mat_base[4][4]
struct wmXrController * prev
float grip_mat[4][4]
GHOST_XrPose grip_pose
float aim_mat[4][4]
blender::gpu::Batch * model
float aim_mat_base[4][4]
char subaction_path[64]
struct wmXrController * next
GHOST_XrPose aim_pose
wmXrData * xr_data
float eye_position_ofs[3]
struct Depsgraph * depsgraph
GHOST_XrPose base_pose
wmXrSurfaceData * surface_data
struct Scene * scene
struct wmXrHapticAction * prev
struct wmXrHapticAction * next
const char * subaction_path
wmXrAction * action
GHOST_XrContextHandle context
wmXrSessionExitFn exit_fn
wmXrSessionState session_state
wmWindow * session_root_win
ListBase actionmaps
struct ScrArea * area
float viewer_mat_base[4][4]
float viewer_viewmat[4][4]
GHOST_XrPose nav_pose
bool force_reset_to_base_pose
GHOST_XrPose nav_pose_prev
GHOST_XrPose prev_local_pose
float prev_eye_position_ofs[3]
char active_action_set_next[64]
Object * prev_base_pose_object
struct wmXrActionSet * active_action_set
GHOST_XrPose prev_base_pose
GHOST_XrPose viewer_pose
struct ARegionType * controller_art
void * controller_draw_handle
struct GPUViewport * viewport
struct wmXrViewportPair * prev
struct wmXrViewportPair * next
struct GPUOffScreen * offscreen
void(*)(const wmXrData *xr_data) wmXrSessionExitFn
Definition wm_xr.hh:15
void wm_xr_pose_to_mat(const GHOST_XrPose *pose, float r_mat[4][4])
Definition wm_xr_draw.cc:33
void wm_xr_session_gpu_binding_context_destroy(GHOST_ContextHandle context)
void wm_xr_session_actions_update(wmWindowManager *wm)
void wm_xr_session_draw_data_update(wmXrSessionState *state, const XrSessionSettings *settings, const GHOST_XrDrawViewInfo *draw_view, wmXrDrawData *draw_data)
void * wm_xr_session_gpu_binding_context_create()
void wm_xr_draw_controllers(const bContext *C, ARegion *region, void *customdata)
void wm_xr_runtime_data_free(wmXrRuntimeData **runtime)
Definition wm_xr.cc:156
void wm_xr_pose_scale_to_mat(const GHOST_XrPose *pose, float scale, float r_mat[4][4])
Definition wm_xr_draw.cc:39
bool wm_xr_passthrough_enabled(void *customdata)
Check if XR passthrough is enabled.
wmXrRuntimeData * wm_xr_runtime_data_create()
Definition wm_xr.cc:149
void wm_xr_disable_passthrough(void *customdata)
Disable XR passthrough if not supported.
void wm_xr_session_controller_data_populate(const wmXrAction *grip_action, const wmXrAction *aim_action, wmXrData *xr)
wmWindow * wm_xr_session_root_window_or_fallback_get(const wmWindowManager *wm, const wmXrRuntimeData *runtime_data)
void wm_xr_session_state_update(const XrSessionSettings *settings, const wmXrDrawData *draw_data, const GHOST_XrDrawViewInfo *draw_view, wmXrSessionState *state)
void wm_xr_session_controller_data_clear(wmXrSessionState *state)
void wm_xr_session_data_free(wmXrSessionState *state)
bool wm_xr_session_surface_offscreen_ensure(wmXrSurfaceData *surface_data, const GHOST_XrDrawViewInfo *draw_view)
void wm_xr_session_actions_init(wmXrData *xr)
void wm_xr_pose_scale_to_imat(const GHOST_XrPose *pose, float scale, float r_imat[4][4])
Definition wm_xr_draw.cc:57
void wm_xr_draw_view(const GHOST_XrDrawViewInfo *draw_view, void *customdata)
Draw a viewport for a single eye.
void wm_xr_pose_to_imat(const GHOST_XrPose *pose, float r_imat[4][4])
Definition wm_xr_draw.cc:49