1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Allow using custom Rect2i for rendering with OpenXR

This commit is contained in:
devloglogan
2024-09-20 15:57:19 -05:00
parent 4364ed6ccd
commit e7f6b7ea0b
25 changed files with 215 additions and 19 deletions

View File

@@ -2250,7 +2250,12 @@ void RasterizerSceneGLES3::render_scene(const Ref<RenderSceneBuffers> &p_render_
RenderDataGLES3 render_data;
{
render_data.render_buffers = rb;
render_data.transparent_bg = rt ? rt->is_transparent : false;
if (rt) {
render_data.transparent_bg = rt->is_transparent;
render_data.render_region = rt->render_region;
}
// Our first camera is used by default
render_data.cam_transform = p_camera_data->main_transform;
render_data.inv_cam_transform = render_data.cam_transform.affine_inverse();
@@ -2487,6 +2492,10 @@ void RasterizerSceneGLES3::render_scene(const Ref<RenderSceneBuffers> &p_render_
RENDER_TIMESTAMP("Depth Prepass");
//pre z pass
if (render_data.render_region != Rect2i()) {
glViewport(render_data.render_region.position.x, render_data.render_region.position.y, render_data.render_region.size.width, render_data.render_region.size.height);
}
scene_state.enable_gl_depth_test(true);
scene_state.enable_gl_depth_draw(true);
scene_state.enable_gl_blend(false);
@@ -2562,6 +2571,10 @@ void RasterizerSceneGLES3::render_scene(const Ref<RenderSceneBuffers> &p_render_
RENDER_TIMESTAMP("Render Opaque Pass");
uint64_t spec_constant_base_flags = 0;
if (render_data.render_region != Rect2i()) {
glViewport(render_data.render_region.position.x, render_data.render_region.position.y, render_data.render_region.size.width, render_data.render_region.size.height);
}
{
// Specialization Constants that apply for entire rendering pass.
if (render_data.directional_light_count == 0) {