refactor(srp): rename native scene draw substrate contract

This commit is contained in:
2026-04-21 19:06:38 +08:00
parent 01b5e0abcd
commit 8a8b72e273
15 changed files with 258 additions and 142 deletions

View File

@@ -1604,21 +1604,21 @@ public:
}
}
m_fullscreenPassPool.clear();
if (m_ownedSceneRenderer != nullptr) {
m_ownedSceneRenderer->Shutdown();
if (m_ownedSceneDrawBackend != nullptr) {
m_ownedSceneDrawBackend->Shutdown();
}
m_ownedPipelineRendererAsset.reset();
m_supportsStageContextualMethod = nullptr;
m_supportsStageMethod = nullptr;
m_recordStageMethod = nullptr;
m_resolvedPipelineHandle = 0;
m_boundSceneRenderer = nullptr;
m_boundSceneDrawBackend = nullptr;
}
void SetPipelineRenderer(
Rendering::RenderPipelineRenderer* pipelineRenderer) override {
m_boundSceneRenderer =
dynamic_cast<Rendering::NativeSceneRenderer*>(pipelineRenderer);
m_boundSceneDrawBackend =
dynamic_cast<Rendering::SceneDrawBackend*>(pipelineRenderer);
}
bool SupportsStageRenderGraph(Rendering::CameraFrameStage stage) const override {
@@ -1717,13 +1717,13 @@ public:
ManagedScriptableRenderContextState managedContextState = {};
managedContextState.stage = context.stage;
managedContextState.graphContext = &context;
Rendering::NativeSceneRenderer* const sceneRenderer =
ResolveSceneRenderer(context.rendererIndex);
if (sceneRenderer == nullptr) {
Rendering::SceneDrawBackend* const sceneDrawBackend =
ResolveSceneDrawBackend(context.rendererIndex);
if (sceneDrawBackend == nullptr) {
return false;
}
Rendering::Pipelines::NativeSceneRecorder sceneRecorder(
*sceneRenderer,
*sceneDrawBackend,
context);
managedContextState.sceneRecorder = &sceneRecorder;
const uint64_t managedContextHandle =
@@ -1904,7 +1904,7 @@ private:
return true;
}
Rendering::NativeSceneRenderer* ResolveSceneRenderer(
Rendering::SceneDrawBackend* ResolveSceneDrawBackend(
int32_t rendererIndex) {
const std::shared_ptr<const Rendering::RenderPipelineAsset>
contextualPipelineRendererAsset =
@@ -1917,30 +1917,30 @@ private:
m_assetRuntime != nullptr
? m_assetRuntime->GetPipelineRendererAsset()
: nullptr;
if (m_boundSceneRenderer != nullptr &&
if (m_boundSceneDrawBackend != nullptr &&
contextualPipelineRendererAsset != nullptr &&
contextualPipelineRendererAsset ==
defaultPipelineRendererAsset) {
return m_boundSceneRenderer;
return m_boundSceneDrawBackend;
}
if (contextualPipelineRendererAsset == nullptr) {
return nullptr;
}
if (m_ownedSceneRenderer == nullptr ||
if (m_ownedSceneDrawBackend == nullptr ||
contextualPipelineRendererAsset != m_ownedPipelineRendererAsset) {
if (m_ownedSceneRenderer != nullptr) {
m_ownedSceneRenderer->Shutdown();
if (m_ownedSceneDrawBackend != nullptr) {
m_ownedSceneDrawBackend->Shutdown();
}
m_ownedSceneRenderer =
Rendering::Internal::CreateNativeSceneRendererFromAsset(
m_ownedSceneDrawBackend =
Rendering::Internal::CreateSceneDrawBackendFromAsset(
contextualPipelineRendererAsset);
m_ownedPipelineRendererAsset =
contextualPipelineRendererAsset;
}
return m_ownedSceneRenderer.get();
return m_ownedSceneDrawBackend.get();
}
std::shared_ptr<const MonoManagedRenderPipelineAssetRuntime> m_assetRuntime;
@@ -1950,10 +1950,10 @@ private:
mutable MonoMethod* m_recordStageMethod = nullptr;
mutable uint32_t m_resolvedPipelineHandle = 0;
std::vector<std::unique_ptr<Rendering::RenderPass>> m_fullscreenPassPool = {};
Rendering::NativeSceneRenderer* m_boundSceneRenderer = nullptr;
Rendering::SceneDrawBackend* m_boundSceneDrawBackend = nullptr;
std::shared_ptr<const Rendering::RenderPipelineAsset>
m_ownedPipelineRendererAsset = nullptr;
std::unique_ptr<Rendering::NativeSceneRenderer> m_ownedSceneRenderer =
std::unique_ptr<Rendering::SceneDrawBackend> m_ownedSceneDrawBackend =
nullptr;
};