public static bool GraphicsMixedStandardShaderQuality()
        {
            var buildGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget);
            var standardShaderQualities = k_GraphicsTiers.Select(tier => EditorGraphicsSettings.GetTierSettings(buildGroup, tier).standardShaderQuality);

            return(standardShaderQualities.Distinct().Count() > 1);
        }
    static void InitHDRProject()
    {
        // tmp
        TMP_PackageUtilities.ImportProjectResourcesMenu();

        // linear for hdr
        PlayerSettings.colorSpace = ColorSpace.Linear;

        // disable webgl compression - let nginx handle compression
        PlayerSettings.WebGL.compressionFormat = WebGLCompressionFormat.Disabled;

        // disable auto graphic api for linear color in webgl
        PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.WebGL, false);
        PlayerSettings.SetGraphicsAPIs(BuildTarget.WebGL, new [] { GraphicsDeviceType.OpenGLES3 });

        // enable hdr for glow
        TierSettings tierSettings;

        // standalone
        tierSettings     = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier3);
        tierSettings.hdr = true;
        EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier3, tierSettings);

        // webgl
        tierSettings     = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.WebGL, GraphicsTier.Tier3);
        tierSettings.hdr = true;
        EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.WebGL, GraphicsTier.Tier3, tierSettings);

        // remove bloats
        Client.Remove("com.unity.collab-proxy");

        // add post processing package
        request = Client.Add("com.unity.postprocessing");
        EditorApplication.update += Progress;
    }
        public void GraphicsUsingRenderingPathIsReported(RenderingPath renderingPath)
        {
            var buildGroup         = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget);
            var savedTier1settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier1);
            var savedTier2settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier2);
            var savedTier3settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier3);

            var tier1settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier1);
            var tier2settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier2);
            var tier3settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier3);

            tier1settings.renderingPath = renderingPath;
            tier2settings.renderingPath = renderingPath;
            tier3settings.renderingPath = renderingPath;

            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier1, tier1settings);
            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier2, tier2settings);
            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier3, tier3settings);

            if (renderingPath == RenderingPath.Forward)
            {
                Assert.AreEqual(true, Evaluators.GraphicsUsingForwardRendering());
                Assert.AreEqual(false, Evaluators.GraphicsUsingDeferredRendering());
            }
            else
            {
                Assert.AreEqual(false, Evaluators.GraphicsUsingForwardRendering());
                Assert.AreEqual(true, Evaluators.GraphicsUsingDeferredRendering());
            }

            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier1, savedTier1settings);
            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier2, savedTier2settings);
            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier3, savedTier3settings);
        }
        public void GraphicsMixedStandardShaderQualityIsReported(bool isMixed)
        {
            var buildGroup         = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget);
            var savedTier1settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier1);
            var savedTier2settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier2);
            var savedTier3settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier3);

            var tier1settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier1);
            var tier2settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier2);
            var tier3settings = EditorGraphicsSettings.GetTierSettings(buildGroup, GraphicsTier.Tier3);

            tier1settings.standardShaderQuality = ShaderQuality.High;
            tier2settings.standardShaderQuality = ShaderQuality.High;
            tier3settings.standardShaderQuality = isMixed ? ShaderQuality.Low : ShaderQuality.High;

            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier1, tier1settings);
            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier2, tier2settings);
            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier3, tier3settings);

            Assert.AreEqual(isMixed, Evaluators.GraphicsMixedStandardShaderQuality());

            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier1, savedTier1settings);
            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier2, savedTier2settings);
            EditorGraphicsSettings.SetTierSettings(buildGroup, GraphicsTier.Tier3, savedTier3settings);
        }
        public static bool GraphicsUsingDeferredRendering()
        {
            var buildGroup     = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget);
            var renderingPaths = k_GraphicsTiers.Select(tier => EditorGraphicsSettings.GetTierSettings(buildGroup, tier).renderingPath);

            return(renderingPaths.Any(path => path == RenderingPath.DeferredShading));
        }
    public static int CurrentRenderPathIndex()
    {
        var currentRenderingPath =
            EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier3).renderingPath;

        return(ValidRenderingPaths().IndexOf(currentRenderingPath));
    }
