Add Camera Cut on rendering view origin change (for large worlds)

This commit is contained in:
Wojtek Figat
2022-06-26 19:23:28 +02:00
parent 5fdd8a4b72
commit a7463872a8
3 changed files with 9 additions and 1 deletions

View File

@@ -416,7 +416,8 @@ void SceneRenderTask::OnEnd(GPUContext* context)
RenderTask::OnEnd(context);
// Swap matrices
// Swap data
View.PrevOrigin = View.Origin;
View.PrevView = View.View;
View.PrevProjection = View.Projection;
View.PrevViewProjection = View.ViewProjection();

View File

@@ -182,6 +182,11 @@ public:
/// </summary>
API_FIELD() Float4 TemporalAAJitter;
/// <summary>
/// The previous frame rendering view origin.
/// </summary>
API_FIELD() Vector3 PrevOrigin;
/// <summary>
/// The previous frame view matrix.
/// </summary>

View File

@@ -308,6 +308,8 @@ void RenderInner(SceneRenderTask* task, RenderContext& renderContext)
// Prepare
renderContext.View.Prepare(renderContext);
if (renderContext.View.Origin != renderContext.View.PrevOrigin)
renderContext.Task->CameraCut(); // Cut any temporal effects on rendering origin change
renderContext.Buffers->Prepare();
for (auto& postFx : task->CustomPostFx)
{