|
|
@@ -2103,7 +2103,7 @@ bool OpenXRAPI::poll_events() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void OpenXRAPI::_allocate_view_buffers(uint32_t p_view_count, bool p_submit_depth_buffer) {
|
|
|
+void OpenXRAPI::_allocate_view_buffers_rt(uint32_t p_view_count, bool p_submit_depth_buffer) {
|
|
|
// Must be called from rendering thread!
|
|
|
ERR_NOT_ON_RENDER_THREAD;
|
|
|
|
|
|
@@ -2121,7 +2121,7 @@ void OpenXRAPI::_allocate_view_buffers(uint32_t p_view_count, bool p_submit_dept
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void OpenXRAPI::_set_render_session_running(bool p_is_running) {
|
|
|
+void OpenXRAPI::_set_render_session_running_rt(bool p_is_running) {
|
|
|
// Must be called from rendering thread!
|
|
|
ERR_NOT_ON_RENDER_THREAD;
|
|
|
|
|
|
@@ -2130,7 +2130,7 @@ void OpenXRAPI::_set_render_session_running(bool p_is_running) {
|
|
|
openxr_api->render_state.running = p_is_running;
|
|
|
}
|
|
|
|
|
|
-void OpenXRAPI::_set_render_display_info(XrTime p_predicted_display_time, bool p_should_render) {
|
|
|
+void OpenXRAPI::_set_render_display_info_rt(XrTime p_predicted_display_time, bool p_should_render) {
|
|
|
// Must be called from rendering thread!
|
|
|
ERR_NOT_ON_RENDER_THREAD;
|
|
|
|
|
|
@@ -2140,7 +2140,16 @@ void OpenXRAPI::_set_render_display_info(XrTime p_predicted_display_time, bool p
|
|
|
openxr_api->render_state.should_render = p_should_render;
|
|
|
}
|
|
|
|
|
|
-void OpenXRAPI::_set_render_play_space(uint64_t p_play_space) {
|
|
|
+void OpenXRAPI::_set_render_environment_blend_mode_rt(int32_t p_environment_blend_mode) {
|
|
|
+ // Must be called from rendering thread!
|
|
|
+ ERR_NOT_ON_RENDER_THREAD;
|
|
|
+
|
|
|
+ OpenXRAPI *openxr_api = OpenXRAPI::get_singleton();
|
|
|
+ ERR_FAIL_NULL(openxr_api);
|
|
|
+ openxr_api->render_state.environment_blend_mode = XrEnvironmentBlendMode(p_environment_blend_mode);
|
|
|
+}
|
|
|
+
|
|
|
+void OpenXRAPI::_set_render_play_space_rt(uint64_t p_play_space) {
|
|
|
// Must be called from rendering thread!
|
|
|
ERR_NOT_ON_RENDER_THREAD;
|
|
|
|
|
|
@@ -2149,7 +2158,7 @@ void OpenXRAPI::_set_render_play_space(uint64_t p_play_space) {
|
|
|
openxr_api->render_state.play_space = XrSpace(p_play_space);
|
|
|
}
|
|
|
|
|
|
-void OpenXRAPI::_set_render_state_multiplier(double p_render_target_size_multiplier) {
|
|
|
+void OpenXRAPI::_set_render_state_multiplier_rt(double p_render_target_size_multiplier) {
|
|
|
// Must be called from rendering thread!
|
|
|
ERR_NOT_ON_RENDER_THREAD;
|
|
|
|
|
|
@@ -2158,7 +2167,7 @@ void OpenXRAPI::_set_render_state_multiplier(double p_render_target_size_multipl
|
|
|
openxr_api->render_state.render_target_size_multiplier = p_render_target_size_multiplier;
|
|
|
}
|
|
|
|
|
|
-void OpenXRAPI::_set_render_state_render_region(const Rect2i &p_render_region) {
|
|
|
+void OpenXRAPI::_set_render_state_render_region_rt(const Rect2i &p_render_region) {
|
|
|
ERR_NOT_ON_RENDER_THREAD;
|
|
|
|
|
|
OpenXRAPI *openxr_api = OpenXRAPI::get_singleton();
|
|
|
@@ -2491,7 +2500,7 @@ void OpenXRAPI::end_frame() {
|
|
|
XR_TYPE_FRAME_END_INFO, // type
|
|
|
nullptr, // next
|
|
|
render_state.predicted_display_time, // displayTime
|
|
|
- environment_blend_mode, // environmentBlendMode
|
|
|
+ render_state.environment_blend_mode, // environmentBlendMode
|
|
|
0, // layerCount
|
|
|
nullptr // layers
|
|
|
};
|
|
|
@@ -2541,7 +2550,7 @@ void OpenXRAPI::end_frame() {
|
|
|
}
|
|
|
|
|
|
XrCompositionLayerFlags layer_flags = XR_COMPOSITION_LAYER_CORRECT_CHROMATIC_ABERRATION_BIT;
|
|
|
- if (!projection_layer_is_first || environment_blend_mode != XR_ENVIRONMENT_BLEND_MODE_OPAQUE) {
|
|
|
+ if (!projection_layer_is_first || render_state.environment_blend_mode != XR_ENVIRONMENT_BLEND_MODE_OPAQUE) {
|
|
|
layer_flags |= XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT;
|
|
|
}
|
|
|
|
|
|
@@ -2586,7 +2595,7 @@ void OpenXRAPI::end_frame() {
|
|
|
XR_TYPE_FRAME_END_INFO, // type
|
|
|
frame_end_info_next_pointer, // next
|
|
|
render_state.predicted_display_time, // displayTime
|
|
|
- environment_blend_mode, // environmentBlendMode
|
|
|
+ render_state.environment_blend_mode, // environmentBlendMode
|
|
|
static_cast<uint32_t>(layers_list.size()), // layerCount
|
|
|
layers_list.ptr() // layers
|
|
|
};
|
|
|
@@ -3746,6 +3755,7 @@ bool OpenXRAPI::set_environment_blend_mode(XrEnvironmentBlendMode p_blend_mode)
|
|
|
if (emulate_environment_blend_mode_alpha_blend && p_blend_mode == XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND) {
|
|
|
requested_environment_blend_mode = XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND;
|
|
|
environment_blend_mode = XR_ENVIRONMENT_BLEND_MODE_OPAQUE;
|
|
|
+ set_render_environment_blend_mode(environment_blend_mode);
|
|
|
return true;
|
|
|
}
|
|
|
// We allow setting this when not initialized and will check if it is supported when initializing.
|
|
|
@@ -3753,6 +3763,7 @@ bool OpenXRAPI::set_environment_blend_mode(XrEnvironmentBlendMode p_blend_mode)
|
|
|
else if (!is_initialized() || is_environment_blend_mode_supported(p_blend_mode)) {
|
|
|
requested_environment_blend_mode = p_blend_mode;
|
|
|
environment_blend_mode = p_blend_mode;
|
|
|
+ set_render_environment_blend_mode(environment_blend_mode);
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|