Add URP RenderGraph API compatibility surface
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using XCEngine;
|
||||
using XCEngine.Rendering;
|
||||
using XCEngine.Rendering.RenderGraphModule;
|
||||
|
||||
namespace XCEngine.Rendering.Universal
|
||||
{
|
||||
@@ -81,6 +83,19 @@ namespace XCEngine.Rendering.Universal
|
||||
|
||||
try
|
||||
{
|
||||
if (HasPublicRenderGraphOverride())
|
||||
{
|
||||
using (ContextContainer frameData =
|
||||
new ContextContainer())
|
||||
{
|
||||
RecordRenderGraph(
|
||||
new RenderGraph(context),
|
||||
frameData);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return RecordRenderGraph(
|
||||
context,
|
||||
passRenderingData);
|
||||
@@ -114,6 +129,12 @@ namespace XCEngine.Rendering.Universal
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void RecordRenderGraph(
|
||||
RenderGraph renderGraph,
|
||||
ContextContainer frameData)
|
||||
{
|
||||
}
|
||||
|
||||
protected virtual bool RecordRenderGraph(
|
||||
ScriptableRenderContext context,
|
||||
RenderingData renderingData)
|
||||
@@ -402,6 +423,24 @@ namespace XCEngine.Rendering.Universal
|
||||
rhs.renderPassEvent);
|
||||
}
|
||||
|
||||
private bool HasPublicRenderGraphOverride()
|
||||
{
|
||||
MethodInfo method = GetType().GetMethod(
|
||||
nameof(RecordRenderGraph),
|
||||
BindingFlags.Instance |
|
||||
BindingFlags.Public,
|
||||
null,
|
||||
new Type[]
|
||||
{
|
||||
typeof(RenderGraph),
|
||||
typeof(ContextContainer)
|
||||
},
|
||||
null);
|
||||
return method != null &&
|
||||
method.DeclaringType !=
|
||||
typeof(ScriptableRenderPass);
|
||||
}
|
||||
|
||||
private static bool TryResolveDefaultFullscreenTargets(
|
||||
ScriptableRenderContext context,
|
||||
out RenderGraphTextureHandle sourceColor,
|
||||
|
||||
Reference in New Issue
Block a user