Blender
V3.3
|
#include <string.h>
#include "BKE_context.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "ED_view3d_offscreen.h"
#include "GHOST_C-api.h"
#include "GPU_batch_presets.h"
#include "GPU_immediate.h"
#include "GPU_matrix.h"
#include "GPU_viewport.h"
#include "WM_api.h"
#include "wm_surface.h"
#include "wm_xr_intern.h"
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. More... | |
static GPUBatch * | 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 *UNUSED(C), ARegion *UNUSED(region), void *customdata) |
|
static |
Definition at line 292 of file wm_xr_draw.c.
References usdtokens::b(), BLI_listbase_count(), XrSessionSettings::clip_end, col, color, controller, XrSessionSettings::controller_draw_style, float(), usdtokens::g(), 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, r, 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 193 of file wm_xr_draw.c.
References 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(), GPU_vertbuf_get_data(), GPU_vertformat_attr_add(), and NULL.
Referenced by wm_xr_controller_model_draw().
|
static |
Definition at line 228 of file wm_xr_draw.c.
References color, component(), controller, XrSessionSettings::controller_draw_style, 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, GPUBatch, 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().
Definition at line 379 of file wm_xr_draw.c.
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 71 of file wm_xr_draw.c.
References wmXrDrawData::base_pose, wmXrDrawData::base_scale, XrSessionSettings::clip_end, XrSessionSettings::clip_start, copy_qt_qt(), copy_v3_v3(), 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().
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 128 of file wm_xr_draw.c.
References BLI_assert, BLI_findlink(), XrSessionSettings::clip_end, XrSessionSettings::clip_start, wmXrDrawData::depsgraph, XrSessionSettings::draw_flags, ED_view3d_draw_offscreen_simple(), GPU_clear_depth(), GPU_framebuffer_restore(), GPU_offscreen_bind(), NULL, XrSessionSettings::object_type_exclude_select, XrSessionSettings::object_type_exclude_viewport, wmXrViewportPair::offscreen, wmXrData::runtime, wmXrDrawData::scene, wmXrData::session_settings, wmXrRuntimeData::session_state, XrSessionSettings::shading, wmXrDrawData::surface_data, View3DShading::type, 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 108 of file wm_xr_draw.c.
References BLI_assert, BLI_findlink(), wmXrRuntimeData::context, GPU_viewport_draw_to_screen_ex(), SWAP, wmXrViewportPair::viewport, wmXrSurfaceData::viewports, wmViewport(), rcti::xmin, rcti::ymax, and rcti::ymin.
Referenced by wm_xr_draw_view().
Definition at line 56 of file wm_xr_draw.c.
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 38 of file wm_xr_draw.c.
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().
Definition at line 48 of file wm_xr_draw.c.
References invert_qt_qt_normalized(), quat_to_mat4(), and translate_m4().
Referenced by wm_xr_draw_matrices_create(), and wm_xr_navigation_fly_modal().
Definition at line 32 of file wm_xr_draw.c.
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().