static void Update() { bool show = (!EditorPrefs.HasKey(ignore + buildTarget) && EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) || (!EditorPrefs.HasKey(ignore + defaultOrientation) && PlayerSettings.defaultInterfaceOrientation != recommended_defaultOrientation) || (!EditorPrefs.HasKey(ignore + enableMTRendering) && #if UNITY_2017_2_OR_NEWER PlayerSettings.GetMobileMTRendering(BuildTargetGroup.Android) != recommended_enableMTRendering) || #else PlayerSettings.mobileMTRendering != recommended_enableMTRendering) || #endif (!EditorPrefs.HasKey(ignore + graphicsJobs) && PlayerSettings.graphicsJobs != recommended_graphicsJobs) || (!EditorPrefs.HasKey(ignore + AndroidMinSDK) && PlayerSettings.Android.minSdkVersion < recommended_AndroidMinSDK) || (!EditorPrefs.HasKey(ignore + AndroidTargetSDK) && PlayerSettings.Android.targetSdkVersion != recommended_AndroidTargetSDK) || (!EditorPrefs.HasKey(ignore + gpuSkinning) && PlayerSettings.gpuSkinning != recommended_GpuSkinning) || forceShow; if (show) { window = GetWindow <WaveVR_Settings>(true); window.minSize = new Vector2(640, 320); } EditorApplication.update -= Update; }
void SinglePassPreProcess() { if (target != BuildTarget.Android) { Debug.LogError("Target platform is not Android"); return; } var vrSupported = WaveVR_Settings.GetVirtualRealitySupported(BuildTargetGroup.Android); var list = WaveVR_Settings.GetVirtualRealitySDKs(BuildTargetGroup.Android); var hasVRDevice = ArrayUtility.Contains <string>(list, WaveVR_Settings.WVRSinglePassDeviceName); #if UNITY_2018_2_OR_NEWER // Please remove old name if (ArrayUtility.Contains <string>(list, "split")) { Debug.LogError("Contains old VR device name in XR settings.\nPlease remove it."); } #endif var stereoRenderingPath = PlayerSettings.stereoRenderingPath; List <string> allDefines = WaveVR_Settings.GetDefineSymbols(BuildTargetGroup.Android); var hasDefine = allDefines.Contains(WaveVR_Settings.WVRSPDEF); // if single pass enabled in PlayerSettings, set the define. Here is a final check. Debug.Log("SinglePassPreProcess: vrSupported=" + vrSupported + ", stereoRenderingPath=" + stereoRenderingPath + ", hasVRDevice=" + hasVRDevice + ", hasDefine=" + hasDefine); var set = vrSupported && hasVRDevice && stereoRenderingPath == StereoRenderingPath.SinglePass; WaveVR_Settings.SetSinglePassDefine(group, set, allDefines); }
public static Item GetVRItem() { var message = "Enable VR and single-pass Support (Experimental)\n" + " This WVR feature is under development. Use it at your own risk.\n" + " If you apply this item, it will help to:\n" + " 1.Check VR Support, 2.Set Split screen device, \n" + " 3.Set StereoRenderingPath as SinglePass, \n" + " 4.Add " + WVRSPDEF + " to define symbols."; return(new Item(message, false.ToString()) { IsReady = () => { var vrSupported = GetVirtualRealitySupported(BuildTargetGroup.Android); var list = GetVirtualRealitySDKs(BuildTargetGroup.Android); var stereoRenderingPath = PlayerSettings.stereoRenderingPath; List <string> allDefines = GetDefineSymbols(BuildTargetGroup.Android); var symbolDefined = allDefines.Contains(WVRSPDEF); return vrSupported && ArrayUtility.Contains <string>(list, "split") && stereoRenderingPath == StereoRenderingPath.SinglePass && symbolDefined; }, GetCurrent = () => { var vrSupported = GetVirtualRealitySupported(BuildTargetGroup.Android); var list = GetVirtualRealitySDKs(BuildTargetGroup.Android); var stereoRenderingPath = PlayerSettings.stereoRenderingPath; return (vrSupported && ArrayUtility.Contains <string>(list, "split") && stereoRenderingPath == StereoRenderingPath.SinglePass).ToString(); }, Set = () => { SetVirtualRealitySupported(BuildTargetGroup.Android, true); var list = GetVirtualRealitySDKs(BuildTargetGroup.Android); if (!ArrayUtility.Contains <string>(list, "split")) { ArrayUtility.Insert <string>(ref list, 0, "split"); } SetVirtualRealitySDKs(BuildTargetGroup.Android, list); PlayerSettings.stereoRenderingPath = StereoRenderingPath.SinglePass; List <string> allDefines = GetDefineSymbols(BuildTargetGroup.Android); WaveVR_Settings.SetSinglePassDefine(BuildTargetGroup.Android, true, allDefines); } }); }
public static void UpdateInner(List <Item> items, bool forceShow) { bool show = forceShow; if (!forceShow) { foreach (var item in items) { show |= !item.IsIgnored && !item.IsReady(); } } if (show) { window = GetWindow <WaveVR_Settings>(true); window.minSize = new Vector2(640, 320); window.items = items; } }
void SinglePassPreProcess() { if (target != BuildTarget.Android) { Debug.LogError("Target platform is not Android"); return; } var vrSupported = WaveVR_Settings.GetVirtualRealitySupported(BuildTargetGroup.Android); var list = WaveVR_Settings.GetVirtualRealitySDKs(BuildTargetGroup.Android); var hasSplit = ArrayUtility.Contains <string>(list, "split"); var stereoRenderingPath = PlayerSettings.stereoRenderingPath; List <string> allDefines = WaveVR_Settings.GetDefineSymbols(BuildTargetGroup.Android); var hasDefine = allDefines.Contains(WaveVR_Settings.WVRSPDEF); // if single pass enabled in PlayerSettings, set the define. Here is a final check. Debug.Log("SinglePassPreProcess: vrSupported=" + vrSupported + ", stereoRenderingPath=" + stereoRenderingPath + ", hasSplit=" + hasSplit + ", hasDefine=" + hasDefine); var set = vrSupported && hasSplit && stereoRenderingPath == StereoRenderingPath.SinglePass; WaveVR_Settings.SetSinglePassDefine(group, set, allDefines); }
static void ApplyVRTestAppPlayerSettings(bool isIL2CPP = false, bool isSupport32 = true, bool isSupport64 = false) { Debug.Log("ApplyVRTestAppPlayerSettings"); GeneralSettings(); if (!isSupport32 && !isSupport64) { isSupport32 = true; } PlayerSettings.productName = "VRTestApp"; #if UNITY_5_6_OR_NEWER PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, "com.vrm.unity.VRTestApp"); #else PlayerSettings.bundleIdentifier = "com.vrm.unity.VRTestApp"; #endif Texture2D icon = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/Samples/VRTestApp/Textures/test.png", typeof(Texture2D)); if (icon == null) { Debug.LogError("Fail to read app icon"); } Texture2D[] group = { icon, icon, icon, icon, icon, icon }; PlayerSettings.SetIconsForTargetGroup(BuildTargetGroup.Android, group); PlayerSettings.gpuSkinning = false; #if UNITY_2017_2_OR_NEWER PlayerSettings.SetMobileMTRendering(BuildTargetGroup.Android, true); #else PlayerSettings.mobileMTRendering = true; #endif PlayerSettings.graphicsJobs = true; // This can help check the Settings by text editor EditorSettings.serializationMode = SerializationMode.ForceText; // Enable VR support and singlepass WaveVR_Settings.SetVirtualRealitySupported(BuildTargetGroup.Android, true); var list = WaveVR_Settings.GetVirtualRealitySDKs(BuildTargetGroup.Android); if (!ArrayUtility.Contains <string>(list, WaveVR_Settings.WVRSinglePassDeviceName)) { ArrayUtility.Insert <string>(ref list, 0, WaveVR_Settings.WVRSinglePassDeviceName); } WaveVR_Settings.SetVirtualRealitySDKs(BuildTargetGroup.Android, list); PlayerSettings.stereoRenderingPath = StereoRenderingPath.SinglePass; var symbols = WaveVR_Settings.GetDefineSymbols(BuildTargetGroup.Android); WaveVR_Settings.SetSinglePassDefine(BuildTargetGroup.Android, true, symbols); // Force use GLES31 PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.Android, false); UnityEngine.Rendering.GraphicsDeviceType[] apis = { UnityEngine.Rendering.GraphicsDeviceType.OpenGLES3 }; PlayerSettings.SetGraphicsAPIs(BuildTarget.Android, apis); PlayerSettings.openGLRequireES31 = true; PlayerSettings.openGLRequireES31AEP = true; if (isIL2CPP) { PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.IL2CPP); } else { PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.Mono2x); } if (isSupport32) { if (isSupport64) { PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64; } else { PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7; } } else { PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARM64; } PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel25; PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevel26; AssetDatabase.SaveAssets(); }