コード例 #1
0
    private void ConfigureEyeDesc(OVREye eye)
    {
        Vector2 texSize = Vector2.zero;
        Vector2 fovSize = Vector2.zero;

#if !UNITY_ANDROID || UNITY_EDITOR
        if (!OVRManager.instance.isVRPresent)
        {
            return;
        }

        OVRPlugin.Sizei    size    = OVRPlugin.GetEyeTextureSize((OVRPlugin.Eye)eye);
        OVRPlugin.Frustumf frustum = OVRPlugin.GetEyeFrustum((OVRPlugin.Eye)eye);

        texSize = new Vector2(size.w, size.h);
        fovSize = Mathf.Rad2Deg * new Vector2(frustum.fovX, frustum.fovY);
#else
        texSize = new Vector2(1024, 1024) * OVRManager.instance.nativeTextureScale;
        fovSize = new Vector2(90, 90);
#endif

        eyeDescs[(int)eye] = new EyeRenderDesc()
        {
            resolution = texSize,
            fov        = fovSize
        };
    }
コード例 #2
0
ファイル: OVRExtensions.cs プロジェクト: DevZhav/The-Forest
 internal static OVRTracker.Frustum ToFrustum(this OVRPlugin.Frustumf f)
 {
     return(new OVRTracker.Frustum
     {
         nearZ = f.zNear,
         farZ = f.zFar,
         fov = new Vector2
         {
             x = 57.29578f * f.fovX,
             y = 57.29578f * f.fovY
         }
     });
 }
コード例 #3
0
    internal static OVRTracker.Frustum ToFrustum(this OVRPlugin.Frustumf f)
    {
        return(new OVRTracker.Frustum()
        {
            nearZ = f.zNear,
            farZ = f.zFar,

            fov = new Vector2()
            {
                x = Mathf.Rad2Deg * f.fovX,
                y = Mathf.Rad2Deg * f.fovY
            }
        });
    }
コード例 #4
0
ファイル: OVRDisplay.cs プロジェクト: Smoothstep/VRChat
 // Token: 0x060037EB RID: 14315 RVA: 0x0011D018 File Offset: 0x0011B418
 private void ConfigureEyeDesc(VRNode eye)
 {
     if (!OVRManager.isHmdPresent)
     {
         return;
     }
     OVRPlugin.Sizei    eyeTextureSize = OVRPlugin.GetEyeTextureSize((OVRPlugin.Eye)eye);
     OVRPlugin.Frustumf eyeFrustum     = OVRPlugin.GetEyeFrustum((OVRPlugin.Eye)eye);
     this.eyeDescs[(int)eye] = new OVRDisplay.EyeRenderDesc
     {
         resolution = new Vector2((float)eyeTextureSize.w, (float)eyeTextureSize.h),
         fov        = 57.29578f * new Vector2(eyeFrustum.fovX, eyeFrustum.fovY)
     };
 }
コード例 #5
0
    private void ConfigureEyeDesc(VR.VRNode eye)
    {
        if (!OVRManager.isHmdPresent)
        {
            return;
        }

        OVRPlugin.Sizei    size  = OVRPlugin.GetEyeTextureSize((OVRPlugin.Eye)eye);
        OVRPlugin.Frustumf frust = OVRPlugin.GetEyeFrustum((OVRPlugin.Eye)eye);

        eyeDescs[(int)eye] = new EyeRenderDesc()
        {
            resolution = new Vector2(size.w, size.h),
            fov        = Mathf.Rad2Deg * new Vector2(frust.fovX, frust.fovY),
        };
    }
コード例 #6
0
ファイル: OVRDisplay.cs プロジェクト: Noshin531/oculus
    private void ConfigureEyeDesc(UnityEngine.VR.VRNode eye)
