void OnEnable() { m_Bundles = new Dictionary <Type, PostProcessBundle>(); m_SortedBundles = new Dictionary <PostProcessEvent, List <PostProcessBundle> >(new PostProcessEventComparer()) { { PostProcessEvent.BeforeTransparent, new List <PostProcessBundle>() }, { PostProcessEvent.BeforeStack, new List <PostProcessBundle>() }, { PostProcessEvent.AfterStack, new List <PostProcessBundle>() } }; foreach (var type in VolumeManager.instance.settingsTypes.Keys) { var settings = (PostProcessEffectSettings)ScriptableObject.CreateInstance(type); var bundle = new PostProcessBundle(settings); m_Bundles.Add(type, bundle); if (!bundle.attribute.builtinEffect) { m_SortedBundles[bundle.attribute.eventType].Add(bundle); } } m_PropertySheetFactory = new PropertySheetFactory(); m_BlueNoise = new BlueNoise(); // Scriptable render pipeline handles their own command buffers if (RuntimeUtilities.scriptableRenderPipelineActive) { return; } m_LegacyCmdBuffer = new CommandBuffer { name = "Post-processing" }; m_LegacyCmdBufferOpaque = new CommandBuffer { name = "Opaque Only Post-processing" }; m_Camera = GetComponent <Camera>(); m_Camera.AddCommandBuffer(CameraEvent.BeforeImageEffectsOpaque, m_LegacyCmdBufferOpaque); m_Camera.AddCommandBuffer(CameraEvent.BeforeImageEffects, m_LegacyCmdBuffer); // Internal context used if no SRP is set m_CurrentContext = new PostProcessRenderContext(); }
public void InitBundles() { // Create these lists only once, the serialization system will take over after that if (m_BeforeTransparentBundles == null) { m_BeforeTransparentBundles = new List <SerializedBundleRef>(); } if (m_BeforeStackBundles == null) { m_BeforeStackBundles = new List <SerializedBundleRef>(); } if (m_AfterStackBundles == null) { m_AfterStackBundles = new List <SerializedBundleRef>(); } // Create a bundle for each effect type m_Bundles = new Dictionary <Type, PostProcessBundle>(); foreach (var type in PostProcessManager.instance.settingsTypes.Keys) { var settings = (PostProcessEffectSettings)ScriptableObject.CreateInstance(type); var bundle = new PostProcessBundle(settings); m_Bundles.Add(type, bundle); } // Update sorted lists with newly added or removed effects in the assemblies UpdateBundleSortList(m_BeforeTransparentBundles, PostProcessEvent.BeforeTransparent); UpdateBundleSortList(m_BeforeStackBundles, PostProcessEvent.BeforeStack); UpdateBundleSortList(m_AfterStackBundles, PostProcessEvent.AfterStack); // Push all sorted lists in a dictionary for easier access sortedBundles = new Dictionary <PostProcessEvent, List <SerializedBundleRef> >(new PostProcessEventComparer()) { { PostProcessEvent.BeforeTransparent, m_BeforeTransparentBundles }, { PostProcessEvent.BeforeStack, m_BeforeStackBundles }, { PostProcessEvent.AfterStack, m_AfterStackBundles } }; // Done haveBundlesBeenInited = true; }