Beispiel #1
0
 internal static void CleanupRenderPipeline()
 {
     if (s_CurrentPipelineAsset != null)
     {
         s_CurrentPipelineAsset.DestroyCreatedInstances();
     }
     s_CurrentPipelineAsset = null;
     currentPipeline        = null;
 }
Beispiel #2
0
 private static void DoRenderLoop_Internal(IRenderPipelineAsset pipe, Camera[] cameras, IntPtr loopPtr)
 {
     RenderPipelineManager.PrepareRenderPipeline(pipe);
     if (RenderPipelineManager.currentPipeline != null)
     {
         ScriptableRenderContext renderContext = new ScriptableRenderContext(loopPtr);
         RenderPipelineManager.currentPipeline.Render(renderContext, cameras);
     }
 }
Beispiel #3
0
 internal static void CleanupRenderPipeline()
 {
     if (RenderPipelineManager.s_CurrentPipelineAsset != null)
     {
         RenderPipelineManager.s_CurrentPipelineAsset.DestroyCreatedInstances();
     }
     RenderPipelineManager.s_CurrentPipelineAsset = null;
     RenderPipelineManager.currentPipeline        = null;
 }
Beispiel #4
0
 internal static void CleanupRenderPipeline()
 {
     if (s_CurrentPipelineAsset != null)
     {
         s_CurrentPipelineAsset.DestroyCreatedInstances();
         s_CurrentPipelineAsset            = null;
         currentPipeline                   = null;
         SupportedRenderingFeatures.active = new SupportedRenderingFeatures();
     }
 }
Beispiel #5
0
        private static void DoRenderLoop_Internal(IRenderPipelineAsset pipe, Camera[] cameras, IntPtr loopPtr)
        {
            PrepareRenderPipeline(pipe);
            if (currentPipeline == null)
            {
                return;
            }

            ScriptableRenderContext loop = new ScriptableRenderContext(loopPtr);

            currentPipeline.Render(loop, cameras);
        }
Beispiel #6
0
        private static bool DoRenderLoop_Internal(IRenderPipelineAsset pipe, Camera[] cameras, IntPtr loopPtr)
        {
            if (!PrepareRenderPipeline(pipe))
            {
                return(false);
            }
            ScriptableRenderContext renderContext = default(ScriptableRenderContext);

            renderContext.Initialize(loopPtr);
            currentPipeline.Render(renderContext, cameras);
            return(true);
        }
Beispiel #7
0
 private static void PrepareRenderPipeline(IRenderPipelineAsset pipe)
 {
     if (RenderPipelineManager.s_CurrentPipelineAsset != pipe)
     {
         if (RenderPipelineManager.s_CurrentPipelineAsset != null)
         {
             RenderPipelineManager.CleanupRenderPipeline();
         }
         RenderPipelineManager.s_CurrentPipelineAsset = pipe;
     }
     if (RenderPipelineManager.s_CurrentPipelineAsset != null && (RenderPipelineManager.currentPipeline == null || RenderPipelineManager.currentPipeline.disposed))
     {
         RenderPipelineManager.currentPipeline = RenderPipelineManager.s_CurrentPipelineAsset.CreatePipeline();
     }
 }
Beispiel #8
0
 private static bool PrepareRenderPipeline(IRenderPipelineAsset pipe)
 {
     if (s_CurrentPipelineAsset != pipe)
     {
         if (s_CurrentPipelineAsset != null)
         {
             CleanupRenderPipeline();
         }
         s_CurrentPipelineAsset = pipe;
     }
     if (s_CurrentPipelineAsset != null && (currentPipeline == null || currentPipeline.disposed))
     {
         currentPipeline = s_CurrentPipelineAsset.CreatePipeline();
     }
     return(s_CurrentPipelineAsset != null);
 }
        private static bool DoRenderLoop_Internal(IRenderPipelineAsset pipe, Camera[] cameras, IntPtr loopPtr)
        {
            bool result;

            if (!RenderPipelineManager.PrepareRenderPipeline(pipe))
            {
                result = false;
            }
            else
            {
                ScriptableRenderContext renderContext = default(ScriptableRenderContext);
                renderContext.Initialize(loopPtr);
                RenderPipelineManager.currentPipeline.Render(renderContext, cameras);
                result = true;
            }
            return(result);
        }
Beispiel #10
0
        private static void PrepareRenderPipeline(IRenderPipelineAsset pipe)
        {
            // UnityObject overloads operator == and treats destroyed objects and null as equals
            // However here is needed to differentiate them in other to bookkeep RenderPipeline lifecycle
            if ((object)s_CurrentPipelineAsset != (object)pipe)
            {
                if (s_CurrentPipelineAsset != null)
                {
                    // Required because when switching to a RenderPipeline asset for the first time
                    // it will call OnValidate on the new asset before cleaning up the old one. Thus we
                    // reset the rebuild in order to cleanup properly.
                    CleanupRenderPipeline();
                }

                s_CurrentPipelineAsset = pipe;
            }

            if (s_CurrentPipelineAsset != null &&
                (currentPipeline == null || currentPipeline.disposed))
            {
                currentPipeline = s_CurrentPipelineAsset.CreatePipeline();
            }
        }