Align managed render graph authoring surface

This commit is contained in:
2026-04-28 03:55:04 +08:00
parent 6b312804eb
commit a7baf16e09
9 changed files with 279 additions and 119 deletions

View File

@@ -3,8 +3,8 @@ using XCEngine;
namespace XCEngine.Rendering
{
// SRP v1 managed recording surface. Scene draws still delegate to the
// native SceneDrawBackend, and raster-pass recording is limited to the
// fullscreen PostProcess / FinalOutput stages.
// native SceneDrawBackend; RenderGraph raster authoring can record scene
// and fullscreen stages through the Unity-style managed surface.
public sealed class ScriptableRenderContext
{
private readonly ulong m_nativeHandle;
@@ -14,16 +14,16 @@ namespace XCEngine.Rendering
m_nativeHandle = nativeHandle;
}
public CameraFrameStage stage =>
internal CameraFrameStage stage =>
(CameraFrameStage)InternalCalls.Rendering_ScriptableRenderContext_GetStage(
m_nativeHandle);
public int rendererIndex =>
internal int rendererIndex =>
InternalCalls
.Rendering_ScriptableRenderContext_GetRendererIndex(
m_nativeHandle);
public ulong framePlanId =>
internal ulong framePlanId =>
InternalCalls
.Rendering_ScriptableRenderContext_GetFramePlanId(
m_nativeHandle);
@@ -33,19 +33,19 @@ namespace XCEngine.Rendering
.Rendering_ScriptableRenderContext_GetPassName(
m_nativeHandle) ?? string.Empty;
public RenderGraphTextureHandle sourceColorTexture =>
internal RenderGraphTextureHandle sourceColorTexture =>
RenderGraphTextureHandle.FromNativeIndex(
InternalCalls
.Rendering_ScriptableRenderContext_GetSourceColorTextureHandle(
m_nativeHandle));
public RenderGraphTextureHandle primaryColorTarget =>
internal RenderGraphTextureHandle primaryColorTarget =>
RenderGraphTextureHandle.FromNativeIndex(
InternalCalls
.Rendering_ScriptableRenderContext_GetPrimaryColorTargetHandle(
m_nativeHandle));
public RenderGraphTextureHandle depthTarget =>
internal RenderGraphTextureHandle depthTarget =>
RenderGraphTextureHandle.FromNativeIndex(
InternalCalls
.Rendering_ScriptableRenderContext_GetDepthTargetHandle(
@@ -142,7 +142,7 @@ namespace XCEngine.Rendering
RendererListType.Transparent));
}
public RenderGraphTextureHandle CreateTransientTexture(
internal RenderGraphTextureHandle CreateTransientTexture(
string name,
RenderGraphTextureDesc desc)
{
@@ -154,7 +154,7 @@ namespace XCEngine.Rendering
ref desc));
}
public RenderGraphTextureHandle
internal RenderGraphTextureHandle
CreateFullscreenTransientColorTexture(
string name)
{
@@ -165,7 +165,7 @@ namespace XCEngine.Rendering
name));
}
public RenderGraphTextureHandle
internal RenderGraphTextureHandle
CreateFullscreenTransientDepthTexture(
string name)
{
@@ -193,10 +193,10 @@ namespace XCEngine.Rendering
ref renderStateBlock));
}
// Public RenderGraph raster authoring entry point. Built-in fullscreen
// kernels are internal URP implementation details, not public context
// shortcuts.
public RenderGraphRasterPassBuilder AddRasterPass(
// Internal backing entry point for public RenderGraph raster authoring.
// Built-in fullscreen kernels are URP implementation details, not
// public context shortcuts.
internal RenderGraphRasterPassBuilder AddRasterPass(
string passName)
{
return new RenderGraphRasterPassBuilder(

View File

@@ -31,6 +31,48 @@ namespace XCEngine.Rendering.RenderGraphModule
return m_context.AddRasterPass(passName);
}
public XCEngine.Rendering.RenderGraphTextureHandle
CreateTransientTexture(
string name,
XCEngine.Rendering.RenderGraphTextureDesc desc)
{
if (m_context == null)
{
throw new InvalidOperationException(
"RenderGraph is not bound to a recording context.");
}
return m_context.CreateTransientTexture(
name,
desc);
}
public XCEngine.Rendering.RenderGraphTextureHandle
CreateFullscreenTransientColorTexture(
string name)
{
if (m_context == null)
{
throw new InvalidOperationException(
"RenderGraph is not bound to a recording context.");
}
return m_context.CreateFullscreenTransientColorTexture(name);
}
public XCEngine.Rendering.RenderGraphTextureHandle
CreateFullscreenTransientDepthTexture(
string name)
{
if (m_context == null)
{
throw new InvalidOperationException(
"RenderGraph is not bound to a recording context.");
}
return m_context.CreateFullscreenTransientDepthTexture(name);
}
public XCEngine.Rendering.RendererListHandle
CreateRendererList(
XCEngine.Rendering.RendererListDesc rendererListDesc)