Ejemplo n.º 7
0
            internal void OnTierGUI(BuildTargetGroup platform, GraphicsTier tier, bool vertical)
            {
                TierSettings tierSettings = EditorGraphicsSettings.GetTierSettings(platform, tier);

                EditorGUI.BeginChangeCheck();
                if (!vertical)
                {
                    EditorGUILayout.LabelField(GraphicsSettingsWindow.TierSettingsEditor.Styles.empty, EditorStyles.boldLabel, new GUILayoutOption[0]);
                }
                tierSettings.standardShaderQuality        = this.ShaderQualityPopup(tierSettings.standardShaderQuality);
                tierSettings.reflectionProbeBoxProjection = EditorGUILayout.Toggle(tierSettings.reflectionProbeBoxProjection, new GUILayoutOption[0]);
                tierSettings.reflectionProbeBlending      = EditorGUILayout.Toggle(tierSettings.reflectionProbeBlending, new GUILayoutOption[0]);
                tierSettings.detailNormalMap        = EditorGUILayout.Toggle(tierSettings.detailNormalMap, new GUILayoutOption[0]);
                tierSettings.semitransparentShadows = EditorGUILayout.Toggle(tierSettings.semitransparentShadows, new GUILayoutOption[0]);
                tierSettings.enableLPPV             = EditorGUILayout.Toggle(tierSettings.enableLPPV, new GUILayoutOption[0]);
                if (!vertical)
                {
                    EditorGUILayout.LabelField(GraphicsSettingsWindow.TierSettingsEditor.Styles.empty, EditorStyles.boldLabel, new GUILayoutOption[0]);
                    EditorGUILayout.LabelField(GraphicsSettingsWindow.TierSettingsEditor.Styles.empty, EditorStyles.boldLabel, new GUILayoutOption[0]);
                }
                tierSettings.cascadedShadowMaps    = EditorGUILayout.Toggle(tierSettings.cascadedShadowMaps, new GUILayoutOption[0]);
                tierSettings.prefer32BitShadowMaps = EditorGUILayout.Toggle(tierSettings.prefer32BitShadowMaps, new GUILayoutOption[0]);
                tierSettings.hdr                = EditorGUILayout.Toggle(tierSettings.hdr, new GUILayoutOption[0]);
                tierSettings.hdrMode            = this.HDRModePopup(tierSettings.hdrMode);
                tierSettings.renderingPath      = this.RenderingPathPopup(tierSettings.renderingPath);
                tierSettings.realtimeGICPUUsage = this.RealtimeGICPUUsagePopup(tierSettings.realtimeGICPUUsage);
                if (EditorGUI.EndChangeCheck())
                {
                    EditorGraphicsSettings.RegisterUndoForGraphicsSettings();
                    EditorGraphicsSettings.SetTierSettings(platform, tier, tierSettings);
                }
            }
        public static bool IsUsingDeferredRenderingPath()
        {
            var target = EditorUserBuildSettings.selectedBuildTargetGroup;
            var tier   = Graphics.activeTier;
            var currentTierSettings = EditorGraphicsSettings.GetTierSettings(target, tier);
            var renderingPath       = GetSceneViewRenderingPath();

            return((renderingPath == RenderingPath.DeferredShading) ||
                   (renderingPath == RenderingPath.UsePlayerSettings && currentTierSettings.renderingPath == RenderingPath.DeferredShading));
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Enables the deferred rendering path for all graphics tiers for the current build target
        /// </summary>
        public static void EnableDeferredRenderingPath()
        {
            var buildTarget = EditorUserBuildSettings.selectedBuildTargetGroup;

            for (var i = GraphicsTier.Tier1; i <= GraphicsTier.Tier3; i++)
            {
                var tierSettings = EditorGraphicsSettings.GetTierSettings(buildTarget, i);
                tierSettings.renderingPath = RenderingPath.DeferredShading;
                EditorGraphicsSettings.SetTierSettings(buildTarget, i, tierSettings);
            }
        }
Ejemplo n.º 10
0
            internal void OnGuiVertical(BuildTargetGroup platform)
            {
                IEnumerator enumerator = Enum.GetValues(typeof(GraphicsTier)).GetEnumerator();

                try
                {
                    while (enumerator.MoveNext())
                    {
                        GraphicsTier graphicsTier = (GraphicsTier)enumerator.Current;
                        bool         flag         = EditorGraphicsSettings.AreTierSettingsAutomatic(platform, graphicsTier);
                        EditorGUI.BeginChangeCheck();
                        GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                        EditorGUIUtility.labelWidth = 80f;
                        EditorGUILayout.LabelField(GraphicsSettingsWindow.TierSettingsEditor.Styles.tierName[(int)graphicsTier], EditorStyles.boldLabel, new GUILayoutOption[0]);
                        GUILayout.FlexibleSpace();
                        EditorGUIUtility.labelWidth = 75f;
                        flag = EditorGUILayout.Toggle(GraphicsSettingsWindow.TierSettingsEditor.Styles.autoSettings, flag, new GUILayoutOption[0]);
                        GUILayout.EndHorizontal();
                        if (EditorGUI.EndChangeCheck())
                        {
                            EditorGraphicsSettings.RegisterUndoForGraphicsSettings();
                            EditorGraphicsSettings.MakeTierSettingsAutomatic(platform, graphicsTier, flag);
                            EditorGraphicsSettings.OnUpdateTierSettingsImpl(platform, true);
                        }
                        using (new EditorGUI.DisabledScope(flag))
                        {
                            EditorGUI.indentLevel++;
                            EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]);
                            EditorGUILayout.BeginVertical(new GUILayoutOption[0]);
                            EditorGUIUtility.labelWidth = 140f;
                            this.OnFieldLabelsGUI(true);
                            EditorGUILayout.EndVertical();
                            EditorGUILayout.BeginVertical(new GUILayoutOption[0]);
                            EditorGUIUtility.labelWidth = 50f;
                            this.OnTierGUI(platform, graphicsTier, true);
                            EditorGUILayout.EndVertical();
                            GUILayout.EndHorizontal();
                            EditorGUI.indentLevel--;
                        }
                    }
                }
                finally
                {
                    IDisposable disposable;
                    if ((disposable = (enumerator as IDisposable)) != null)
                    {
                        disposable.Dispose();
                    }
                }
                EditorGUIUtility.labelWidth = 0f;
            }
Ejemplo n.º 11
0
        public bool GraphicsUsingDeferredRendering()
        {
            for (var btIdx = 0; btIdx < m_BuildTargets.Length; ++btIdx)
                for (var tierIdx = 0; tierIdx < m_GraphicsTiers.Length; ++tierIdx)
                {
                    var tierSettings =
                        EditorGraphicsSettings.GetTierSettings(m_BuildTargets[btIdx], m_GraphicsTiers[tierIdx]);

                    if (tierSettings.renderingPath == RenderingPath.DeferredShading)
                        return true;
                }

            return false;
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Enables (default) forward rendering path, and adjusts default values
        /// </summary>
        public static void EnableForwardRenderingPath()
        {
            var buildTarget = EditorUserBuildSettings.selectedBuildTargetGroup;

            for (var i = GraphicsTier.Tier1; i <= GraphicsTier.Tier3; i++)
            {
                var tierSettings = EditorGraphicsSettings.GetTierSettings(buildTarget, i);
                tierSettings.renderingPath = RenderingPath.Forward;
                EditorGraphicsSettings.SetTierSettings(buildTarget, i, tierSettings);
            }
            // This light count is a bit bonkers, but playfields are a single mesh, and
            // with lots of inserts expected to be lit up we need a pretty high count
            QualitySettings.pixelLightCount = 150;
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Grabs the 3rd tier from the Graphics Tier Settings based off the current build platform
        /// </summary>
        private void GatherGraphicsTiers()
        {
            var targetGrp = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget);
            var tier      = EditorGraphicsSettings.GetTierSettings(targetGrp, GraphicsTier.Tier3);

            // Add the Graphic Tier Render Path settings as the first rendering mode
            m_RenderingModes.Add(GetEquivalentRenderMode(tier.renderingPath));

            m_GraphicsTierSettings.RenderingPath                = tier.renderingPath;
            m_GraphicsTierSettings.ReflectionProbeBlending      = tier.reflectionProbeBlending;
            m_GraphicsTierSettings.ReflectionProbeBoxProjection = tier.reflectionProbeBoxProjection;
            m_GraphicsTierSettings.CascadeShadows               = tier.cascadedShadowMaps;
            m_GraphicsTierSettings.HDR = tier.hdr;
        }
Ejemplo n.º 14
0
        public static void SetAndroidProjectSetting()
        {
            //TODO 勾选PlayerSettings中的dynamicBatching 没找到代码设置API 目前手动设置
            PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android,
                                                             "FAIRYGUI_TOLUA;FAIRYGUI_TEST;UNITY_POST_PROCESSING_STACK_V2;PROJECT_DEBUG");
            //设置HDR
            TierSettings settings = new TierSettings();

            settings.standardShaderQuality = ShaderQuality.Medium;
            settings.hdr                = true;
            settings.hdrMode            = CameraHDRMode.R11G11B10;
            settings.renderingPath      = RenderingPath.DeferredShading;
            settings.realtimeGICPUUsage = RealtimeGICPUUsage.Low;
            EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier2, settings);
        }
