暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

XRView.cs 1.5KB

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