示例#1
0
    /// <summary>
    /// Update MV Matrix
    /// </summary>
    private void UpdateCoords()
    {
        if (this.layerTransform == null || !this.layerTransform.gameObject.activeSelf)
        {
            return;
        }

        if (this.layerEyeCamera[0] == null || this.layerEyeCamera[1] == null)
        {
            return;
        }

        //if (this.overlayShape == OverlayShape.Quad || this.overlayShape == OverlayShape.Cylinder)
        {
            // update MV matrix
            for (int i = 0; i < this.MVMatrixs.Length; i++)
            {
                if (Pvr_UnitySDKRender.Instance.StereoRenderPath == StereoRenderingPathPico.SinglePass)
                {
                    Matrix4x4[] unity_StereoWorldToCamera = Pvr_UnitySDKSinglePass.GetStereoWorldToCameraMat();
                    this.MVMatrixs[i] = unity_StereoWorldToCamera[i] * this.layerTransform.localToWorldMatrix;
                }
                else
                {
                    this.MVMatrixs[i] = this.layerEyeCamera[i].worldToCameraMatrix * this.layerTransform.localToWorldMatrix;
                }

                this.ModelScales[i]        = this.layerTransform.localScale;
                this.ModelRotations[i]     = this.layerTransform.rotation;
                this.ModelTranslations[i]  = this.layerTransform.position;
                this.CameraRotations[i]    = this.layerEyeCamera[i].transform.rotation;
                this.CameraTranslations[i] = this.layerEyeCamera[i].transform.position;
            }
        }
    }
示例#2
0
    private void InitSinglePass()
    {
#if ANDROID_DEVICE
        bool supportSinglePass = true;
#if UNITY_2018_1_OR_NEWER
        if (UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset != null)
        {
            supportSinglePass = false;
            if (!Pvr_UnitySDKAPI.BoundarySystem.UPvr_EnableLWRP(true))
            {
                Debug.Log("UPvr_EnableLWRP return false");
            }
            Vector2 resolution = GetEyeBufferResolution();
            if (!Pvr_UnitySDKAPI.BoundarySystem.UPvr_SetViewportSize((int)resolution.x, (int)resolution.y))
            {
                Debug.Log("UPvr_SetViewportSize return false");
            }
        }
#endif
        if (Pvr_UnitySDKProjectSetting.GetProjectConfig().usesinglepass)
        {
            bool result = false;
            if (supportSinglePass)
            {
                result = Pvr_UnitySDKAPI.System.UPvr_EnableSinglePass(true);
            }
            if (result)
            {
                StereoRendering  = new Pvr_UnitySDKSinglePass();
                stereoRenderPath = StereoRenderingPathPico.SinglePass;
                eyeTextureCount  = 3;
            }
            Debug.Log("EnableSinglePass supportSinglePass " + supportSinglePass.ToString() + " result " + result);
        }
#endif
    }