Ejemplo n.º 15
0
            internal void OnTierGUI(BuildTargetGroup platform, GraphicsTier tier)
            {
                TierSettings tierSettings = EditorGraphicsSettings.GetTierSettings(platform, tier);

                EditorGUI.BeginChangeCheck();
                tierSettings.cascadedShadowMaps           = EditorGUILayout.Toggle(tierSettings.cascadedShadowMaps, new GUILayoutOption[0]);
                tierSettings.standardShaderQuality        = this.ShaderQualityPopup(tierSettings.standardShaderQuality);
                tierSettings.reflectionProbeBoxProjection = EditorGUILayout.Toggle(tierSettings.reflectionProbeBoxProjection, new GUILayoutOption[0]);
                tierSettings.reflectionProbeBlending      = EditorGUILayout.Toggle(tierSettings.reflectionProbeBlending, new GUILayoutOption[0]);
                tierSettings.renderingPath = this.RenderingPathPopup(tierSettings.renderingPath);
                if (EditorGUI.EndChangeCheck())
                {
                    EditorGraphicsSettings.RegisterUndoForGraphicsSettings();
                    EditorGraphicsSettings.SetTierSettings(platform, tier, tierSettings);
                }
            }
    public static bool IsDeferred(Camera cam)
    {
        if (cam.renderingPath == RenderingPath.DeferredShading
#if UNITY_EDITOR
#if !UNITY_5_5_OR_NEWER
            || (cam.renderingPath == RenderingPath.UsePlayerSettings && PlayerSettings.renderingPath == RenderingPath.DeferredShading)
#else
            || (cam.renderingPath == RenderingPath.UsePlayerSettings && EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier3).renderingPath == RenderingPath.DeferredShading)
#endif
#endif
            )
        {
            return(true);
        }
        return(false);
    }
Ejemplo n.º 17
0
        public static void SetGraphicsTier(int i)
        {
            TierSettings ts = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Android, (GraphicsTier)i);

            ts.standardShaderQuality        = ShaderQuality.High;
            ts.reflectionProbeBoxProjection = false;
            ts.reflectionProbeBlending      = false;
            ts.detailNormalMap        = false;
            ts.semitransparentShadows = false;
            ts.enableLPPV             = false;
            ts.cascadedShadowMaps     = false;
            ts.prefer32BitShadowMaps  = false;
            ts.hdr                = false;
            ts.renderingPath      = RenderingPath.Forward;
            ts.realtimeGICPUUsage = RealtimeGICPUUsage.Low;
            EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.Android, (GraphicsTier)i, ts);
        }
Ejemplo n.º 18
0
        public bool GraphicsUsingDeferredRendering()
        {
            for (var btIdx = 0; btIdx < _buildTargets.Length; ++btIdx)
            {
                for (var tierIdx = 0; tierIdx < _graphicsTiers.Length; ++tierIdx)
                {
                    var tierSettings =
                        EditorGraphicsSettings.GetTierSettings(_buildTargets[btIdx], _graphicsTiers[tierIdx]);

                    if (tierSettings.renderingPath == RenderingPath.DeferredShading)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Ejemplo n.º 19
0
        public bool GraphicsMixedStandardShaderQuality()
        {
            for (var btIdx = 0; btIdx < m_BuildTargets.Length; ++btIdx)
            {
                var ssq = EditorGraphicsSettings.GetTierSettings(m_BuildTargets[btIdx], m_GraphicsTiers[0])
                    .standardShaderQuality;
                for (var tierIdx = 0; tierIdx < m_GraphicsTiers.Length; ++tierIdx)
                {
                    var tierSettings =
                        EditorGraphicsSettings.GetTierSettings(m_BuildTargets[btIdx], m_GraphicsTiers[tierIdx]);

                    if (tierSettings.standardShaderQuality != ssq)
                        return true;
                }
            }

            return false;
        }
Ejemplo n.º 20
0
        public bool GraphicsUsingForwardRendering()
        {
            for (int btIdx = 0; btIdx < _buildTargets.Length; ++btIdx)
            {
                for (int tierIdx = 0; tierIdx < _graphicsTiers.Length; ++tierIdx)
                {
                    TierSettings tierSettings =
                        EditorGraphicsSettings.GetTierSettings(_buildTargets[btIdx], _graphicsTiers[tierIdx]);

                    if (tierSettings.renderingPath == RenderingPath.Forward)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Ejemplo n.º 21
0
        public bool GraphicsMixedStandardShaderQuality()
        {
            for (int btIdx = 0; btIdx < _buildTargets.Length; ++btIdx)
            {
                ShaderQuality ssq = EditorGraphicsSettings.GetTierSettings(_buildTargets[btIdx], _graphicsTiers[0]).standardShaderQuality;
                for (int tierIdx = 0; tierIdx < _graphicsTiers.Length; ++tierIdx)
                {
                    TierSettings tierSettings =
                        EditorGraphicsSettings.GetTierSettings(_buildTargets[btIdx], _graphicsTiers[tierIdx]);

                    if (tierSettings.standardShaderQuality != ssq)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Ejemplo n.º 22
0
        public static bool CheckGraphicsTier(int i)
        {
            bool         flag = true;
            TierSettings ts   = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Android, (GraphicsTier)i);

            flag &= ts.standardShaderQuality == ShaderQuality.High;
            flag &= ts.reflectionProbeBoxProjection == false;
            flag &= ts.reflectionProbeBlending == false;
            flag &= ts.detailNormalMap == false;
            flag &= ts.semitransparentShadows == false;
            flag &= ts.enableLPPV == false;
            flag &= ts.cascadedShadowMaps == false;
            flag &= ts.prefer32BitShadowMaps == false;
            flag &= ts.hdr == false;
            flag &= ts.renderingPath == RenderingPath.Forward;
            flag &= ts.realtimeGICPUUsage == RealtimeGICPUUsage.Low;
            return(flag);
        }
Ejemplo n.º 23
0
        /// <summary>
        /// グラフィック設定
        /// </summary>
        private static void GraphicsSetting()
        {
            TierSettings tier1Settings = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier1);
            TierSettings tier2Settings = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier2);
            TierSettings tier3Settings = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier3);

            tier1Settings.standardShaderQuality = ShaderQuality.Low;
            tier1Settings.renderingPath         = RenderingPath.VertexLit;

            tier2Settings.standardShaderQuality = ShaderQuality.Medium;
            tier2Settings.renderingPath         = RenderingPath.VertexLit;

            tier3Settings.standardShaderQuality = ShaderQuality.High;
            tier3Settings.renderingPath         = RenderingPath.VertexLit;

            EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier1, tier1Settings);
            EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier2, tier2Settings);
            EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.Standalone, GraphicsTier.Tier3, tier3Settings);
        }
Ejemplo n.º 24
0
        public static void SetLinearDeferredLighting()
        {
            PlayerSettings.colorSpace = ColorSpace.Linear;

            var tier1 = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier1);

            tier1.renderingPath = RenderingPath.DeferredShading;
            EditorGraphicsSettings.SetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier1, tier1);

            var tier2 = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier2);

            tier2.renderingPath = RenderingPath.DeferredShading;
            EditorGraphicsSettings.SetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier2, tier2);

            var tier3 = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier3);

            tier3.renderingPath = RenderingPath.DeferredShading;
            EditorGraphicsSettings.SetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier3, tier3);
        }
