Align URP scene drawing with RenderGraph renderer lists
This commit is contained in:
@@ -30,5 +30,53 @@ namespace XCEngine.Rendering.RenderGraphModule
|
||||
|
||||
return m_context.AddRasterPass(passName);
|
||||
}
|
||||
|
||||
public XCEngine.Rendering.RendererListHandle
|
||||
CreateRendererList(
|
||||
XCEngine.Rendering.RendererListDesc rendererListDesc)
|
||||
{
|
||||
return CreateRendererList(
|
||||
rendererListDesc,
|
||||
XCEngine.Rendering.DrawingSettings.CreateDefault());
|
||||
}
|
||||
|
||||
public XCEngine.Rendering.RendererListHandle
|
||||
CreateRendererList(
|
||||
XCEngine.Rendering.RendererListDesc rendererListDesc,
|
||||
XCEngine.Rendering.DrawingSettings drawingSettings)
|
||||
{
|
||||
if (m_context == null)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"RenderGraph is not bound to a recording context.");
|
||||
}
|
||||
|
||||
return m_context.CreateRendererList(
|
||||
rendererListDesc,
|
||||
drawingSettings);
|
||||
}
|
||||
|
||||
internal string passName =>
|
||||
m_context != null
|
||||
? m_context.passName
|
||||
: string.Empty;
|
||||
|
||||
public XCEngine.Rendering.RenderGraphTextureHandle
|
||||
sourceColorTexture =>
|
||||
m_context != null
|
||||
? m_context.sourceColorTexture
|
||||
: default;
|
||||
|
||||
public XCEngine.Rendering.RenderGraphTextureHandle
|
||||
primaryColorTarget =>
|
||||
m_context != null
|
||||
? m_context.primaryColorTarget
|
||||
: default;
|
||||
|
||||
public XCEngine.Rendering.RenderGraphTextureHandle
|
||||
depthTarget =>
|
||||
m_context != null
|
||||
? m_context.depthTarget
|
||||
: default;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ namespace XCEngine.Rendering
|
||||
new List<RenderGraphTextureHandle>();
|
||||
private readonly List<RenderGraphTextureHandle> m_readDepthTextures =
|
||||
new List<RenderGraphTextureHandle>();
|
||||
private readonly List<RendererListHandle> m_rendererLists =
|
||||
new List<RendererListHandle>();
|
||||
private readonly List<TextureBindingRequest> m_textureBindings =
|
||||
new List<TextureBindingRequest>();
|
||||
private readonly List<RenderGraphTextureHandle> m_colorAttachments =
|
||||
@@ -123,6 +125,27 @@ namespace XCEngine.Rendering
|
||||
return this;
|
||||
}
|
||||
|
||||
public RenderGraphRasterPassBuilder UseRendererList(
|
||||
RendererListHandle rendererList)
|
||||
{
|
||||
if (!rendererList.isValid)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_rendererLists.Count; ++i)
|
||||
{
|
||||
if (m_rendererLists[i].nativeIndex ==
|
||||
rendererList.nativeIndex)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
m_rendererLists.Add(rendererList);
|
||||
return this;
|
||||
}
|
||||
|
||||
public RenderGraphRasterPassBuilder SetColorAttachment(
|
||||
RenderGraphTextureHandle texture,
|
||||
int index = 0)
|
||||
@@ -309,6 +332,25 @@ namespace XCEngine.Rendering
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_rendererLists.Count; ++i)
|
||||
{
|
||||
RendererListHandle rendererList =
|
||||
m_rendererLists[i];
|
||||
if (!rendererList.isValid)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!InternalCalls
|
||||
.Rendering_ScriptableRenderContext_AddRasterPassRendererList(
|
||||
m_context.nativeHandle,
|
||||
nativePassHandle,
|
||||
rendererList.nativeIndex))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_colorAttachments.Count; ++i)
|
||||
{
|
||||
RenderGraphTextureHandle colorAttachment =
|
||||
|
||||
Reference in New Issue
Block a user