Align URP scene drawing with RenderGraph renderer lists

This commit is contained in:
2026-04-28 00:03:24 +08:00
parent 6b488d5eac
commit 03967b152d
13 changed files with 908 additions and 48 deletions

View File

@@ -38,6 +38,23 @@ namespace XCEngine.Rendering
ref color);
}
public bool DrawRendererList(
RendererListHandle rendererList)
{
return m_nativeHandle != 0ul &&
rendererList.isValid &&
InternalCalls.Rendering_CommandBuffer_DrawRendererList(
m_nativeHandle,
rendererList.nativeIndex);
}
public bool DrawSkybox()
{
return m_nativeHandle != 0ul &&
InternalCalls.Rendering_CommandBuffer_DrawSkybox(
m_nativeHandle);
}
private readonly ulong m_nativeHandle;
}
}

View File

@@ -0,0 +1,29 @@
namespace XCEngine.Rendering
{
public struct RendererListHandle
{
private readonly int m_indexPlusOne;
private RendererListHandle(
int indexPlusOne)
{
m_indexPlusOne = indexPlusOne;
}
public bool isValid =>
m_indexPlusOne > 0;
internal int nativeIndex =>
m_indexPlusOne > 0
? m_indexPlusOne - 1
: -1;
internal static RendererListHandle FromNativeIndex(
int nativeIndex)
{
return nativeIndex >= 0
? new RendererListHandle(nativeIndex + 1)
: default;
}
}
}

View File

@@ -28,6 +28,11 @@ namespace XCEngine.Rendering
.Rendering_ScriptableRenderContext_GetFramePlanId(
m_nativeHandle);
internal string passName =>
InternalCalls
.Rendering_ScriptableRenderContext_GetPassName(
m_nativeHandle) ?? string.Empty;
public RenderGraphTextureHandle sourceColorTexture =>
RenderGraphTextureHandle.FromNativeIndex(
InternalCalls
@@ -171,6 +176,23 @@ namespace XCEngine.Rendering
name));
}
internal RendererListHandle CreateRendererList(
RendererListDesc rendererListDesc,
DrawingSettings drawingSettings)
{
RenderStateBlock renderStateBlock =
drawingSettings.renderStateBlock;
return RendererListHandle.FromNativeIndex(
InternalCalls
.Rendering_ScriptableRenderContext_CreateRendererList(
m_nativeHandle,
ref rendererListDesc,
drawingSettings.overrideMaterialPath ??
string.Empty,
drawingSettings.shaderPassName ?? string.Empty,
ref renderStateBlock));
}
// Public RenderGraph raster authoring entry point. Built-in fullscreen
// kernels are internal URP implementation details, not public context
// shortcuts.