Ejemplo n.º 25
0
        public static void GX_SetLinearDeferredLighting()
        {
            PlayerSettings.colorSpace = ColorSpace.Linear;

            #if UNITY_5_5_OR_NEWER && UNITY_EDITOR
            var tier1 = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier1);
            tier1.renderingPath = RenderingPath.DeferredShading;
            EditorGraphicsSettings.SetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier1, tier1);

            var tier2 = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier2);
            tier2.renderingPath = RenderingPath.DeferredShading;
            EditorGraphicsSettings.SetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier2, tier2);

            var tier3 = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier3);
            tier3.renderingPath = RenderingPath.DeferredShading;
            EditorGraphicsSettings.SetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier3, tier3);
#else
            PlayerSettings.renderingPath = RenderingPath.DeferredShading;
#endif
        }
        /// <summary>
        /// Set linear deffered lighting (the best for outdoor scenes)
        /// </summary>
        /// <param name="ambientSkiesEditor"></param>
        public static void SetLinearDeferredLighting(AmbientSkiesEditorWindow ambientSkiesEditor)
        {
            if (ambientSkiesEditor != null)
            {
                ambientSkiesEditor.Close();
            }

            PlayerSettings.colorSpace = ColorSpace.Linear;
#if UNITY_5_5_OR_NEWER
            var tier1 = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier1);
            tier1.renderingPath = RenderingPath.DeferredShading;
            EditorGraphicsSettings.SetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier1, tier1);
            var tier2 = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier2);
            tier2.renderingPath = RenderingPath.DeferredShading;
            EditorGraphicsSettings.SetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier2, tier2);
            var tier3 = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier3);
            tier3.renderingPath = RenderingPath.DeferredShading;
            EditorGraphicsSettings.SetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, GraphicsTier.Tier3, tier3);
#else
            PlayerSettings.renderingPath = RenderingPath.DeferredShading;
#endif
        }
    public static void RenderingPathSelector()
    {
        var currentPathIndex = XRBuildSettings.CurrentRenderPathIndex();

        EditorGUI.BeginChangeCheck();
        var guiContent = new GUIContent("Rendering Path",
                                        "The rendering path to use the project. Applied to all graphics tiers.");
        var newRenderingPathIndex = EditorGUILayout.Popup(guiContent, currentPathIndex, ValidRenderingPathsGuiContents());

        if (EditorGUI.EndChangeCheck())
        {
            var newRenderingPath = XRBuildSettings.ValidRenderingPaths()[newRenderingPathIndex];
            foreach (BuildTargetGroup group in Enum.GetValues(typeof(BuildTargetGroup)))
            {
                foreach (GraphicsTier tier in Enum.GetValues(typeof(GraphicsTier)))
                {
                    var settings = EditorGraphicsSettings.GetTierSettings(group, tier);
                    settings.renderingPath = newRenderingPath;
                    EditorGraphicsSettings.SetTierSettings(group, tier, settings);
                }
            }
        }
    }
