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; } } }
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; } }
public void UpdateViews(VarjoDistortedColorStream.VarjoDistortedColorFrame frame) { leftView.texture = frame.leftTexture; rightView.texture = frame.rightTexture; }