diff --git a/com.unity.postprocessing/CHANGELOG.md b/com.unity.postprocessing/CHANGELOG.md index 0b7b0388bd5..1084236fb0c 100644 --- a/com.unity.postprocessing/CHANGELOG.md +++ b/com.unity.postprocessing/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to this package will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [4.0.0] - 2026-06-01 + +### Deprecated +- **The entire `com.unity.postprocessing` package is now deprecated and no longer actively developed.** + - For URP and HDRP projects, migrate to the integrated Volume-based post-processing system. + - For Built-in Render Pipeline projects, consider migrating to URP. + - See [Post-processing Overview](https://docs.unity3d.com/Manual/PostProcessingOverview.html) for migration guidance. +- Added `[Obsolete]` attributes to `PostProcessVolume`, `PostProcessLayer`, and `PostProcessProfile` classes. +- Added startup dialog notification that appears once per Unity session, with optional "Don't ask again on this computer" checkbox for permanent dismissal. + ## [3.5.4] - 2026-03-13 ### Fixed diff --git a/com.unity.postprocessing/PostProcessing/Editor/DeprecationNotice.cs b/com.unity.postprocessing/PostProcessing/Editor/DeprecationNotice.cs new file mode 100644 index 00000000000..dad88cee035 --- /dev/null +++ b/com.unity.postprocessing/PostProcessing/Editor/DeprecationNotice.cs @@ -0,0 +1,49 @@ +using UnityEditor; +using UnityEngine; + +namespace UnityEngine.Rendering.PostProcessing +{ + [InitializeOnLoad] + internal static class DeprecationNotice + { + const string k_DialogOptOutKey = "PPv2.DeprecationNotice"; + const string k_SessionShownKey = "PPv2.DeprecationNotice.SessionShown"; + + static DeprecationNotice() + { + // Check if user has permanently opted out + if (EditorPrefs.GetBool(k_DialogOptOutKey, false)) + return; + + // Check if already shown this session + if (SessionState.GetBool(k_SessionShownKey, false)) + return; + + // Mark as shown for this session + SessionState.SetBool(k_SessionShownKey, true); + + // Use EditorApplication.update to show dialog after editor is fully initialized + EditorApplication.update += ShowDeprecationDialog; + } + + static void ShowDeprecationDialog() + { + // Remove the callback so it only runs once + EditorApplication.update -= ShowDeprecationDialog; + + // Use Unity's built-in opt-out dialog with ForThisUser (permanent checkbox) + // Clicking OK without checkbox = dismiss for this session only + // Checking the checkbox = dismiss permanently + EditorUtility.DisplayDialog( + "Post Processing Stack v2 - Deprecated", + "This package is deprecated and no longer actively developed.\n\n" + + "For URP and HDRP projects, use the integrated post-processing via the Volume framework.\n\n" + + "For Built-in Render Pipeline projects, consider migrating to URP.\n\n" + + "See documentation for migration guidance:\n" + + "https://docs.unity3d.com/Manual/PostProcessingOverview.html", + "OK", + DialogOptOutDecisionType.ForThisUser, + k_DialogOptOutKey); + } + } +} diff --git a/com.unity.postprocessing/PostProcessing/Editor/DeprecationNotice.cs.meta b/com.unity.postprocessing/PostProcessing/Editor/DeprecationNotice.cs.meta new file mode 100644 index 00000000000..13b59182ef5 --- /dev/null +++ b/com.unity.postprocessing/PostProcessing/Editor/DeprecationNotice.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 \ No newline at end of file diff --git a/com.unity.postprocessing/PostProcessing/Editor/EffectListEditor.cs b/com.unity.postprocessing/PostProcessing/Editor/EffectListEditor.cs index 52f35021056..676483c9791 100644 --- a/com.unity.postprocessing/PostProcessing/Editor/EffectListEditor.cs +++ b/com.unity.postprocessing/PostProcessing/Editor/EffectListEditor.cs @@ -5,6 +5,8 @@ using UnityEngine.Assertions; using UnityEngine.Rendering.PostProcessing; +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEditor.Rendering.PostProcessing { /// @@ -343,3 +345,5 @@ PostProcessEffectSettings CreateNewEffect(Type type) } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Editor/PostProcessDebugEditor.cs b/com.unity.postprocessing/PostProcessing/Editor/PostProcessDebugEditor.cs index 2455861e6fa..16224f756a0 100644 --- a/com.unity.postprocessing/PostProcessing/Editor/PostProcessDebugEditor.cs +++ b/com.unity.postprocessing/PostProcessing/Editor/PostProcessDebugEditor.cs @@ -1,6 +1,8 @@ using UnityEngine; using UnityEngine.Rendering.PostProcessing; +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEditor.Rendering.PostProcessing { [CustomEditor(typeof(PostProcessDebug))] @@ -142,3 +144,5 @@ void DoOverlayGUI(DebugOverlay overlay, params SerializedProperty[] settings) } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Editor/PostProcessLayerEditor.cs b/com.unity.postprocessing/PostProcessing/Editor/PostProcessLayerEditor.cs index 1c12846090c..7ee7c6b3710 100644 --- a/com.unity.postprocessing/PostProcessing/Editor/PostProcessLayerEditor.cs +++ b/com.unity.postprocessing/PostProcessing/Editor/PostProcessLayerEditor.cs @@ -6,6 +6,8 @@ using UnityEditorInternal; using System.IO; +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEditor.Rendering.PostProcessing { using SerializedBundleRef = PostProcessLayer.SerializedBundleRef; @@ -427,3 +429,5 @@ void ExportFrameToExr(ExportMode mode) } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Editor/PostProcessProfileEditor.cs b/com.unity.postprocessing/PostProcessing/Editor/PostProcessProfileEditor.cs index 2f586c3375e..d7a49c8db82 100644 --- a/com.unity.postprocessing/PostProcessing/Editor/PostProcessProfileEditor.cs +++ b/com.unity.postprocessing/PostProcessing/Editor/PostProcessProfileEditor.cs @@ -1,5 +1,7 @@ using UnityEngine.Rendering.PostProcessing; +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEditor.Rendering.PostProcessing { [CustomEditor(typeof(PostProcessProfile))] @@ -27,3 +29,5 @@ public override void OnInspectorGUI() } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Editor/PostProcessVolumeEditor.cs b/com.unity.postprocessing/PostProcessing/Editor/PostProcessVolumeEditor.cs index a8de4405b51..53709570a6d 100644 --- a/com.unity.postprocessing/PostProcessing/Editor/PostProcessVolumeEditor.cs +++ b/com.unity.postprocessing/PostProcessing/Editor/PostProcessVolumeEditor.cs @@ -1,6 +1,8 @@ using UnityEngine; using UnityEngine.Rendering.PostProcessing; +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEditor.Rendering.PostProcessing { [CanEditMultipleObjects, CustomEditor(typeof(PostProcessVolume))] @@ -164,3 +166,5 @@ public PostProcessProfile profileRef } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Editor/Tools/ProfileFactory.cs b/com.unity.postprocessing/PostProcessing/Editor/Tools/ProfileFactory.cs index 75040d96580..46e67404501 100644 --- a/com.unity.postprocessing/PostProcessing/Editor/Tools/ProfileFactory.cs +++ b/com.unity.postprocessing/PostProcessing/Editor/Tools/ProfileFactory.cs @@ -4,6 +4,8 @@ using UnityEngine.SceneManagement; using UnityEngine.Rendering.PostProcessing; +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEditor.Rendering.PostProcessing { /// @@ -96,3 +98,5 @@ public override void Action(int instanceId, string pathName, string resourceFile } #endif } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Editor/Tools/VolumeFactory.cs b/com.unity.postprocessing/PostProcessing/Editor/Tools/VolumeFactory.cs index c518a079bc9..03d5021fdc6 100644 --- a/com.unity.postprocessing/PostProcessing/Editor/Tools/VolumeFactory.cs +++ b/com.unity.postprocessing/PostProcessing/Editor/Tools/VolumeFactory.cs @@ -1,6 +1,8 @@ using UnityEngine; using UnityEngine.Rendering.PostProcessing; +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEditor.Rendering.PostProcessing { internal static class VolumeFactory @@ -19,3 +21,5 @@ static void CreateVolume() } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessDebug.cs b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessDebug.cs index c63f333086a..e9e80a77c6a 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessDebug.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessDebug.cs @@ -1,3 +1,5 @@ +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEngine.Rendering.PostProcessing { /// @@ -158,3 +160,5 @@ void DrawMonitor(ref Rect rect, Monitor monitor, bool enabled) } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessEffectRenderer.cs b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessEffectRenderer.cs index 9a5b293bea8..2ae39fdaef3 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessEffectRenderer.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessEffectRenderer.cs @@ -1,3 +1,5 @@ +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEngine.Rendering.PostProcessing { /// @@ -76,3 +78,5 @@ internal override void SetSettings(PostProcessEffectSettings settings) } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessLayer.cs b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessLayer.cs index b2ed5fd63c8..edd9cbce66d 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessLayer.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessLayer.cs @@ -21,6 +21,7 @@ namespace UnityEngine.Rendering.PostProcessing [DisallowMultipleComponent, ImageEffectAllowedInSceneView] [AddComponentMenu("Rendering/Post-process Layer", 1000)] [RequireComponent(typeof(Camera))] + [System.Obsolete("Post Processing Stack v2 is deprecated. Use URP or HDRP's Volume-based post-processing instead.", false)] public sealed class PostProcessLayer : MonoBehaviour { /// diff --git a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessManager.cs b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessManager.cs index 0a942fd00d3..80ce842afe6 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessManager.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessManager.cs @@ -3,6 +3,8 @@ using System.Linq; using UnityEngine.Assertions; +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEngine.Rendering.PostProcessing { /// @@ -460,3 +462,5 @@ static bool IsVolumeRenderedByCamera(PostProcessVolume volume, Camera camera) } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessProfile.cs b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessProfile.cs index 7f4b5430e4d..97447d57dcd 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessProfile.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessProfile.cs @@ -7,6 +7,7 @@ namespace UnityEngine.Rendering.PostProcessing /// An asset holding a set of post-processing settings to use with a . /// /// + [System.Obsolete("Post Processing Stack v2 is deprecated. Use URP or HDRP's Volume-based post-processing instead.", false)] public sealed class PostProcessProfile : ScriptableObject { /// diff --git a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessRenderContext.cs b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessRenderContext.cs index 4ca66cace71..585517d1f70 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessRenderContext.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessRenderContext.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEngine.Rendering.PostProcessing { #if (ENABLE_VR_MODULE && ENABLE_VR) @@ -434,3 +436,5 @@ public void UpdateSinglePassStereoState(bool isTAAEnabled, bool isAOEnabled, boo } } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessVolume.cs b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessVolume.cs index fa787750e39..7e21a48b90b 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/PostProcessVolume.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/PostProcessVolume.cs @@ -61,6 +61,7 @@ namespace UnityEngine.Rendering.PostProcessing [ExecuteInEditMode] #endif [AddComponentMenu("Rendering/Post-process Volume", 1001)] + [System.Obsolete("Post Processing Stack v2 is deprecated. Use URP or HDRP's Volume-based post-processing instead.", false)] public sealed class PostProcessVolume : MonoBehaviour { /// diff --git a/com.unity.postprocessing/PostProcessing/Runtime/Utils/RuntimeUtilities.cs b/com.unity.postprocessing/PostProcessing/Runtime/Utils/RuntimeUtilities.cs index cf0eb3588b0..14e44977dc2 100644 --- a/com.unity.postprocessing/PostProcessing/Runtime/Utils/RuntimeUtilities.cs +++ b/com.unity.postprocessing/PostProcessing/Runtime/Utils/RuntimeUtilities.cs @@ -14,6 +14,8 @@ using UnityEngine.Assemblies; #endif +#pragma warning disable CS0618 // Type or member is obsolete + namespace UnityEngine.Rendering.PostProcessing { using SceneManagement; @@ -1330,3 +1332,5 @@ public static string GetFieldPath(Expression> #endregion } } + +#pragma warning restore CS0618 // Type or member is obsolete diff --git a/com.unity.postprocessing/package.json b/com.unity.postprocessing/package.json index f5d7e607d4b..9689f8b9684 100644 --- a/com.unity.postprocessing/package.json +++ b/com.unity.postprocessing/package.json @@ -1,10 +1,11 @@ { "name": "com.unity.postprocessing", - "version": "3.5.4", + "version": "4.0.0", "displayName": "Post Processing", "unity": "2019.4", "unityRelease": "19f1", - "description": "The post-processing stack (v2) comes with a collection of effects and image filters you can apply to your cameras to improve the visuals of your games.", + "deprecated": "Post Processing Stack v2 is deprecated and no longer actively developed. For URP and HDRP projects, use the integrated post-processing via the Volume framework. For Built-in Render Pipeline projects, consider migrating to URP. See https://docs.unity3d.com/Manual/PostProcessingOverview.html for migration guidance.", + "description": "[DEPRECATED] The post-processing stack (v2) comes with a collection of effects and image filters you can apply to your cameras to improve the visuals of your games. This package is deprecated - use URP/HDRP Volume-based post-processing instead.", "dependencies": { "com.unity.modules.physics": "1.0.0", "com.unity.modules.imgui": "1.0.0"