A game about forced loneliness, made by TACStudios
1using System; 2 3namespace UnityEngine.Experimental.Rendering 4{ 5 internal readonly struct XRView 6 { 7 internal readonly Matrix4x4 projMatrix; 8 internal readonly Matrix4x4 viewMatrix; 9 internal readonly Matrix4x4 prevViewMatrix; 10 internal readonly Rect viewport; 11 internal readonly Mesh occlusionMesh; 12 internal readonly int textureArraySlice; 13 internal readonly Vector2 eyeCenterUV; 14 internal readonly bool isPrevViewMatrixValid; 15 16 internal XRView(Matrix4x4 projMatrix, Matrix4x4 viewMatrix, Matrix4x4 prevViewMatrix, bool isPrevViewMatrixValid, Rect viewport, Mesh occlusionMesh, int textureArraySlice) 17 { 18 this.projMatrix = projMatrix; 19 this.viewMatrix = viewMatrix; 20 this.prevViewMatrix = prevViewMatrix; 21 this.viewport = viewport; 22 this.occlusionMesh = occlusionMesh; 23 this.textureArraySlice = textureArraySlice; 24 this.isPrevViewMatrixValid = isPrevViewMatrixValid; 25 eyeCenterUV = ComputeEyeCenterUV(projMatrix); 26 } 27 28 private static Vector2 ComputeEyeCenterUV(Matrix4x4 proj) 29 { 30 var projectionParameters = proj.decomposeProjection; 31 float left = Math.Abs(projectionParameters.left); 32 float right = Math.Abs(projectionParameters.right); 33 float top = Math.Abs(projectionParameters.top); 34 float bottom = Math.Abs(projectionParameters.bottom); 35 return new Vector2(left / (right + left), top / (top + bottom)); 36 } 37 } 38}