|
@@ -2734,6 +2734,7 @@ void RendererSceneCull::render_camera(const Ref<RenderSceneBuffers> &p_render_bu
|
|
|
Projection projection;
|
|
|
bool vaspect = camera->vaspect;
|
|
|
bool is_orthogonal = false;
|
|
|
+ bool is_frustum = false;
|
|
|
|
|
|
switch (camera->type) {
|
|
|
case Camera::ORTHOGONAL: {
|
|
@@ -2762,10 +2763,11 @@ void RendererSceneCull::render_camera(const Ref<RenderSceneBuffers> &p_render_bu
|
|
|
camera->znear,
|
|
|
camera->zfar,
|
|
|
camera->vaspect);
|
|
|
+ is_frustum = true;
|
|
|
} break;
|
|
|
}
|
|
|
|
|
|
- camera_data.set_camera(transform, projection, is_orthogonal, vaspect, jitter, taa_frame_count, camera->visible_layers);
|
|
|
+ camera_data.set_camera(transform, projection, is_orthogonal, is_frustum, vaspect, jitter, taa_frame_count, camera->visible_layers);
|
|
|
} else {
|
|
|
// Setup our camera for our XR interface.
|
|
|
// We can support multiple views here each with their own camera
|
|
@@ -2787,9 +2789,9 @@ void RendererSceneCull::render_camera(const Ref<RenderSceneBuffers> &p_render_bu
|
|
|
}
|
|
|
|
|
|
if (view_count == 1) {
|
|
|
- camera_data.set_camera(transforms[0], projections[0], false, camera->vaspect, jitter, p_jitter_phase_count, camera->visible_layers);
|
|
|
+ camera_data.set_camera(transforms[0], projections[0], false, false, camera->vaspect, jitter, p_jitter_phase_count, camera->visible_layers);
|
|
|
} else if (view_count == 2) {
|
|
|
- camera_data.set_multiview_camera(view_count, transforms, projections, false, camera->vaspect);
|
|
|
+ camera_data.set_multiview_camera(view_count, transforms, projections, false, false, camera->vaspect);
|
|
|
} else {
|
|
|
// this won't be called (see fail check above) but keeping this comment to indicate we may support more then 2 views in the future...
|
|
|
}
|
|
@@ -3633,7 +3635,7 @@ void RendererSceneCull::render_empty_scene(const Ref<RenderSceneBuffers> &p_rend
|
|
|
RENDER_TIMESTAMP("Render Empty 3D Scene");
|
|
|
|
|
|
RendererSceneRender::CameraData camera_data;
|
|
|
- camera_data.set_camera(Transform3D(), Projection(), true, false);
|
|
|
+ camera_data.set_camera(Transform3D(), Projection(), true, false, false);
|
|
|
|
|
|
scene_render->render_scene(p_render_buffers, &camera_data, &camera_data, PagedArray<RenderGeometryInstance *>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), PagedArray<RID>(), environment, RID(), compositor, p_shadow_atlas, RID(), scenario->reflection_atlas, RID(), 0, 0, nullptr, 0, nullptr, 0, nullptr);
|
|
|
#endif
|
|
@@ -3711,7 +3713,7 @@ bool RendererSceneCull::_render_reflection_probe_step(Instance *p_instance, int
|
|
|
|
|
|
RENDER_TIMESTAMP("Render ReflectionProbe, Step " + itos(p_step));
|
|
|
RendererSceneRender::CameraData camera_data;
|
|
|
- camera_data.set_camera(xform, cm, false, false);
|
|
|
+ camera_data.set_camera(xform, cm, false, false, false);
|
|
|
|
|
|
Ref<RenderSceneBuffers> render_buffers = RSG::light_storage->reflection_probe_atlas_get_render_buffers(scenario->reflection_atlas);
|
|
|
_render_scene(&camera_data, render_buffers, environment, RID(), RID(), RSG::light_storage->reflection_probe_get_cull_mask(p_instance->base), p_instance->scenario->self, RID(), shadow_atlas, reflection_probe->instance, p_step, mesh_lod_threshold, use_shadows);
|