Align builtin and programmable render pipeline selection

This commit is contained in:
2026-04-26 15:20:30 +08:00
parent 8d56bb408a
commit f4afaf184e
15 changed files with 125 additions and 379 deletions

View File

@@ -62,10 +62,6 @@ namespace Scripting {
namespace {
constexpr const char* kManagedRenderingNamespace = "XCEngine.Rendering";
constexpr const char* kProjectDefaultRenderPipelineAssetNamespace =
"ProjectScripts";
constexpr const char* kProjectDefaultRenderPipelineAssetClassName =
"ProjectDefaultRenderPipelineAsset";
struct MonoRootState {
MonoDomain* rootDomain = nullptr;
@@ -5617,34 +5613,6 @@ InternalCall_Rendering_ScriptableRenderContext_RecordSceneInjectionPoint(
: 0;
}
mono_bool
InternalCall_Rendering_ScriptableRenderContext_RecordNativeSceneFeaturePass(
uint64_t nativeHandle,
int32_t featurePassId) {
ManagedScriptableRenderContextState* const state =
FindManagedScriptableRenderContextState(nativeHandle);
if (state == nullptr ||
state->graphContext == nullptr ||
state->sceneRecorder == nullptr ||
state->stage != Rendering::CameraFrameStage::MainScene) {
return 0;
}
const Rendering::NativeSceneFeaturePassId
resolvedFeaturePassId =
static_cast<Rendering::NativeSceneFeaturePassId>(
featurePassId);
if (resolvedFeaturePassId ==
Rendering::NativeSceneFeaturePassId::Invalid) {
return 0;
}
return state->sceneRecorder->RecordFeaturePass(
resolvedFeaturePassId)
? 1
: 0;
}
mono_bool
InternalCall_Rendering_ScriptableRenderContext_DrawRenderersByDesc(
uint64_t nativeHandle,
@@ -6609,7 +6577,6 @@ void RegisterInternalCalls() {
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_DrawRenderersByDesc", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_DrawRenderersByDesc));
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_RecordNativeSceneFeaturePass", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_RecordNativeSceneFeaturePass));
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_GetRendererIndex", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_GetRendererIndex));
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));
@@ -6823,41 +6790,6 @@ bool MonoScriptRuntime::TryGetAvailableRenderPipelineAssetClasses(
return true;
}
bool MonoScriptRuntime::TryConfigureDefaultProjectRenderPipelineAsset() {
if (!m_initialized) {
return false;
}
Rendering::GraphicsSettingsState& graphicsSettings =
Rendering::GetGraphicsSettingsState();
if (graphicsSettings
.GetConfiguredRenderPipelineAssetDescriptor()
.IsValid()) {
return false;
}
const ScriptClassDescriptor defaultAssetClass = {
m_settings.appAssemblyName,
kProjectDefaultRenderPipelineAssetNamespace,
kProjectDefaultRenderPipelineAssetClassName
};
const auto defaultAssetIt = std::find(
m_renderPipelineAssetClasses.begin(),
m_renderPipelineAssetClasses.end(),
defaultAssetClass);
if (defaultAssetIt == m_renderPipelineAssetClasses.end()) {
return false;
}
graphicsSettings.SetConfiguredRenderPipelineAssetDescriptor(
Rendering::Pipelines::ManagedRenderPipelineAssetDescriptor{
defaultAssetIt->assemblyName,
defaultAssetIt->namespaceName,
defaultAssetIt->className,
0u});
return true;
}
std::vector<std::string> MonoScriptRuntime::GetScriptClassNames(const std::string& assemblyName) const {
std::vector<ScriptClassDescriptor> classes;
if (!TryGetAvailableScriptClasses(classes)) {
@@ -6981,7 +6913,6 @@ void MonoScriptRuntime::OnRuntimeStart(Components::Scene* scene) {
m_activeScene = nullptr;
GetInternalCallDeltaTime() = 0.0f;
if (Initialize()) {
TryConfigureDefaultProjectRenderPipelineAsset();
m_activeScene = scene;
GetInternalCallScene() = scene;
}