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}