refactor(rendering): remove builtin naming from managed srp context

This commit is contained in:
2026-04-18 13:30:45 +08:00
parent 2409f479e9
commit cf54014de9
5 changed files with 75 additions and 77 deletions

View File

@@ -92,9 +92,8 @@ struct ManagedScriptableRenderContextState {
uint64_t handle = 0;
Rendering::CameraFrameStage stage = Rendering::CameraFrameStage::MainScene;
const Rendering::RenderPipelineStageRenderGraphContext* graphContext = nullptr;
Rendering::Pipelines::BuiltinForwardSceneRecorder* builtinForwardSceneRecorder =
nullptr;
std::vector<Math::Vector4> queuedBuiltinColorScaleFullscreenPasses = {};
Rendering::Pipelines::BuiltinForwardSceneRecorder* sceneRecorder = nullptr;
std::vector<Math::Vector4> queuedColorScaleFullscreenPasses = {};
};
struct ManagedScriptableRenderPipelineCameraRequestContextState {
@@ -408,14 +407,14 @@ public:
void Shutdown() override {
for (std::unique_ptr<Rendering::Passes::BuiltinColorScalePostProcessPass>& pass :
m_builtinColorScalePassPool) {
m_colorScalePassPool) {
if (pass != nullptr) {
pass->Shutdown();
}
}
m_builtinColorScalePassPool.clear();
if (m_builtinSceneRenderer != nullptr) {
m_builtinSceneRenderer->Shutdown();
m_colorScalePassPool.clear();
if (m_defaultSceneRenderer != nullptr) {
m_defaultSceneRenderer->Shutdown();
}
ReleaseManagedObjects();
m_supportsStageMethod = nullptr;
@@ -467,18 +466,17 @@ public:
ManagedScriptableRenderContextState managedContextState = {};
managedContextState.stage = context.stage;
managedContextState.graphContext = &context;
if (m_builtinSceneRenderer == nullptr) {
m_builtinSceneRenderer =
if (m_defaultSceneRenderer == nullptr) {
m_defaultSceneRenderer =
Rendering::Internal::CreateDefaultNativeSceneRenderer();
}
if (m_builtinSceneRenderer == nullptr) {
if (m_defaultSceneRenderer == nullptr) {
return false;
}
Rendering::Pipelines::BuiltinForwardSceneRecorder builtinForwardSceneRecorder(
*m_builtinSceneRenderer,
Rendering::Pipelines::BuiltinForwardSceneRecorder sceneRecorder(
*m_defaultSceneRenderer,
context);
managedContextState.builtinForwardSceneRecorder =
&builtinForwardSceneRecorder;
managedContextState.sceneRecorder = &sceneRecorder;
const uint64_t managedContextHandle =
RegisterManagedScriptableRenderContextState(managedContextState);
MonoObject* const managedContextObject =
@@ -570,29 +568,29 @@ private:
bool FlushManagedFullscreenPasses(
const Rendering::RenderPipelineStageRenderGraphContext& context,
const ManagedScriptableRenderContextState& managedContextState) {
if (managedContextState.queuedBuiltinColorScaleFullscreenPasses.empty()) {
if (managedContextState.queuedColorScaleFullscreenPasses.empty()) {
return true;
}
if (!Rendering::IsCameraFrameFullscreenSequenceStage(context.stage)) {
return false;
}
while (m_builtinColorScalePassPool.size() <
managedContextState.queuedBuiltinColorScaleFullscreenPasses.size()) {
m_builtinColorScalePassPool.push_back(
while (m_colorScalePassPool.size() <
managedContextState.queuedColorScaleFullscreenPasses.size()) {
m_colorScalePassPool.push_back(
std::make_unique<Rendering::Passes::BuiltinColorScalePostProcessPass>());
}
std::vector<Rendering::RenderPass*> passes = {};
passes.reserve(
managedContextState.queuedBuiltinColorScaleFullscreenPasses.size());
managedContextState.queuedColorScaleFullscreenPasses.size());
for (size_t passIndex = 0u;
passIndex < managedContextState.queuedBuiltinColorScaleFullscreenPasses.size();
passIndex < managedContextState.queuedColorScaleFullscreenPasses.size();
++passIndex) {
Rendering::Passes::BuiltinColorScalePostProcessPass* const pass =
m_builtinColorScalePassPool[passIndex].get();
m_colorScalePassPool[passIndex].get();
pass->SetColorScale(
managedContextState.queuedBuiltinColorScaleFullscreenPasses[passIndex]);
managedContextState.queuedColorScaleFullscreenPasses[passIndex]);
passes.push_back(pass);
}
@@ -608,8 +606,8 @@ private:
mutable MonoMethod* m_recordStageMethod = nullptr;
mutable bool m_pipelineCreationAttempted = false;
std::vector<std::unique_ptr<Rendering::Passes::BuiltinColorScalePostProcessPass>>
m_builtinColorScalePassPool = {};
std::unique_ptr<Rendering::NativeSceneRenderer> m_builtinSceneRenderer = nullptr;
m_colorScalePassPool = {};
std::unique_ptr<Rendering::NativeSceneRenderer> m_defaultSceneRenderer = nullptr;
};
std::unique_ptr<Rendering::RenderPipelineStageRecorder>
@@ -2568,62 +2566,62 @@ int32_t InternalCall_Rendering_ScriptableRenderContext_GetStage(
: static_cast<int32_t>(Rendering::CameraFrameStage::MainScene);
}
mono_bool InternalCall_Rendering_ScriptableRenderContext_RecordBuiltinForwardMainScene(
mono_bool InternalCall_Rendering_ScriptableRenderContext_RecordScene(
uint64_t nativeHandle) {
ManagedScriptableRenderContextState* const state =
FindManagedScriptableRenderContextState(nativeHandle);
if (state == nullptr ||
state->graphContext == nullptr ||
state->builtinForwardSceneRecorder == nullptr ||
state->sceneRecorder == nullptr ||
state->stage != Rendering::CameraFrameStage::MainScene) {
return 0;
}
return state->builtinForwardSceneRecorder->RecordDefaultScene()
return state->sceneRecorder->RecordDefaultScene()
? 1
: 0;
}
mono_bool
InternalCall_Rendering_ScriptableRenderContext_RecordBuiltinForwardScenePhase(
InternalCall_Rendering_ScriptableRenderContext_RecordScenePhase(
uint64_t nativeHandle,
int32_t scenePhase) {
ManagedScriptableRenderContextState* const state =
FindManagedScriptableRenderContextState(nativeHandle);
if (state == nullptr ||
state->graphContext == nullptr ||
state->builtinForwardSceneRecorder == nullptr ||
state->sceneRecorder == nullptr ||
state->stage != Rendering::CameraFrameStage::MainScene) {
return 0;
}
return state->builtinForwardSceneRecorder->RecordScenePhase(
return state->sceneRecorder->RecordScenePhase(
static_cast<Rendering::ScenePhase>(scenePhase))
? 1
: 0;
}
mono_bool
InternalCall_Rendering_ScriptableRenderContext_RecordBuiltinForwardInjectionPoint(
InternalCall_Rendering_ScriptableRenderContext_RecordSceneInjectionPoint(
uint64_t nativeHandle,
int32_t injectionPoint) {
ManagedScriptableRenderContextState* const state =
FindManagedScriptableRenderContextState(nativeHandle);
if (state == nullptr ||
state->graphContext == nullptr ||
state->builtinForwardSceneRecorder == nullptr ||
state->sceneRecorder == nullptr ||
state->stage != Rendering::CameraFrameStage::MainScene) {
return 0;
}
return state->builtinForwardSceneRecorder->RecordInjectionPoint(
return state->sceneRecorder->RecordInjectionPoint(
static_cast<Rendering::SceneRenderInjectionPoint>(injectionPoint))
? 1
: 0;
}
mono_bool
InternalCall_Rendering_ScriptableRenderContext_RecordBuiltinColorScaleFullscreenPass(
InternalCall_Rendering_ScriptableRenderContext_RecordColorScaleFullscreenPass(
uint64_t nativeHandle,
XCEngine::Math::Vector4* colorScale) {
ManagedScriptableRenderContextState* const state =
@@ -2635,7 +2633,7 @@ InternalCall_Rendering_ScriptableRenderContext_RecordBuiltinColorScaleFullscreen
return 0;
}
state->queuedBuiltinColorScaleFullscreenPasses.push_back(*colorScale);
state->queuedColorScaleFullscreenPasses.push_back(*colorScale);
return 1;
}
@@ -2873,10 +2871,10 @@ void RegisterInternalCalls() {
mono_add_internal_call("XCEngine.InternalCalls::Rendering_SetRenderPipelineAssetType", reinterpret_cast<const void*>(&InternalCall_Rendering_SetRenderPipelineAssetType));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_GetRenderPipelineAssetTypeName", reinterpret_cast<const void*>(&InternalCall_Rendering_GetRenderPipelineAssetTypeName));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_GetStage", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_GetStage));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_RecordBuiltinForwardMainScene", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordBuiltinForwardMainScene));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_RecordBuiltinForwardScenePhase", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordBuiltinForwardScenePhase));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_RecordBuiltinForwardInjectionPoint", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordBuiltinForwardInjectionPoint));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_RecordBuiltinColorScaleFullscreenPass", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordBuiltinColorScaleFullscreenPass));
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_RecordSceneInjectionPoint", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordSceneInjectionPoint));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_RecordColorScaleFullscreenPass", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordColorScaleFullscreenPass));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelineCameraRequestContext_GetRenderedBaseCameraCount", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelineCameraRequestContext_GetRenderedBaseCameraCount));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelineCameraRequestContext_GetRenderedRequestCount", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelineCameraRequestContext_GetRenderedRequestCount));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelineCameraRequestContext_GetHasDirectionalShadow", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelineCameraRequestContext_GetHasDirectionalShadow));