mirror of
https://github.com/DCFApixels/Unity-DebugX.git
synced 2025-09-18 10:04:38 +08:00
replace CBExecutor with ICommandBufferExecutor
This commit is contained in:
parent
a47bf30fef
commit
dcd2f401fc
@ -18,8 +18,8 @@ using UnityEditor;
|
|||||||
|
|
||||||
namespace DCFApixels
|
namespace DCFApixels
|
||||||
{
|
{
|
||||||
using IN = System.Runtime.CompilerServices.MethodImplAttribute;
|
|
||||||
using static DebugXConsts;
|
using static DebugXConsts;
|
||||||
|
using IN = System.Runtime.CompilerServices.MethodImplAttribute;
|
||||||
public static unsafe partial class DebugX
|
public static unsafe partial class DebugX
|
||||||
{
|
{
|
||||||
private static PauseStateX _pauseState = PauseStateX.Unpaused;
|
private static PauseStateX _pauseState = PauseStateX.Unpaused;
|
||||||
@ -33,6 +33,16 @@ namespace DCFApixels
|
|||||||
private static ulong _renderTicks = 100;
|
private static ulong _renderTicks = 100;
|
||||||
private static ulong _timeTicks = 0;
|
private static ulong _timeTicks = 0;
|
||||||
|
|
||||||
|
public static ulong RenderTicks
|
||||||
|
{
|
||||||
|
get { return _renderTicks; }
|
||||||
|
}
|
||||||
|
public static ulong TimeTicks
|
||||||
|
{
|
||||||
|
get { return _timeTicks; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#region Other
|
#region Other
|
||||||
public static void ClearAllGizmos()
|
public static void ClearAllGizmos()
|
||||||
{
|
{
|
||||||
@ -212,7 +222,7 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
private static void OnPostRender_SRP(ScriptableRenderContext context, Camera camera)
|
private static void OnPostRender_SRP(ScriptableRenderContext context, Camera camera)
|
||||||
{
|
{
|
||||||
PostRender_General(new CBExecutor(context), camera);
|
PostRender_General(CommandBufferExecutorSRP.GetInstance(context), camera);
|
||||||
context.Submit();
|
context.Submit();
|
||||||
}
|
}
|
||||||
private static void OnPreRender_BRP(Camera camera)
|
private static void OnPreRender_BRP(Camera camera)
|
||||||
@ -222,20 +232,10 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
private static void OnPostRender_BRP(Camera camera)
|
private static void OnPostRender_BRP(Camera camera)
|
||||||
{
|
{
|
||||||
PostRender_General(default, camera);
|
PostRender_General(CommandBufferExecutorBRP.GetInstance(), camera);
|
||||||
//throw new NotImplementedException();
|
//throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static ulong RenderTicks
|
|
||||||
{
|
|
||||||
get { return _renderTicks; }
|
|
||||||
}
|
|
||||||
public static ulong TimeTicks
|
|
||||||
{
|
|
||||||
get { return _timeTicks; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void PreUpdateCallback()
|
private static void PreUpdateCallback()
|
||||||
{
|
{
|
||||||
_editorTicks++;
|
_editorTicks++;
|
||||||
@ -289,7 +289,7 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static void PostRender_General(CBExecutor cbExecutor, Camera camera)
|
private static void PostRender_General(ICommandBufferExecutor cbExecutor, Camera camera)
|
||||||
{
|
{
|
||||||
if (_lastEditorTicks != _editorTicks)
|
if (_lastEditorTicks != _editorTicks)
|
||||||
{
|
{
|
||||||
@ -309,25 +309,6 @@ namespace DCFApixels
|
|||||||
contextController.Prepare();
|
contextController.Prepare();
|
||||||
contextController.Render(cbExecutor);
|
contextController.Render(cbExecutor);
|
||||||
}
|
}
|
||||||
private readonly struct CBExecutor
|
|
||||||
{
|
|
||||||
public readonly ScriptableRenderContext RenderContext;
|
|
||||||
public CBExecutor(ScriptableRenderContext renderContext)
|
|
||||||
{
|
|
||||||
RenderContext = renderContext;
|
|
||||||
}
|
|
||||||
public void Execute(CommandBuffer cb)
|
|
||||||
{
|
|
||||||
if (RenderContext == default)
|
|
||||||
{
|
|
||||||
Graphics.ExecuteCommandBuffer(cb);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RenderContext.ExecuteCommandBuffer(cb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
|
|
||||||
@ -411,7 +392,7 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
return _currenRenderContextControler;
|
return _currenRenderContextControler;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region RenderContextControler
|
#region RenderContextControler
|
||||||
@ -567,7 +548,7 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
|
|
||||||
[IN(LINE)]
|
[IN(LINE)]
|
||||||
public void Render(CBExecutor cbExecutor)
|
public void Render(ICommandBufferExecutor cbExecutor)
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
using (_cameraMarker.Auto())
|
using (_cameraMarker.Auto())
|
||||||
@ -621,7 +602,7 @@ namespace DCFApixels
|
|||||||
public abstract int ExecuteOrder { get; }
|
public abstract int ExecuteOrder { get; }
|
||||||
public abstract int UpdateTimer(float deltaTime);
|
public abstract int UpdateTimer(float deltaTime);
|
||||||
public abstract void Prepare();
|
public abstract void Prepare();
|
||||||
public abstract void Render(CBExecutor cbExecutor);
|
public abstract void Render(ICommandBufferExecutor cbExecutor);
|
||||||
public abstract void Render_UnityGizmos();
|
public abstract void Render_UnityGizmos();
|
||||||
public abstract int RunEnd();
|
public abstract int RunEnd();
|
||||||
public abstract void Clear();
|
public abstract void Clear();
|
||||||
@ -769,7 +750,7 @@ namespace DCFApixels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
private ulong _renderLastRenderTicks = 0;
|
private ulong _renderLastRenderTicks = 0;
|
||||||
public override void Render(CBExecutor cbExecutor)
|
public override void Render(ICommandBufferExecutor cbExecutor)
|
||||||
{
|
{
|
||||||
if (_gizmos.Count <= 0) { return; }
|
if (_gizmos.Count <= 0) { return; }
|
||||||
#if DEV_MODE
|
#if DEV_MODE
|
||||||
|
43
Runtime/Internal/CommandBufferExecutors.cs
Normal file
43
Runtime/Internal/CommandBufferExecutors.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Rendering;
|
||||||
|
|
||||||
|
namespace DCFApixels.DebugXCore.Internal
|
||||||
|
{
|
||||||
|
internal interface ICommandBufferExecutor
|
||||||
|
{
|
||||||
|
void Execute(CommandBuffer cb);
|
||||||
|
}
|
||||||
|
internal class CommandBufferExecutorSRP : ICommandBufferExecutor
|
||||||
|
{
|
||||||
|
[ThreadStatic]
|
||||||
|
private static CommandBufferExecutorSRP _instance = new CommandBufferExecutorSRP();
|
||||||
|
public static CommandBufferExecutorSRP GetInstance(ScriptableRenderContext context)
|
||||||
|
{
|
||||||
|
if (_instance == null) { _instance = new CommandBufferExecutorSRP(); }
|
||||||
|
_instance.RenderContext = context;
|
||||||
|
return _instance;
|
||||||
|
}
|
||||||
|
public ScriptableRenderContext RenderContext;
|
||||||
|
private CommandBufferExecutorSRP() { }
|
||||||
|
public void Execute(CommandBuffer cb)
|
||||||
|
{
|
||||||
|
RenderContext.ExecuteCommandBuffer(cb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internal class CommandBufferExecutorBRP : ICommandBufferExecutor
|
||||||
|
{
|
||||||
|
[ThreadStatic]
|
||||||
|
private static CommandBufferExecutorBRP _instance = new CommandBufferExecutorBRP();
|
||||||
|
public static CommandBufferExecutorBRP GetInstance()
|
||||||
|
{
|
||||||
|
if (_instance == null) { _instance = new CommandBufferExecutorBRP(); }
|
||||||
|
return _instance;
|
||||||
|
}
|
||||||
|
private CommandBufferExecutorBRP() { }
|
||||||
|
public void Execute(CommandBuffer cb)
|
||||||
|
{
|
||||||
|
Graphics.ExecuteCommandBuffer(cb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user