refactor(srp): move scene setup ownership into managed renderer

This commit is contained in:
2026-04-21 18:05:33 +08:00
parent 233cf25965
commit f75164a4fa
19 changed files with 623 additions and 292 deletions

View File

@@ -903,6 +903,46 @@ namespace XCEngine
Rendering_CameraRenderRequestContext_ClearDirectionalShadow(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern int
Rendering_RenderSceneSetupContext_GetRendererIndex(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_RenderSceneSetupContext_GetIsConfigured(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_RenderSceneSetupContext_UseDefaultSceneSetup(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_RenderSceneSetupContext_UseDefaultEnvironment(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_RenderSceneSetupContext_UseDefaultGlobalShaderKeywords(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void
Rendering_RenderSceneSetupContext_ClearEnvironment(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void
Rendering_RenderSceneSetupContext_ClearGlobalShaderKeywords(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void
Rendering_RenderSceneSetupContext_ClearSceneSetup(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_DirectionalShadowExecutionContext_GetHasPlannedMainDirectionalShadow(

View File

@@ -0,0 +1,67 @@
namespace XCEngine.Rendering
{
public sealed class RenderSceneSetupContext
{
private readonly ulong m_nativeHandle;
internal RenderSceneSetupContext(ulong nativeHandle)
{
m_nativeHandle = nativeHandle;
}
public int rendererIndex =>
InternalCalls
.Rendering_RenderSceneSetupContext_GetRendererIndex(
m_nativeHandle);
public bool isConfigured =>
InternalCalls
.Rendering_RenderSceneSetupContext_GetIsConfigured(
m_nativeHandle);
public bool UseDefaultSceneSetup()
{
return InternalCalls
.Rendering_RenderSceneSetupContext_UseDefaultSceneSetup(
m_nativeHandle);
}
public bool UseDefaultEnvironment()
{
return InternalCalls
.Rendering_RenderSceneSetupContext_UseDefaultEnvironment(
m_nativeHandle);
}
public bool UseDefaultGlobalShaderKeywords()
{
return InternalCalls
.Rendering_RenderSceneSetupContext_UseDefaultGlobalShaderKeywords(
m_nativeHandle);
}
public void ClearEnvironment()
{
InternalCalls
.Rendering_RenderSceneSetupContext_ClearEnvironment(
m_nativeHandle);
}
public void ClearGlobalShaderKeywords()
{
InternalCalls
.Rendering_RenderSceneSetupContext_ClearGlobalShaderKeywords(
m_nativeHandle);
}
public void ClearSceneSetup()
{
InternalCalls
.Rendering_RenderSceneSetupContext_ClearSceneSetup(
m_nativeHandle);
}
internal ulong nativeHandle =>
m_nativeHandle;
}
}

View File

@@ -21,6 +21,12 @@ namespace XCEngine.Rendering
ConfigureCameraFramePlan(context);
}
internal bool ConfigureRenderSceneSetupInstance(
RenderSceneSetupContext context)
{
return ConfigureRenderSceneSetup(context);
}
internal bool ConfigureDirectionalShadowExecutionStateInstance(
DirectionalShadowExecutionContext context)
{
@@ -49,6 +55,12 @@ namespace XCEngine.Rendering
{
}
protected virtual bool ConfigureRenderSceneSetup(
RenderSceneSetupContext context)
{
return false;
}
protected virtual bool ConfigureDirectionalShadowExecutionState(
DirectionalShadowExecutionContext context)
{