feat(srp): formalize scene recording and draw entrypoints

This commit is contained in:
2026-04-20 18:54:04 +08:00
parent b521616e27
commit 3df87e941c
20 changed files with 1054 additions and 181 deletions

View File

@@ -4515,22 +4515,6 @@ InternalCall_Rendering_ScriptableRenderContext_GetFinalColorHasCameraOverrides(
: 0;
}
mono_bool InternalCall_Rendering_ScriptableRenderContext_RecordScene(
uint64_t nativeHandle) {
ManagedScriptableRenderContextState* const state =
FindManagedScriptableRenderContextState(nativeHandle);
if (state == nullptr ||
state->graphContext == nullptr ||
state->sceneRecorder == nullptr ||
state->stage != Rendering::CameraFrameStage::MainScene) {
return 0;
}
return state->sceneRecorder->RecordDefaultScene()
? 1
: 0;
}
mono_bool
InternalCall_Rendering_ScriptableRenderContext_RecordScenePhase(
uint64_t nativeHandle,
@@ -4569,6 +4553,31 @@ InternalCall_Rendering_ScriptableRenderContext_RecordSceneInjectionPoint(
: 0;
}
mono_bool
InternalCall_Rendering_ScriptableRenderContext_DrawRenderers(
uint64_t nativeHandle,
int32_t scenePhase,
int32_t rendererListType) {
ManagedScriptableRenderContextState* const state =
FindManagedScriptableRenderContextState(nativeHandle);
if (state == nullptr ||
state->graphContext == nullptr ||
state->sceneRecorder == nullptr ||
state->stage != Rendering::CameraFrameStage::MainScene) {
return 0;
}
Rendering::DrawSettings drawSettings = {};
drawSettings.scenePhase =
static_cast<Rendering::ScenePhase>(scenePhase);
drawSettings.rendererListType =
static_cast<Rendering::RendererListType>(rendererListType);
return state->sceneRecorder->RecordSceneDrawSettings(
drawSettings)
? 1
: 0;
}
int32_t
InternalCall_Rendering_CameraRenderRequestContext_GetRenderedBaseCameraCount(
uint64_t nativeHandle) {
@@ -4913,8 +4922,8 @@ void RegisterInternalCalls() {
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_GetFinalColorScale", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_GetFinalColorScale));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_GetFinalColorHasPipelineDefaults", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_GetFinalColorHasPipelineDefaults));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_GetFinalColorHasCameraOverrides", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_GetFinalColorHasCameraOverrides));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_RecordScene", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordScene));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_RecordScenePhase", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordScenePhase));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_DrawRenderers", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_DrawRenderers));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_RecordSceneInjectionPoint", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordSceneInjectionPoint));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_IsStageRequested", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_IsStageRequested));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_GetStageColorSource", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_GetStageColorSource));