public static void SetKeywords(Material mat) { if (Application.isPlaying) { NVIDIA.VRWorks.Feature feature = GetActiveFeatureInternal(); if (feature == NVIDIA.VRWorks.Feature.MultiResolution) { mat.EnableKeyword("VRWORKS_MRS"); mat.DisableKeyword("VRWORKS_LMS"); mat.DisableKeyword("VRWORKS_NONE"); } else if (feature == NVIDIA.VRWorks.Feature.LensMatchedShading) { mat.EnableKeyword("VRWORKS_LMS"); mat.DisableKeyword("VRWORKS_MRS"); mat.DisableKeyword("VRWORKS_NONE"); } else { mat.EnableKeyword("VRWORKS_NONE"); mat.DisableKeyword("VRWORKS_MRS"); mat.DisableKeyword("VRWORKS_LMS"); } } else { mat.DisableKeyword("VRWORKS_MRS"); mat.DisableKeyword("VRWORKS_LMS"); mat.EnableKeyword("VRWORKS_NONE"); } }
private void CheckVRWorksInput() { NVIDIA.VRWorks.Feature oldFeature = m_VRWorks.GetActiveFeature(); NVIDIA.VRWorks.Feature newFeature = oldFeature; if (Input.GetKeyUp(KeyCode.M)) { if (m_VRWorks.IsFeatureAvailable(NVIDIA.VRWorks.Feature.MultiResolution)) { if (oldFeature != NVIDIA.VRWorks.Feature.MultiResolution) { newFeature = NVIDIA.VRWorks.Feature.MultiResolution; } else { newFeature = NVIDIA.VRWorks.Feature.None; } } } else if (Input.GetKeyUp(KeyCode.L) || Input.GetButton("Fire2")) { if (m_VRWorks.IsFeatureAvailable(NVIDIA.VRWorks.Feature.SinglePassStereo)) { if (oldFeature != NVIDIA.VRWorks.Feature.LensMatchedShading) { newFeature = NVIDIA.VRWorks.Feature.LensMatchedShading; } else { newFeature = NVIDIA.VRWorks.Feature.None; } } } else if (Input.GetKeyUp(KeyCode.S)) { if (m_VRWorks.IsFeatureAvailable(NVIDIA.VRWorks.Feature.SinglePassStereo)) { if (oldFeature != NVIDIA.VRWorks.Feature.SinglePassStereo) { newFeature = NVIDIA.VRWorks.Feature.SinglePassStereo; } else { newFeature = NVIDIA.VRWorks.Feature.None; } } } if (oldFeature != newFeature) { m_VRWorks.SetActiveFeature(newFeature); } }
// Called by camera to apply image effect void OnRenderImage(RenderTexture source, RenderTexture destination) { NVIDIA.VRWorks.Feature feature = m_VRWorks.GetActiveFeature(); if (feature == NVIDIA.VRWorks.Feature.LensMatchedShading || feature == NVIDIA.VRWorks.Feature.MultiResolution) { UnityEngine.Rendering.CommandBuffer buf = new UnityEngine.Rendering.CommandBuffer(); buf.SetRenderTarget(destination); buf.IssuePluginCustomBlit(PluginExtGetIssueEventCallback(), kPluginExtCommandUpscale, source, destination, 0, VerticalFlip ? 1U : 0U); Graphics.ExecuteCommandBuffer(buf); } else { Graphics.Blit(source, destination); } }
private void OnGUI() { if (m_VRWorks == null) { m_VRWorks = Camera.main.GetComponent <NVIDIA.VRWorks>(); } string mode = "None"; NVIDIA.VRWorks.Feature feature = m_VRWorks.GetActiveFeature(); if (feature == NVIDIA.VRWorks.Feature.LensMatchedShading) { mode = "SPS + LMS"; } else if (feature == NVIDIA.VRWorks.Feature.SinglePassStereo) { mode = "SPS"; } else if (feature == NVIDIA.VRWorks.Feature.MultiResolution) { mode = "MRS"; } GUI.Label(new Rect(10, 10, 300, 30), "VRWorks: " + mode, m_GUIStyle); }