#endif
    {
        if (!OVRManager.isHmdPresent)
        {
            return;
        }

        int eyeTextureWidth  = Settings.eyeTextureWidth;
        int eyeTextureHeight = Settings.eyeTextureHeight;

        eyeDescs[(int)eye]            = new EyeRenderDesc();
        eyeDescs[(int)eye].resolution = new Vector2(eyeTextureWidth, eyeTextureHeight);

        OVRPlugin.Frustumf2 frust;
        if (OVRPlugin.GetNodeFrustum2((OVRPlugin.Node)eye, out frust))
        {
            eyeDescs[(int)eye].fullFov.LeftFov  = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.LeftTan);
            eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.RightTan);
            eyeDescs[(int)eye].fullFov.UpFov    = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.UpTan);
            eyeDescs[(int)eye].fullFov.DownFov  = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.DownTan);
        }
        else
        {
            OVRPlugin.Frustumf frustOld = OVRPlugin.GetEyeFrustum((OVRPlugin.Eye)eye);
            eyeDescs[(int)eye].fullFov.LeftFov  = Mathf.Rad2Deg * frustOld.fovX * 0.5f;
            eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * frustOld.fovX * 0.5f;
            eyeDescs[(int)eye].fullFov.UpFov    = Mathf.Rad2Deg * frustOld.fovY * 0.5f;
            eyeDescs[(int)eye].fullFov.DownFov  = Mathf.Rad2Deg * frustOld.fovY * 0.5f;
        }

        // Symmetric Fov uses the maximum fov angle
        float maxFovX = Mathf.Max(eyeDescs[(int)eye].fullFov.LeftFov, eyeDescs[(int)eye].fullFov.RightFov);
        float maxFovY = Mathf.Max(eyeDescs[(int)eye].fullFov.UpFov, eyeDescs[(int)eye].fullFov.DownFov);

        eyeDescs[(int)eye].fov.x = maxFovX * 2.0f;
        eyeDescs[(int)eye].fov.y = maxFovY * 2.0f;

        if (!OVRPlugin.AsymmetricFovEnabled)
        {
            eyeDescs[(int)eye].fullFov.LeftFov  = maxFovX;
            eyeDescs[(int)eye].fullFov.RightFov = maxFovX;

            eyeDescs[(int)eye].fullFov.UpFov   = maxFovY;
            eyeDescs[(int)eye].fullFov.DownFov = maxFovY;
        }
    }
コード例 #7
0
	private void ConfigureEyeDesc(UnityEngine.VR.VRNode eye)
#endif
	{
		if (!OVRManager.isHmdPresent)
			return:

		OVRPlugin.Sizei size = OVRPlugin.GetEyeTextureSize((OVRPlugin.Eye)eye):

		eyeDescs[(int)eye] = new EyeRenderDesc():
		eyeDescs[(int)eye].resolution = new Vector2(size.w, size.h):

		OVRPlugin.Frustumf2 frust:
		if (OVRPlugin.GetNodeFrustum2((OVRPlugin.Node)eye, out frust))
		{
			eyeDescs[(int)eye].fullFov.LeftFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.LeftTan):
			eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.RightTan):
			eyeDescs[(int)eye].fullFov.UpFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.UpTan):
			eyeDescs[(int)eye].fullFov.DownFov = Mathf.Rad2Deg * Mathf.Atan(frust.Fov.DownTan):
		}
		else
		{
			OVRPlugin.Frustumf frustOld = OVRPlugin.GetEyeFrustum((OVRPlugin.Eye)eye):
			eyeDescs[(int)eye].fullFov.LeftFov = Mathf.Rad2Deg * frustOld.fovX * 0.5f:
			eyeDescs[(int)eye].fullFov.RightFov = Mathf.Rad2Deg * frustOld.fovX * 0.5f:
			eyeDescs[(int)eye].fullFov.UpFov = Mathf.Rad2Deg * frustOld.fovY * 0.5f:
			eyeDescs[(int)eye].fullFov.DownFov = Mathf.Rad2Deg * frustOld.fovY * 0.5f:
		}

		// Symmetric Fov uses the maximum fov angle
		float maxFovX = Mathf.Max(eyeDescs[(int)eye].fullFov.LeftFov, eyeDescs[(int)eye].fullFov.RightFov):
		float maxFovY = Mathf.Max(eyeDescs[(int)eye].fullFov.UpFov, eyeDescs[(int)eye].fullFov.DownFov):
		eyeDescs[(int)eye].fov.x = maxFovX * 2.0f:
		eyeDescs[(int)eye].fov.y = maxFovY * 2.0f:

		if (!OVRPlugin.AsymmetricFovEnabled)
		{
			eyeDescs[(int)eye].fullFov.LeftFov = maxFovX:
			eyeDescs[(int)eye].fullFov.RightFov = maxFovX:

			eyeDescs[(int)eye].fullFov.UpFov = maxFovY:
			eyeDescs[(int)eye].fullFov.DownFov = maxFovY:
		}


	}