Add relative-to-camera rendering for large worlds

This commit is contained in:
Wojtek Figat
2022-06-21 20:03:13 +02:00
parent f3bd0e469c
commit 134c8b99aa
35 changed files with 331 additions and 195 deletions

View File

@@ -79,31 +79,24 @@ namespace FlaxEngine
/// <param name="camera">The camera.</param>
public void CopyFrom(Camera camera)
{
Position = camera.Position;
Direction = camera.Direction;
Near = camera.NearPlane;
Far = camera.FarPlane;
View = camera.View;
Projection = camera.Projection;
NonJitteredProjection = Projection;
TemporalAAJitter = Float4.Zero;
RenderLayersMask = camera.RenderLayersMask;
UpdateCachedData();
var viewport = camera.Viewport;
CopyFrom(camera, ref viewport);
}
/// <summary>
/// Copies render view data from the camera.
/// </summary>
/// <param name="camera">The camera.</param>
/// <param name="customViewport">The custom viewport to use for view/projeection matrices override.</param>
public void CopyFrom(Camera camera, ref Viewport customViewport)
/// <param name="viewport">The custom viewport to use for view/projeection matrices override.</param>
public void CopyFrom(Camera camera, ref Viewport viewport)
{
Position = camera.Position;
Vector3 cameraPos = camera.Position;
LargeWorlds.UpdateOrigin(ref Origin, cameraPos);
Position = cameraPos - Origin;
Direction = camera.Direction;
Near = camera.NearPlane;
Far = camera.FarPlane;
camera.GetMatrices(out View, out Projection, ref customViewport);
camera.GetMatrices(out View, out Projection, ref viewport, ref Origin);
NonJitteredProjection = Projection;
TemporalAAJitter = Float4.Zero;
RenderLayersMask = camera.RenderLayersMask;