Ejemplo n.º 28
0
        public OculusGoRecommendedSettings()
        {
#if UNITY_5_4_OR_NEWER
            Add(new VIUVersionCheck.RecommendedSetting <bool>()
            {
                settingTitle     = "Graphic Jobs for Oculus Go",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () => PlayerSettings.graphicsJobs,
                setValueFunc     = v => PlayerSettings.graphicsJobs = v,
                recommendedValue = false,
            });
#endif
            // Oculus mobile recommended settings
            // https://developer.oculus.com/blog/tech-note-unity-settings-for-mobile-vr/
            Add(new VIUVersionCheck.RecommendedSetting <MobileTextureSubtarget>()
            {
                settingTitle     = "Texture Compression",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () => EditorUserBuildSettings.androidBuildSubtarget,
                setValueFunc     = v => EditorUserBuildSettings.androidBuildSubtarget = v,
                recommendedValue = MobileTextureSubtarget.ASTC,
            });

            Add(new VIUVersionCheck.RecommendedSetting <bool>()
            {
                settingTitle  = "Mobile Multithreaded Rendering",
                skipCheckFunc = () => !VIUSettingsEditor.supportWaveVR || !VIUSettingsEditor.supportOculusGo,
#if UNITY_2017_2_OR_NEWER
                currentValueFunc = () => PlayerSettings.MTRendering,
                setValueFunc     = v => PlayerSettings.MTRendering = v,
#else
                currentValueFunc = () => PlayerSettings.mobileMTRendering,
                setValueFunc     = v => PlayerSettings.mobileMTRendering = v,
#endif
                recommendedValue = true,
            });

            Add(new VIUVersionCheck.RecommendedSetting <bool>()
            {
                settingTitle     = "Static Batching",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () =>
                {
                    var playerSetting = GetPlayerSettings();
                    playerSetting.Update();

                    var batchingArrayProp = playerSetting.FindProperty("m_BuildTargetBatching");
                    var batchingProp      = default(SerializedProperty);
                    for (int i = 0, imax = batchingArrayProp.arraySize; i < imax; ++i)
                    {
                        var element = batchingArrayProp.GetArrayElementAtIndex(i);
                        if (element.FindPropertyRelative("m_BuildTarget").stringValue == "Android")
                        {
                            batchingProp = element;
                            break;
                        }
                    }
                    if (batchingProp == null)
                    {
                        return(false);
                    }

                    var staticBatchingProp = batchingProp.FindPropertyRelative("m_StaticBatching");
                    if (staticBatchingProp == null)
                    {
                        return(false);
                    }

                    return(staticBatchingProp.boolValue);
                },
                setValueFunc = v =>
                {
                    var playerSetting = GetPlayerSettings();
                    playerSetting.Update();

                    var batchingArrayProp = playerSetting.FindProperty("m_BuildTargetBatching");
                    var batchingProp      = default(SerializedProperty);
                    for (int i = 0, imax = batchingArrayProp.arraySize; i < imax; ++i)
                    {
                        var element = batchingArrayProp.GetArrayElementAtIndex(i);
                        if (element.FindPropertyRelative("m_BuildTarget").stringValue == "Android")
                        {
                            batchingProp = element;
                            break;
                        }
                    }
                    if (batchingProp == null)
                    {
                        batchingArrayProp.arraySize += 1;
                        batchingProp = batchingArrayProp.GetArrayElementAtIndex(batchingArrayProp.arraySize - 1);
                        batchingProp.FindPropertyRelative("m_BuildTarget").stringValue = "Android";
                    }

                    batchingProp.FindPropertyRelative("m_StaticBatching").boolValue = v;
                    playerSetting.ApplyModifiedProperties();
                },
                recommendedValue = true,
            });

            Add(new VIUVersionCheck.RecommendedSetting <bool>()
            {
                settingTitle     = "Dynamic Batching",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () =>
                {
                    var settingObj = GetPlayerSettings();
                    settingObj.Update();

                    var batchingArrayProp = settingObj.FindProperty("m_BuildTargetBatching");
                    var batchingProp      = default(SerializedProperty);
                    for (int i = 0, imax = batchingArrayProp.arraySize; i < imax; ++i)
                    {
                        var element = batchingArrayProp.GetArrayElementAtIndex(i);
                        if (element.FindPropertyRelative("m_BuildTarget").stringValue == "Android")
                        {
                            batchingProp = element;
                            break;
                        }
                    }
                    if (batchingProp == null)
                    {
                        return(false);
                    }

                    var staticBatchingProp = batchingProp.FindPropertyRelative("m_DynamicBatching");
                    if (staticBatchingProp == null)
                    {
                        return(false);
                    }

                    return(staticBatchingProp.boolValue);
                },
                setValueFunc = v =>
                {
                    var settingObj = GetPlayerSettings();
                    settingObj.Update();

                    var batchingArrayProp = settingObj.FindProperty("m_BuildTargetBatching");
                    var batchingProp      = default(SerializedProperty);
                    for (int i = 0, imax = batchingArrayProp.arraySize; i < imax; ++i)
                    {
                        var element = batchingArrayProp.GetArrayElementAtIndex(i);
                        if (element.FindPropertyRelative("m_BuildTarget").stringValue == "Android")
                        {
                            batchingProp = element;
                            break;
                        }
                    }
                    if (batchingProp == null)
                    {
                        batchingArrayProp.arraySize += 1;
                        batchingProp = batchingArrayProp.GetArrayElementAtIndex(batchingArrayProp.arraySize - 1);
                        batchingProp.FindPropertyRelative("m_BuildTarget").stringValue = "Android";
                    }

                    batchingProp.FindPropertyRelative("m_DynamicBatching").boolValue = v;
                    settingObj.ApplyModifiedProperties();
                },
                recommendedValue = true,
            });

#if UNITY_5_5_OR_NEWER
            Add(new VIUVersionCheck.RecommendedSetting <StereoRenderingPath>()
            {
                settingTitle     = "Stereo Rendering Method",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () => PlayerSettings.stereoRenderingPath,
                setValueFunc     = v => PlayerSettings.stereoRenderingPath = v,
                recommendedValue = StereoRenderingPath.SinglePass,
            });
#endif

            Add(new VIUVersionCheck.RecommendedSetting <bool>()
            {
                settingTitle     = "Prebake Collision Meshes",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () => PlayerSettings.bakeCollisionMeshes,
                setValueFunc     = v => PlayerSettings.bakeCollisionMeshes = v,
                recommendedValue = true,
            });

            Add(new VIUVersionCheck.RecommendedSetting <bool>()
            {
                settingTitle     = "Keep Loaded Shaders Alive",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () =>
                {
                    var settingObj = GetPlayerSettings();
                    settingObj.Update();

                    return(settingObj.FindProperty("keepLoadedShadersAlive").boolValue);
                },
                setValueFunc = v =>
                {
                    var settingObj = GetPlayerSettings();
                    settingObj.Update();

                    settingObj.FindProperty("keepLoadedShadersAlive").boolValue = v;
                    settingObj.ApplyModifiedProperties();
                },
                recommendedValue = true,
            });

            Add(new VIUVersionCheck.RecommendedSetting <bool>()
            {
                settingTitle     = "Optimize Mesh Data",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () => PlayerSettings.stripUnusedMeshComponents,
                setValueFunc     = v => PlayerSettings.stripUnusedMeshComponents = v,
                recommendedValue = true,
            });

#if UNITY_5_5_OR_NEWER
            Add(new VIUVersionCheck.RecommendedSetting <bool>()
            {
                settingTitle     = "Use Oculus Mobile recommended Quality Settings",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () =>
                {
                    var settingObj = GetQualitySettingsAsset();
                    settingObj.Update();

                    var qualitySettingsArray = settingObj.FindProperty("m_QualitySettings");
                    for (int i = 0, imax = qualitySettingsArray.arraySize; i < imax; ++i)
                    {
                        // Simple(level 2) is a good one to start from, it should be the only level that is checked.
                        var element       = qualitySettingsArray.GetArrayElementAtIndex(i);
                        var excludedArray = element.FindPropertyRelative("excludedTargetPlatforms");

                        var foundExcludeAndroidPlatform = false;
                        for (int j = 0, jmax = excludedArray.arraySize; j < jmax; ++j)
                        {
                            if (excludedArray.GetArrayElementAtIndex(j).stringValue == "Android")
                            {
                                foundExcludeAndroidPlatform = true;
                                break;
                            }
                        }

                        if (i == 2)
                        {
                            if (foundExcludeAndroidPlatform)
                            {
                                return(false);
                            }
                        }
                        else if (!foundExcludeAndroidPlatform)
                        {
                            return(false);
                        }
                    }

                    var lv2qualitySetting = qualitySettingsArray.GetArrayElementAtIndex(2);
                    if (lv2qualitySetting.FindPropertyRelative("pixelLightCount").intValue > 1)
                    {
                        return(false);
                    }
                    if (lv2qualitySetting.FindPropertyRelative("anisotropicTextures").intValue != (int)AnisotropicFiltering.Disable)
                    {
                        return(false);
                    }
                    var antiAliasingLevel = lv2qualitySetting.FindPropertyRelative("antiAliasing").intValue; if (antiAliasingLevel > 4 || antiAliasingLevel < 2)
                    {
                        return(false);
                    }
                    if (lv2qualitySetting.FindPropertyRelative("shadows").intValue >= (int)ShadowQuality.All)
                    {
                        return(false);
                    }
#if UNITY_2019_1_OR_NEWER
                    if (lv2qualitySetting.FindPropertyRelative("skinWeights").intValue > 2)
                    {
                        return(false);
                    }
#else
                    if (lv2qualitySetting.FindPropertyRelative("blendWeights").intValue > 2)
                    {
                        return(false);
                    }
#endif
                    if (lv2qualitySetting.FindPropertyRelative("vSyncCount").intValue != 0)
                    {
                        return(false);
                    }

                    return(true);
                },
                setValueFunc = v =>
                {
                    if (!v)
                    {
                        return;
                    }

                    var settingObj = GetQualitySettingsAsset();
                    settingObj.Update();

                    var qualitySettingsArray = settingObj.FindProperty("m_QualitySettings");
                    for (int i = 0, imax = qualitySettingsArray.arraySize; i < imax; ++i)
                    {
                        // Simple(level 2) is a good one to start from, it should be the only level that is checked.
                        var element       = qualitySettingsArray.GetArrayElementAtIndex(i);
                        var excludedArray = element.FindPropertyRelative("excludedTargetPlatforms");

                        var excludeAndroidIndex = -1;
                        for (int j = 0, jmax = excludedArray.arraySize; j < jmax; ++j)
                        {
                            if (excludedArray.GetArrayElementAtIndex(j).stringValue == "Android")
                            {
                                excludeAndroidIndex = j;
                                break;
                            }
                        }

                        if (i == 2)
                        {
                            if (excludeAndroidIndex >= 0)
                            {
                                excludedArray.DeleteArrayElementAtIndex(excludeAndroidIndex);
                            }
                        }
                        else if (excludeAndroidIndex < 0)
                        {
                            excludedArray.arraySize += 1;
                            excludedArray.GetArrayElementAtIndex(excludedArray.arraySize - 1).stringValue = "Android";
                        }
                    }

                    var lv2qualitySetting = qualitySettingsArray.GetArrayElementAtIndex(2);

                    var pixelLightCountProp = lv2qualitySetting.FindPropertyRelative("pixelLightCount");
                    var pixelLightCount     = pixelLightCountProp.intValue;
                    if (pixelLightCount > 1)
                    {
                        pixelLightCountProp.intValue = 1;
                    }
                    else if (pixelLightCount < 0)
                    {
                        pixelLightCountProp.intValue = 0;
                    }

                    lv2qualitySetting.FindPropertyRelative("anisotropicTextures").intValue = (int)AnisotropicFiltering.Disable;

                    var antiAliasingLevelProp = lv2qualitySetting.FindPropertyRelative("antiAliasing");
                    var antiAliasingLevel     = antiAliasingLevelProp.intValue;
                    if (antiAliasingLevel != 2 || antiAliasingLevel != 4)
                    {
                        antiAliasingLevelProp.intValue = 4;
                    }

                    var shadowsProp = lv2qualitySetting.FindPropertyRelative("shadows");
                    if (shadowsProp.intValue >= (int)ShadowQuality.All)
                    {
                        shadowsProp.intValue = (int)ShadowQuality.HardOnly;
                    }

#if UNITY_2019_1_OR_NEWER
                    var blendWeightsProp = lv2qualitySetting.FindPropertyRelative("skinWeights");
                    if (blendWeightsProp.intValue > 2)
                    {
                        blendWeightsProp.intValue = 2;
                    }
#else
                    var blendWeightsProp = lv2qualitySetting.FindPropertyRelative("blendWeights");
                    if (blendWeightsProp.intValue > 2)
                    {
                        blendWeightsProp.intValue = 2;
                    }
#endif

                    lv2qualitySetting.FindPropertyRelative("vSyncCount").intValue = 0;

                    settingObj.ApplyModifiedProperties();
                },
                recommendedValue = true,
            });
#endif

#if UNITY_5_6_OR_NEWER
            Add(new VIUVersionCheck.RecommendedSetting <bool>()
            {
                settingTitle     = "Use Oculus Mobile recommended Graphics Tier Settings",
                skipCheckFunc    = () => !VIUSettingsEditor.supportOculusGo,
                currentValueFunc = () =>
                {
                    var tierSettings = default(TierSettings);

                    tierSettings = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier1);
                    if (tierSettings.standardShaderQuality != ShaderQuality.Low)
                    {
                        return(false);
                    }
                    if (tierSettings.renderingPath != RenderingPath.Forward)
                    {
                        return(false);
                    }
                    if (tierSettings.realtimeGICPUUsage != RealtimeGICPUUsage.Low)
                    {
                        return(false);
                    }

                    tierSettings = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier2);
                    if (tierSettings.standardShaderQuality != ShaderQuality.Low)
                    {
                        return(false);
                    }
                    if (tierSettings.renderingPath != RenderingPath.Forward)
                    {
                        return(false);
                    }
                    if (tierSettings.realtimeGICPUUsage != RealtimeGICPUUsage.Low)
                    {
                        return(false);
                    }

                    tierSettings = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier3);
                    if (tierSettings.standardShaderQuality != ShaderQuality.Low)
                    {
                        return(false);
                    }
                    if (tierSettings.renderingPath != RenderingPath.Forward)
                    {
                        return(false);
                    }
                    if (tierSettings.realtimeGICPUUsage != RealtimeGICPUUsage.Low)
                    {
                        return(false);
                    }
                    return(true);
                },
                setValueFunc = v =>
                {
                    if (!v)
                    {
                        return;
                    }

                    var tierSettings = default(TierSettings);

                    tierSettings = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier1);
                    tierSettings.standardShaderQuality = ShaderQuality.Low;
                    tierSettings.renderingPath         = RenderingPath.Forward;
                    tierSettings.realtimeGICPUUsage    = RealtimeGICPUUsage.Low;
                    EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier1, tierSettings);

                    tierSettings = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier2);
                    tierSettings.standardShaderQuality = ShaderQuality.Low;
                    tierSettings.renderingPath         = RenderingPath.Forward;
                    tierSettings.realtimeGICPUUsage    = RealtimeGICPUUsage.Low;
                    EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier2, tierSettings);

                    tierSettings = EditorGraphicsSettings.GetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier3);
                    tierSettings.standardShaderQuality = ShaderQuality.Low;
                    tierSettings.renderingPath         = RenderingPath.Forward;
                    tierSettings.realtimeGICPUUsage    = RealtimeGICPUUsage.Low;
                    EditorGraphicsSettings.SetTierSettings(BuildTargetGroup.Android, GraphicsTier.Tier3, tierSettings);
                },
                recommendedValue = true,
            });
