UnityGame/Library/PackageCache/com.unity.render-pipelines.core/Runtime/XR/XRView.cs

39 lines
1.5 KiB
C#
Raw Normal View History

2024-10-27 10:53:47 +03:00
using System;
namespace UnityEngine.Experimental.Rendering
{
internal readonly struct XRView
{
internal readonly Matrix4x4 projMatrix;
internal readonly Matrix4x4 viewMatrix;
internal readonly Matrix4x4 prevViewMatrix;
internal readonly Rect viewport;
internal readonly Mesh occlusionMesh;
internal readonly int textureArraySlice;
internal readonly Vector2 eyeCenterUV;
internal readonly bool isPrevViewMatrixValid;
internal XRView(Matrix4x4 projMatrix, Matrix4x4 viewMatrix, Matrix4x4 prevViewMatrix, bool isPrevViewMatrixValid, Rect viewport, Mesh occlusionMesh, int textureArraySlice)
{
this.projMatrix = projMatrix;
this.viewMatrix = viewMatrix;
this.prevViewMatrix = prevViewMatrix;
this.viewport = viewport;
this.occlusionMesh = occlusionMesh;
this.textureArraySlice = textureArraySlice;
this.isPrevViewMatrixValid = isPrevViewMatrixValid;
eyeCenterUV = ComputeEyeCenterUV(projMatrix);
}
private static Vector2 ComputeEyeCenterUV(Matrix4x4 proj)
{
var projectionParameters = proj.decomposeProjection;
float left = Math.Abs(projectionParameters.left);
float right = Math.Abs(projectionParameters.right);
float top = Math.Abs(projectionParameters.top);
float bottom = Math.Abs(projectionParameters.bottom);
return new Vector2(left / (right + left), top / (top + bottom));
}
}
}