void UpdateDistortedColorStream()
        {
            if (distortedColor != distortedColorEnabled)
            {
                if (distortedColor)
                {
                    if (onNewFrame.GetPersistentEventCount() > 0)
                    {
                        distortedColorStream = VarjoPluginMR.distortedColorStream;
                        distortedColor       = distortedColorStream.Start();
                    }
                }
                else
                {
                    if (distortedColorStream != null)
                    {
                        distortedColorStream.Stop();
                        distortedColor = false;
                    }
                }
                distortedColorEnabled = distortedColor;
            }

            if (distortedColorEnabled)
            {
                distortedColorFrame = distortedColorStream.GetFrame();
                if (distortedColorFrame.timestamp != previousDistortedColorTimestamp)
                {
                    onNewFrame.Invoke(distortedColorFrame);
                    previousDistortedColorTimestamp = distortedColorFrame.timestamp;
                }
            }
        }
Exemplo n.º 2
0
    void UpdateEnvironmentReflections()
    {
        if (environmentReflections != environmentReflectionsEnabled)
        {
            if (environmentReflections)
            {
                if (VarjoMixedReality.environmentCubemapStream.IsSupported())
                {
                    environmentReflections = VarjoMixedReality.environmentCubemapStream.Start();
                }

                if (VarjoMixedReality.distortedColorStream.IsSupported())
                {
                    distortedColorStreamEnabled = VarjoMixedReality.distortedColorStream.Start();
                }
                else
                {
                    distortedColorStreamEnabled = false;
                }
            }
            environmentReflectionsEnabled = environmentReflections;
        }

        if (environmentReflectionsEnabled && distortedColorStreamEnabled)
        {
            cubemapFrame = VarjoMixedReality.environmentCubemapStream.GetFrame();

            cameraFrame = VarjoMixedReality.distortedColorStream.GetFrame();
            float exposureValue = (float)cameraFrame.ev + Mathf.Log((float)cameraFrame.cameraCalibrationConstant, 2f);
            volumeExposure.fixedExposure.Override(exposureValue);

            volumeSky.hdriSky.Override(cubemapFrame.cubemap);
            volumeSky.updateMode.Override(EnvironmentUpdateMode.Realtime);
            volumeSky.updatePeriod.Override(1f / (float)reflectionRefreshRate);
            defaultSkyActive = false;

            volumeVSTWhiteBalance.intensity.Override(1f);

            // Set white balance normalization values
            Shader.SetGlobalColor("_CamWBGains", cameraFrame.wbNormalizationData.wbGains);
            Shader.SetGlobalMatrix("_CamInvCCM", cameraFrame.wbNormalizationData.invCCM);
            Shader.SetGlobalMatrix("_CamCCM", cameraFrame.wbNormalizationData.ccm);

            if (cubemapEventListenerSet)
            {
                onCubemapUpdate.Invoke();
            }
        }
        else if (!defaultSkyActive)
        {
            volumeSky.hdriSky.Override(defaultSky);
            volumeSky.updateMode.Override(EnvironmentUpdateMode.OnChanged);
            volumeExposure.fixedExposure.Override(6.5f);
            volumeVSTWhiteBalance.intensity.Override(0f);
            defaultSkyActive = true;
        }
    }
Exemplo n.º 3
0
 public void UpdateViews(VarjoDistortedColorStream.VarjoDistortedColorFrame frame)
 {
     leftView.texture  = frame.leftTexture;
     rightView.texture = frame.rightTexture;
 }