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);
|
create_main_swapchains(swapchain_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (OpenXRExtensionWrapper *wrapper : registered_extension_wrappers) {
|
|
||||||
wrapper->on_pre_render();
|
|
||||||
}
|
|
||||||
|
|
||||||
void *view_locate_info_next_pointer = nullptr;
|
void *view_locate_info_next_pointer = nullptr;
|
||||||
for (OpenXRExtensionWrapper *extension : frame_info_extensions) {
|
for (OpenXRExtensionWrapper *extension : frame_info_extensions) {
|
||||||
void *np = extension->set_view_locate_info_and_get_next_pointer(view_locate_info_next_pointer);
|
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
|
// Reset this, we haven't found a viewport for output yet
|
||||||
render_state.has_xr_viewport = false;
|
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) {
|
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_b = RD::TEXTURE_SWIZZLE_B;
|
||||||
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A;
|
||||||
} break; // astc 8x8
|
} 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: {
|
default: {
|
||||||
ERR_FAIL_MSG("Unsupported image format");
|
ERR_FAIL_MSG("Unsupported image format");
|
||||||
|
|||||||
@@ -732,9 +732,6 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) {
|
|||||||
Ref<XRInterface> xr_interface;
|
Ref<XRInterface> xr_interface;
|
||||||
XRServer *xr_server = XRServer::get_singleton();
|
XRServer *xr_server = XRServer::get_singleton();
|
||||||
if (xr_server != nullptr) {
|
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
|
// retrieve the interface responsible for rendering
|
||||||
xr_interface = xr_server->get_primary_interface();
|
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();
|
uint64_t time_usec = OS::get_singleton()->get_ticks_usec();
|
||||||
|
|
||||||
RENDER_TIMESTAMP("Prepare Render Frame");
|
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::scene->update(); //update scenes stuff before updating instances
|
||||||
RSG::canvas->update();
|
RSG::canvas->update();
|
||||||
|
|
||||||
@@ -88,7 +97,6 @@ void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) {
|
|||||||
RSG::rasterizer->end_frame(p_swap_buffers);
|
RSG::rasterizer->end_frame(p_swap_buffers);
|
||||||
|
|
||||||
#ifndef XR_DISABLED
|
#ifndef XR_DISABLED
|
||||||
XRServer *xr_server = XRServer::get_singleton();
|
|
||||||
if (xr_server != nullptr) {
|
if (xr_server != nullptr) {
|
||||||
// let our XR server know we're done so we can get our frame timing
|
// let our XR server know we're done so we can get our frame timing
|
||||||
xr_server->end_frame();
|
xr_server->end_frame();
|
||||||
|
|||||||
Reference in New Issue
Block a user