You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-20 14:45:44 +00:00
Merge pull request #106880 from dsnopek/meta-depth-api-nonhacks
Minor rendering and XR changes to allow Meta enivornment depth API to work entirely from GDExtension
This commit is contained in:
@@ -2261,10 +2261,6 @@ void OpenXRAPI::pre_render() {
|
||||
create_main_swapchains(swapchain_size);
|
||||
}
|
||||
|
||||
for (OpenXRExtensionWrapper *wrapper : registered_extension_wrappers) {
|
||||
wrapper->on_pre_render();
|
||||
}
|
||||
|
||||
void *view_locate_info_next_pointer = nullptr;
|
||||
for (OpenXRExtensionWrapper *extension : frame_info_extensions) {
|
||||
void *np = extension->set_view_locate_info_and_get_next_pointer(view_locate_info_next_pointer);
|
||||
@@ -2335,6 +2331,10 @@ void OpenXRAPI::pre_render() {
|
||||
|
||||
// Reset this, we haven't found a viewport for output yet
|
||||
render_state.has_xr_viewport = false;
|
||||
|
||||
for (OpenXRExtensionWrapper *wrapper : registered_extension_wrappers) {
|
||||
wrapper->on_pre_render();
|
||||
}
|
||||
}
|
||||
|
||||
bool OpenXRAPI::pre_draw_viewport(RID p_render_target) {
|
||||
|
||||
@@ -2655,6 +2655,22 @@ void TextureStorage::_texture_format_from_rd(RD::DataFormat p_rd_format, Texture
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
} break; // astc 8x8
|
||||
case RD::DATA_FORMAT_D16_UNORM: {
|
||||
r_format.image_format = Image::FORMAT_RH;
|
||||
r_format.rd_format = RD::DATA_FORMAT_D16_UNORM;
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G;
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
} break;
|
||||
case RD::DATA_FORMAT_D32_SFLOAT: {
|
||||
r_format.image_format = Image::FORMAT_RF;
|
||||
r_format.rd_format = RD::DATA_FORMAT_D32_SFLOAT;
|
||||
r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R;
|
||||
r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G;
|
||||
r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B;
|
||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||
} break;
|
||||
|
||||
default: {
|
||||
ERR_FAIL_MSG("Unsupported image format");
|
||||
|
||||
@@ -732,9 +732,6 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
||||
Ref<XRInterface> xr_interface;
|
||||
XRServer *xr_server = XRServer::get_singleton();
|
||||
if (xr_server != nullptr) {
|
||||
// let our XR server know we're about to render our frames so we can get our frame timing
|
||||
xr_server->pre_render();
|
||||
|
||||
// retrieve the interface responsible for rendering
|
||||
xr_interface = xr_server->get_primary_interface();
|
||||
}
|
||||
|
||||
@@ -73,6 +73,15 @@ void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) {
|
||||
uint64_t time_usec = OS::get_singleton()->get_ticks_usec();
|
||||
|
||||
RENDER_TIMESTAMP("Prepare Render Frame");
|
||||
|
||||
#ifndef XR_DISABLED
|
||||
XRServer *xr_server = XRServer::get_singleton();
|
||||
if (xr_server != nullptr) {
|
||||
// Let XR server know we're about to render a frame.
|
||||
xr_server->pre_render();
|
||||
}
|
||||
#endif // XR_DISABLED
|
||||
|
||||
RSG::scene->update(); //update scenes stuff before updating instances
|
||||
RSG::canvas->update();
|
||||
|
||||
@@ -88,7 +97,6 @@ void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) {
|
||||
RSG::rasterizer->end_frame(p_swap_buffers);
|
||||
|
||||
#ifndef XR_DISABLED
|
||||
XRServer *xr_server = XRServer::get_singleton();
|
||||
if (xr_server != nullptr) {
|
||||
// let our XR server know we're done so we can get our frame timing
|
||||
xr_server->end_frame();
|
||||
|
||||
Reference in New Issue
Block a user