#endif
        }
Ejemplo n.º 29
0
    protected void DrawGUI(bool isIntegrated = false)
    {
        serializedObject.Update();

        SetStyles();

        EditorGUILayout.BeginVertical();
        {
            // header
            GUILayout.Space(10.0f);
            GUILayout.Label(m_HBAOTex, m_TitleLabelStyle, GUILayout.ExpandWidth(true));

            //if (m_HBAO.GetComponents<MonoBehaviour>()[0] != m_HBAO)
            //{
            //GUILayout.Space(6.0f);
            //EditorGUILayout.HelpBox("This Post FX should be one of the first in your effect stack", MessageType.Info);
            //}

            Event e = Event.current;

            // settings groups
            foreach (var group in m_GroupFields)
            {
                var groupProperty = serializedObject.FindProperty(group.Key.Name);
                if (groupProperty == null)
                {
                    continue;
                }

                GUILayout.Space(6.0f);
                Rect rect = GUILayoutUtility.GetRect(16f, 22f, m_SettingsGroupStyle);
                GUI.Box(rect, ObjectNames.NicifyVariableName(groupProperty.displayName), m_SettingsGroupStyle);
                if (e.type == EventType.MouseDown && rect.Contains(e.mousePosition))
                {
                    groupProperty.isExpanded = !groupProperty.isExpanded;
                    e.Use();
                }

                if (!groupProperty.isExpanded)
                {
                    continue;
                }

                // presets is a special case
                if (group.Key.FieldType == typeof(HBAO_Core.Presets))
                {
                    GUILayout.Space(6.0f);
                    m_SelectedPreset = GUILayout.SelectionGrid(m_SelectedPreset, m_Presets.Values.Select(x => ObjectNames.NicifyVariableName(x.ToString())).ToArray(), 3);
                    GUILayout.Space(6.0f);
                    if (GUILayout.Button("Apply Preset"))
                    {
                        m_HBAO.ApplyPreset(m_Presets[m_SelectedPreset]);
                        EditorUtility.SetDirty(target);
                        if (!EditorApplication.isPlaying)
                        {
#if (UNITY_5_2 || UNITY_5_1 || UNITY_5_0)
                            EditorApplication.MarkSceneDirty();
#else
                            UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEngine.SceneManagement.SceneManager.GetActiveScene());
#endif
                        }
                    }
                }

                foreach (var field in group.Value)
                {
                    // hide real presets
                    if (group.Key.FieldType == typeof(HBAO_Core.Presets))
                    {
                        continue;
                    }

                    // hide integrationStage for legacy HBAO
                    if (group.Key.FieldType == typeof(HBAO_Core.GeneralSettings) && field.name == "integrationStage")
                    {
                        if (!isIntegrated)
                        {
                            continue;
                        }
                    }

                    // hide resolution when deinterleaved HBAO is on
                    if (group.Key.FieldType == typeof(HBAO_Core.GeneralSettings) && field.name == "resolution")
                    {
                        if (m_HBAO.generalSettings.deinterleaving != HBAO_Core.Deinterleaving.Disabled)
                        {
                            continue;
                        }
                    }
                    // warn about deinterleaving not supported with SPSR
                    else if (group.Key.FieldType == typeof(HBAO_Core.GeneralSettings) && field.name == "displayMode")
                    {
#if UNITY_2019_3_OR_NEWER
                        if (m_HBAO.generalSettings.deinterleaving != HBAO_Core.Deinterleaving.Disabled &&
                            IsVrRunning() && PlayerSettings.stereoRenderingPath == StereoRenderingPath.SinglePass)
                        {
                            GUILayout.Space(6.0f);
                            EditorGUILayout.HelpBox("Deinterleaving is not supported with Single Pass Stereo Rendering...", MessageType.Warning);
                        }
#elif UNITY_5_5_OR_NEWER
                        if (m_HBAO.generalSettings.deinterleaving != HBAO_Core.Deinterleaving.Disabled &&
                            PlayerSettings.virtualRealitySupported && PlayerSettings.stereoRenderingPath == StereoRenderingPath.SinglePass)
                        {
                            GUILayout.Space(6.0f);
                            EditorGUILayout.HelpBox("Deinterleaving is not supported with Single Pass Stereo Rendering...", MessageType.Warning);
                        }
#elif UNITY_5_4
                        if (m_HBAO.generalSettings.deinterleaving != HBAO_Core.Deinterleaving.Disabled &&
                            PlayerSettings.virtualRealitySupported && PlayerSettings.singlePassStereoRendering)
                        {
                            GUILayout.Space(6.0f);
                            EditorGUILayout.HelpBox("Deinterleaving is not supported with Single Pass Stereo Rendering...", MessageType.Warning);
                        }
#endif
                    }
                    // hide noise type when deinterleaved HBAO is on
                    else if (group.Key.FieldType == typeof(HBAO_Core.GeneralSettings) && field.name == "noiseType")
                    {
                        if (m_HBAO.generalSettings.deinterleaving != HBAO_Core.Deinterleaving.Disabled)
                        {
                            continue;
                        }
                    }
#if !(UNITY_5_1 || UNITY_5_0)
                    // hide useMultiBounce setting in BeforeReflections integration stage
                    else if (group.Key.FieldType == typeof(HBAO_Core.AOSettings) && field.name == "useMultiBounce")
                    {
                        if (m_HBAO.generalSettings.integrationStage == HBAO_Core.IntegrationStage.BeforeReflections)
                        {
                            continue;
                        }
                    }
#endif
                    // hide multiBounceInfluence setting when not used
                    else if (group.Key.FieldType == typeof(HBAO_Core.AOSettings) && field.name == "multiBounceInfluence")
                    {
#if !(UNITY_5_1 || UNITY_5_0)
                        if (m_HBAO.generalSettings.integrationStage == HBAO_Core.IntegrationStage.BeforeReflections)
                        {
                            continue;
                        }
#endif
                        if (!m_HBAO.aoSettings.useMultiBounce)
                        {
                            continue;
                        }
                    }
                    // warn about distance falloff greater than max distance
                    else if (group.Key.FieldType == typeof(HBAO_Core.AOSettings) && field.name == "perPixelNormals")
                    {
                        if (m_HBAO.aoSettings.distanceFalloff > m_HBAO.aoSettings.maxDistance)
                        {
                            GUILayout.Space(6.0f);
                            EditorGUILayout.HelpBox("Distance Falloff shoudn't be superior to Max Distance", MessageType.Warning);
                        }
                    }
                    // hide albedoMultiplier when not in deferred
                    else if (group.Key.FieldType == typeof(HBAO_Core.ColorBleedingSettings) && field.name == "albedoMultiplier")
                    {
#if UNITY_5_5_OR_NEWER
                        RenderingPath renderingPath = m_HBAO.GetComponent <Camera>().renderingPath;
                        TierSettings  tierSettings  = EditorGraphicsSettings.GetTierSettings(EditorUserBuildSettings.selectedBuildTargetGroup, Graphics.activeTier);
                        if (renderingPath != RenderingPath.DeferredShading &&
                            (renderingPath != RenderingPath.UsePlayerSettings ||
                             tierSettings.renderingPath != RenderingPath.DeferredShading))
                        {
                            continue;
                        }
#else
                        RenderingPath renderingPath = m_HBAO.GetComponent <Camera>().renderingPath;
                        if (renderingPath != RenderingPath.DeferredShading &&
                            (renderingPath != RenderingPath.UsePlayerSettings ||
                             PlayerSettings.renderingPath != RenderingPath.DeferredShading))
                        {
                            continue;
                        }
#endif
                    }

                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Space(12.0f);
                    EditorGUILayout.PropertyField(field);
                    EditorGUILayout.EndHorizontal();
                }
            }
        }
        EditorGUILayout.EndVertical();

        serializedObject.ApplyModifiedProperties();
    }
