From d82679ae5daba6ce6775463d4bbfd9f8c119ea25 Mon Sep 17 00:00:00 2001 From: Robert Cupisz Date: Sun, 8 Oct 2017 22:53:04 +0200 Subject: [PATCH] Fail more gracefully on platforms without compute shaders. --- .../Editor/VolumetricFogEditor.cs | 17 +++++++++++++++++ .../Editor/VolumetricFogEditor.cs.meta | 12 ++++++++++++ Assets/VolumetricFog/Scripts/VolumetricFog.cs | 19 +++++++++++++++++++ ProjectSettings/ProjectVersion.txt | 2 +- 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 Assets/VolumetricFog/Editor/VolumetricFogEditor.cs create mode 100644 Assets/VolumetricFog/Editor/VolumetricFogEditor.cs.meta diff --git a/Assets/VolumetricFog/Editor/VolumetricFogEditor.cs b/Assets/VolumetricFog/Editor/VolumetricFogEditor.cs new file mode 100644 index 0000000..de91dfc --- /dev/null +++ b/Assets/VolumetricFog/Editor/VolumetricFogEditor.cs @@ -0,0 +1,17 @@ +using UnityEditor; + +[CustomEditor(typeof(VolumetricFog))] +[CanEditMultipleObjects] +public class VolumetricFogEditor : Editor +{ + override public void OnInspectorGUI() + { + if (!VolumetricFog.CheckSupport()) + { + EditorGUILayout.HelpBox(VolumetricFog.GetUnsupportedErrorMessage(), MessageType.Error); + return; + } + + DrawDefaultInspector(); + } +} diff --git a/Assets/VolumetricFog/Editor/VolumetricFogEditor.cs.meta b/Assets/VolumetricFog/Editor/VolumetricFogEditor.cs.meta new file mode 100644 index 0000000..756c73a --- /dev/null +++ b/Assets/VolumetricFog/Editor/VolumetricFogEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9dc42dc79f60fe8449ca035a77f732ae +timeCreated: 1507493299 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VolumetricFog/Scripts/VolumetricFog.cs b/Assets/VolumetricFog/Scripts/VolumetricFog.cs index ad5c05b..7f2e584 100644 --- a/Assets/VolumetricFog/Scripts/VolumetricFog.cs +++ b/Assets/VolumetricFog/Scripts/VolumetricFog.cs @@ -520,6 +520,14 @@ public class VolumetricFog : MonoBehaviour [ImageEffectOpaque] void OnRenderImage(RenderTexture src, RenderTexture dest) { + if (!CheckSupport()) + { + Debug.LogError(GetUnsupportedErrorMessage()); + Graphics.Blit(src, dest); + enabled = false; + return; + } + if(m_Debug) { DebugDisplay(src, dest); @@ -684,4 +692,15 @@ public class VolumetricFog : MonoBehaviour Gizmos.matrix = transform.localToWorldMatrix; Gizmos.DrawFrustum(Vector3.zero, cam.fieldOfView, farClip, nearClip, cam.aspect); } + + public static bool CheckSupport() + { + return SystemInfo.supportsComputeShaders; + } + + public static string GetUnsupportedErrorMessage() + { + return "Volumetric Fog requires compute shaders and this platform doesn't support them. Disabling. \nDetected device type: " + + SystemInfo.graphicsDeviceType + ", version: " + SystemInfo.graphicsDeviceVersion; + } } diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index ca09a3d..4b80f92 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1 +1 @@ -m_EditorVersion: 5.6.0f3 +m_EditorVersion: 2017.1.2f1