refactor(srp): move urp final color execution into managed feature

This commit is contained in:
2026-04-21 12:59:52 +08:00
parent 0063acadc9
commit 5bec70dcc5
12 changed files with 385 additions and 13 deletions

View File

@@ -472,6 +472,13 @@ namespace XCEngine
string shaderPassName,
ref Vector4 vectorPayload);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_ScriptableRenderContext_SetRasterPassFinalColorFullscreenExecution(
ulong nativeHandle,
ulong rasterPassHandle,
ref Rendering.FinalColorSettings settings);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_ScriptableRenderContext_CommitRasterPass(
@@ -515,6 +522,11 @@ namespace XCEngine
ulong nativeHandle,
int stage);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_ScriptableRenderPipelinePlanningContext_GetHasFinalColorProcessing(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern int
Rendering_ScriptableRenderContext_GetStageColorSource(

View File

@@ -65,5 +65,12 @@ namespace XCEngine.Rendering
m_nativeHandle,
(int)stage);
}
public bool HasFinalColorProcessing()
{
return InternalCalls
.Rendering_ScriptableRenderPipelinePlanningContext_GetHasFinalColorProcessing(
m_nativeHandle);
}
}
}

View File

@@ -8,7 +8,8 @@ namespace XCEngine.Rendering
{
None = 0,
ColorScaleFullscreen = 1,
ShaderVectorFullscreen = 2
ShaderVectorFullscreen = 2,
FinalColorFullscreen = 3
}
public sealed class RenderGraphRasterPassBuilder
@@ -23,6 +24,7 @@ namespace XCEngine.Rendering
private Vector4 m_vectorPayload;
private string m_shaderPath = string.Empty;
private string m_shaderPassName = string.Empty;
private FinalColorSettings m_finalColorSettings;
private RenderGraphRasterPassExecutionKind m_executionKind;
private bool m_finalized;
@@ -53,6 +55,19 @@ namespace XCEngine.Rendering
return this;
}
public RenderGraphRasterPassBuilder
SetFinalColorFullscreenExecution(
FinalColorSettings settings)
{
m_executionKind =
RenderGraphRasterPassExecutionKind
.FinalColorFullscreen;
m_finalColorSettings = settings;
m_shaderPath = string.Empty;
m_shaderPassName = string.Empty;
return this;
}
public RenderGraphRasterPassBuilder UseTexture(
RenderGraphTextureHandle texture)
{
@@ -212,6 +227,15 @@ namespace XCEngine.Rendering
m_shaderPassName,
ref m_vectorPayload);
break;
case RenderGraphRasterPassExecutionKind
.FinalColorFullscreen:
configuredExecution =
InternalCalls
.Rendering_ScriptableRenderContext_SetRasterPassFinalColorFullscreenExecution(
m_context.nativeHandle,
nativePassHandle,
ref m_finalColorSettings);
break;
default:
configuredExecution = false;
break;