Ejemplo n.º 30
0
        public override void OnInspectorGUI()
        {
            base.serializedObject.Update();
            if (base.targets.Length == 1)
            {
                this.DoToolbar();
            }
            this.m_ShowProbeModeRealtimeOptions.target = (this.reflectionProbeMode == ReflectionProbeMode.Realtime);
            this.m_ShowProbeModeCustomOptions.target   = (this.reflectionProbeMode == ReflectionProbeMode.Custom);
            EditorGUILayout.IntPopup(this.m_Mode, ReflectionProbeEditor.Styles.reflectionProbeMode, ReflectionProbeEditor.Styles.reflectionProbeModeValues, ReflectionProbeEditor.Styles.typeText, new GUILayoutOption[0]);
            if (!this.m_Mode.hasMultipleDifferentValues)
            {
                EditorGUI.indentLevel++;
                if (EditorGUILayout.BeginFadeGroup(this.m_ShowProbeModeCustomOptions.faded))
                {
                    EditorGUILayout.PropertyField(this.m_RenderDynamicObjects, ReflectionProbeEditor.Styles.renderDynamicObjects, new GUILayoutOption[0]);
                    EditorGUI.BeginChangeCheck();
                    EditorGUI.showMixedValue = this.m_CustomBakedTexture.hasMultipleDifferentValues;
                    UnityEngine.Object objectReferenceValue = EditorGUILayout.ObjectField(ReflectionProbeEditor.Styles.customCubemapText, this.m_CustomBakedTexture.objectReferenceValue, typeof(Cubemap), false, new GUILayoutOption[0]);
                    EditorGUI.showMixedValue = false;
                    if (EditorGUI.EndChangeCheck())
                    {
                        this.m_CustomBakedTexture.objectReferenceValue = objectReferenceValue;
                    }
                }
                EditorGUILayout.EndFadeGroup();
                if (EditorGUILayout.BeginFadeGroup(this.m_ShowProbeModeRealtimeOptions.faded))
                {
                    EditorGUILayout.PropertyField(this.m_RefreshMode, ReflectionProbeEditor.Styles.refreshMode, new GUILayoutOption[0]);
                    EditorGUILayout.PropertyField(this.m_TimeSlicingMode, ReflectionProbeEditor.Styles.timeSlicing, new GUILayoutOption[0]);
                    EditorGUILayout.Space();
                }
                EditorGUILayout.EndFadeGroup();
                EditorGUI.indentLevel--;
            }
            EditorGUILayout.Space();
            GUILayout.Label(ReflectionProbeEditor.Styles.runtimeSettingsHeader, new GUILayoutOption[0]);
            EditorGUI.indentLevel++;
            EditorGUILayout.PropertyField(this.m_Importance, ReflectionProbeEditor.Styles.importanceText, new GUILayoutOption[0]);
            EditorGUILayout.PropertyField(this.m_IntensityMultiplier, ReflectionProbeEditor.Styles.intensityText, new GUILayoutOption[0]);
            if (!EditorGraphicsSettings.GetCurrentTierSettings().reflectionProbeBoxProjection)
            {
                using (new EditorGUI.DisabledScope(true))
                {
                    EditorGUILayout.Toggle(ReflectionProbeEditor.Styles.boxProjectionText, false, new GUILayoutOption[0]);
                }
            }
            else
            {
                EditorGUILayout.PropertyField(this.m_BoxProjection, ReflectionProbeEditor.Styles.boxProjectionText, new GUILayoutOption[0]);
            }
            bool flag  = SceneView.IsUsingDeferredRenderingPath();
            bool flag2 = flag && GraphicsSettings.GetShaderMode(BuiltinShaderType.DeferredReflections) != BuiltinShaderMode.Disabled;

            using (new EditorGUI.DisabledScope(!flag2))
            {
                EditorGUILayout.PropertyField(this.m_BlendDistance, ReflectionProbeEditor.Styles.blendDistanceText, new GUILayoutOption[0]);
            }
            if (EditorGUILayout.BeginFadeGroup(this.m_ShowBoxOptions.faded))
            {
                EditorGUI.BeginChangeCheck();
                EditorGUILayout.PropertyField(this.m_BoxSize, ReflectionProbeEditor.Styles.sizeText, new GUILayoutOption[0]);
                EditorGUILayout.PropertyField(this.m_BoxOffset, ReflectionProbeEditor.Styles.centerText, new GUILayoutOption[0]);
                if (EditorGUI.EndChangeCheck())
                {
                    Vector3 vector3Value  = this.m_BoxOffset.vector3Value;
                    Vector3 vector3Value2 = this.m_BoxSize.vector3Value;
                    if (this.ValidateAABB(ref vector3Value, ref vector3Value2))
                    {
                        this.m_BoxOffset.vector3Value = vector3Value;
                        this.m_BoxSize.vector3Value   = vector3Value2;
                    }
                }
            }
            EditorGUILayout.EndFadeGroup();
            EditorGUI.indentLevel--;
            EditorGUILayout.Space();
            GUILayout.Label(ReflectionProbeEditor.Styles.captureCubemapHeaderText, new GUILayoutOption[0]);
            EditorGUI.indentLevel++;
            EditorGUILayout.IntPopup(this.m_Resolution, ReflectionProbeEditor.Styles.renderTextureSizes.ToArray(), ReflectionProbeEditor.Styles.renderTextureSizesValues.ToArray(), ReflectionProbeEditor.Styles.resolutionText, new GUILayoutOption[]
            {
                GUILayout.MinWidth(40f)
            });
            EditorGUILayout.PropertyField(this.m_HDR, new GUILayoutOption[0]);
            EditorGUILayout.PropertyField(this.m_ShadowDistance, new GUILayoutOption[0]);
            EditorGUILayout.IntPopup(this.m_ClearFlags, ReflectionProbeEditor.Styles.clearFlags, ReflectionProbeEditor.Styles.clearFlagsValues, ReflectionProbeEditor.Styles.clearFlagsText, new GUILayoutOption[0]);
            EditorGUILayout.PropertyField(this.m_BackgroundColor, ReflectionProbeEditor.Styles.backgroundColorText, new GUILayoutOption[0]);
            EditorGUILayout.PropertyField(this.m_CullingMask, new GUILayoutOption[0]);
            EditorGUILayout.PropertyField(this.m_UseOcclusionCulling, new GUILayoutOption[0]);
            EditorGUILayout.PropertiesField(EditorGUI.s_ClipingPlanesLabel, this.m_NearAndFarProperties, EditorGUI.s_NearAndFarLabels, 35f, new GUILayoutOption[0]);
            EditorGUI.indentLevel--;
            EditorGUILayout.Space();
            if (base.targets.Length == 1)
            {
                ReflectionProbe reflectionProbe = (ReflectionProbe)base.target;
                if (reflectionProbe.mode == ReflectionProbeMode.Custom && reflectionProbe.customBakedTexture != null)
                {
                    Cubemap cubemap = reflectionProbe.customBakedTexture as Cubemap;
                    if (cubemap && cubemap.mipmapCount == 1)
                    {
                        EditorGUILayout.HelpBox("No mipmaps in the cubemap, Smoothness value in Standard shader will be ignored.", MessageType.Warning);
                    }
                }
            }
            this.DoBakeButton();
            EditorGUILayout.Space();
            base.serializedObject.ApplyModifiedProperties();
        }