|
Blender V4.3
|
#include <cstring>#include "BLI_listbase.h"#include "BLI_math_matrix.h"#include "BLI_math_rotation.h"#include "BLI_math_vector.h"#include "ED_view3d_offscreen.hh"#include "GHOST_C-api.h"#include "GPU_batch_presets.hh"#include "GPU_immediate.hh"#include "GPU_matrix.hh"#include "GPU_viewport.hh"#include "WM_api.hh"#include "wm_xr_intern.hh"Go to the source code of this file.
Functions | |
Window-Manager XR Drawing | |
Implements Blender specific drawing functionality for use with the Ghost-XR API. | |
| void | wm_xr_pose_to_mat (const GHOST_XrPose *pose, float r_mat[4][4]) |
| void | wm_xr_pose_scale_to_mat (const GHOST_XrPose *pose, float scale, float r_mat[4][4]) |
| void | wm_xr_pose_to_imat (const GHOST_XrPose *pose, float r_imat[4][4]) |
| void | wm_xr_pose_scale_to_imat (const GHOST_XrPose *pose, float scale, float r_imat[4][4]) |
| static void | wm_xr_draw_matrices_create (const wmXrDrawData *draw_data, const GHOST_XrDrawViewInfo *draw_view, const XrSessionSettings *session_settings, const wmXrSessionState *session_state, float r_viewmat[4][4], float r_projmat[4][4]) |
| static void | wm_xr_draw_viewport_buffers_to_active_framebuffer (const wmXrRuntimeData *runtime_data, const 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. | |
| bool | wm_xr_passthrough_enabled (void *customdata) |
| Check if XR passthrough is enabled. | |
| void | wm_xr_disable_passthrough (void *customdata) |
| Disable XR passthrough if not supported. | |
| static blender::gpu::Batch * | wm_xr_controller_model_batch_create (GHOST_XrContextHandle xr_context, const char *subaction_path) |
| static void | wm_xr_controller_model_draw (const XrSessionSettings *settings, GHOST_XrContextHandle xr_context, wmXrSessionState *state) |
| static void | wm_xr_controller_aim_draw (const XrSessionSettings *settings, wmXrSessionState *state) |
| void | wm_xr_draw_controllers (const bContext *, ARegion *, void *customdata) |
|
static |
Definition at line 326 of file wm_xr_draw.cc.
References b, col, controller, float, GPU_blend(), GPU_BLEND_ALPHA, GPU_BLEND_NONE, GPU_COMP_F32, GPU_COMP_U8, GPU_DEPTH_LESS_EQUAL, GPU_DEPTH_NONE, GPU_depth_test(), GPU_FETCH_FLOAT, GPU_FETCH_INT_TO_FLOAT_UNIT, GPU_PRIM_LINES, GPU_SHADER_3D_POLYLINE_FLAT_COLOR, GPU_vertformat_attr_add(), GPU_viewport_size_get_f(), immAttr4ubv(), immAttrSkip(), immBegin(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniform1f(), immUniform2fv(), immVertex3fv(), immVertexFormat(), LISTBASE_FOREACH, madd_v3_v3v3fl(), pos, state, XR_CONTROLLER_DRAW_DARK, XR_CONTROLLER_DRAW_DARK_RAY, XR_CONTROLLER_DRAW_LIGHT, and XR_CONTROLLER_DRAW_LIGHT_RAY.
Referenced by wm_xr_draw_controllers().
|
static |
Definition at line 219 of file wm_xr_draw.cc.
References blender::gpu::VertBuf::data(), GPU_batch_create_ex(), GPU_BATCH_OWNS_INDEX, GPU_BATCH_OWNS_VBO, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_indexbuf_add_tri_verts(), GPU_indexbuf_build(), GPU_indexbuf_init(), GPU_PRIM_TRIS, GPU_vertbuf_create_with_format, GPU_vertbuf_data_alloc(), and GPU_vertformat_attr_add().
Referenced by wm_xr_controller_model_draw().
|
static |
Definition at line 254 of file wm_xr_draw.cc.
References controller, GPU_batch_draw(), GPU_batch_draw_range(), GPU_batch_preset_sphere(), GPU_batch_program_set_builtin(), GPU_batch_uniform_4fv, GPU_blend(), GPU_BLEND_ALPHA, GPU_DEPTH_NONE, GPU_depth_test(), GPU_matrix_mul, GPU_matrix_pop(), GPU_matrix_push(), GPU_matrix_scale_1f(), GPU_SHADER_3D_UNIFORM_COLOR, LISTBASE_FOREACH, state, wm_xr_controller_model_batch_create(), XR_CONTROLLER_DRAW_DARK, XR_CONTROLLER_DRAW_DARK_RAY, XR_CONTROLLER_DRAW_LIGHT, and XR_CONTROLLER_DRAW_LIGHT_RAY.
Referenced by wm_xr_draw_controllers().
| void wm_xr_disable_passthrough | ( | void * | customdata | ) |
Disable XR passthrough if not supported.
In case passthrough is not supported by the XR runtime, force un-check the toggle in the GUI. It's assigned to Ghost-XR as a callback (see GHOST_XrDisablePassthroughFunc()).
Definition at line 209 of file wm_xr_draw.cc.
References XrSessionSettings::draw_flags, RPT_INFO, wmXrData::session_settings, WM_report(), and wmXrDrawData::xr_data.
Referenced by wm_xr_init().
Definition at line 421 of file wm_xr_draw.cc.
References wmXrRuntimeData::context, wmXrData::runtime, wmXrData::session_settings, wmXrRuntimeData::session_state, state, wm_xr_controller_aim_draw(), and wm_xr_controller_model_draw().
Referenced by wm_xr_session_controller_data_populate().
|
static |
Definition at line 72 of file wm_xr_draw.cc.
References wmXrDrawData::base_pose, wmXrDrawData::base_scale, XrSessionSettings::clip_end, XrSessionSettings::clip_start, copy_qt_qt(), copy_v3_v3(), draw_view, wmXrDrawData::eye_position_ofs, XrSessionSettings::flag, mul_m4_m4m4(), wmXrSessionState::nav_pose_prev, wmXrSessionState::nav_scale_prev, perspective_m4_fov(), sub_v3_v3(), wm_xr_pose_scale_to_imat(), wm_xr_pose_to_imat(), XR_SESSION_USE_ABSOLUTE_TRACKING, and XR_SESSION_USE_POSITION_TRACKING.
Referenced by wm_xr_draw_view().
| void wm_xr_draw_view | ( | const GHOST_XrDrawViewInfo * | draw_view, |
| void * | customdata ) |
Draw a viewport for a single eye.
This is the main viewport drawing function for VR sessions. It's assigned to Ghost-XR as a callback (see GHOST_XrDrawViewFunc()) and executed for each view (read: eye).
Definition at line 134 of file wm_xr_draw.cc.
References BLI_assert, BLI_findlink(), wmXrDrawData::depsgraph, XrSessionSettings::draw_flags, draw_view, ED_view3d_draw_offscreen_simple(), GPU_clear_depth(), GPU_framebuffer_restore(), GPU_offscreen_bind(), wmXrViewportPair::offscreen, wmXrData::runtime, wmXrDrawData::scene, wmXrData::session_settings, wmXrRuntimeData::session_state, wmXrDrawData::surface_data, V3D_OFSDRAW_OVERRIDE_SCENE_SETTINGS, wmXrViewportPair::viewport, wmXrSurfaceData::viewports, wm_xr_draw_matrices_create(), wm_xr_draw_viewport_buffers_to_active_framebuffer(), wm_xr_session_draw_data_update(), WM_xr_session_is_ready(), wm_xr_session_state_update(), wm_xr_session_surface_offscreen_ensure(), and wmXrDrawData::xr_data.
Referenced by wm_xr_init().
|
static |
Definition at line 109 of file wm_xr_draw.cc.
References BLI_assert, BLI_findlink(), wmXrRuntimeData::context, draw_view, GPU_viewport_draw_to_screen_ex(), wmXrViewportPair::viewport, wmXrSurfaceData::viewports, wmViewport(), and rcti::xmin.
Referenced by wm_xr_draw_view().
| bool wm_xr_passthrough_enabled | ( | void * | customdata | ) |
Check if XR passthrough is enabled.
Needed to add or not the passthrough composition layer. It's assigned to Ghost-XR as a callback (see GHOST_XrPassthroughEnabledFunc()).
Definition at line 200 of file wm_xr_draw.cc.
References wmXrData::session_settings, V3D_OFSDRAW_XR_SHOW_PASSTHROUGH, and wmXrDrawData::xr_data.
Referenced by wm_xr_init().
Definition at line 57 of file wm_xr_draw.cc.
References BLI_assert, invert_qt_qt_normalized(), mul_v3_fl(), quat_to_mat4(), and translate_m4().
Referenced by wm_xr_draw_matrices_create(), wm_xr_navigation_grab_apply(), wm_xr_session_actions_update(), and wm_xr_session_state_update().
Definition at line 39 of file wm_xr_draw.cc.
References BLI_assert, mul_v3_fl(), and wm_xr_pose_to_mat().
Referenced by wm_xr_navigation_grab_apply(), wm_xr_session_actions_update(), wm_xr_session_controller_data_update(), and wm_xr_session_state_update().
| void wm_xr_pose_to_imat | ( | const GHOST_XrPose * | pose, |
| float | r_imat[4][4] ) |
Definition at line 49 of file wm_xr_draw.cc.
References invert_qt_qt_normalized(), quat_to_mat4(), and translate_m4().
Referenced by wm_xr_draw_matrices_create(), and wm_xr_navigation_fly_modal().
| void wm_xr_pose_to_mat | ( | const GHOST_XrPose * | pose, |
| float | r_mat[4][4] ) |
Definition at line 33 of file wm_xr_draw.cc.
References copy_v3_v3(), and quat_to_mat4().
Referenced by wm_xr_navigation_fly_modal(), wm_xr_pose_scale_to_mat(), wm_xr_session_controller_pose_calc(), and wm_xr_session_state_update().