feat(srp): add drawing settings override material seam
- add a managed DrawingSettings seam for scene draw authoring - let builtin forward scene draws use an override material when provided - wire DrawObjectsPass and RenderObjectsRendererFeature through the new settings
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include "Rendering/RenderPassGraphContract.h"
|
||||
#include "Rendering/RenderPipelineStageGraphContract.h"
|
||||
#include "Resources/BuiltinResources.h"
|
||||
#include "Core/Asset/ResourceManager.h"
|
||||
#include "Scene/Scene.h"
|
||||
#include "Scripting/ScriptComponent.h"
|
||||
#include "Scripting/ScriptEngine.h"
|
||||
@@ -4590,7 +4591,8 @@ mono_bool
|
||||
InternalCall_Rendering_ScriptableRenderContext_DrawRenderersByDesc(
|
||||
uint64_t nativeHandle,
|
||||
int32_t scenePhase,
|
||||
ManagedRendererListDescData* rendererListDescData) {
|
||||
ManagedRendererListDescData* rendererListDescData,
|
||||
MonoString* overrideMaterialPath) {
|
||||
ManagedScriptableRenderContextState* const state =
|
||||
FindManagedScriptableRenderContextState(nativeHandle);
|
||||
if (state == nullptr ||
|
||||
@@ -4607,6 +4609,23 @@ InternalCall_Rendering_ScriptableRenderContext_DrawRenderersByDesc(
|
||||
drawSettings.rendererListDesc =
|
||||
*reinterpret_cast<const Rendering::RendererListDesc*>(
|
||||
rendererListDescData);
|
||||
const std::string overrideMaterialPathUtf8 =
|
||||
MonoStringToUtf8(overrideMaterialPath);
|
||||
if (!overrideMaterialPathUtf8.empty()) {
|
||||
drawSettings.overrideMaterial =
|
||||
Resources::ResourceManager::Get().Load<Resources::Material>(
|
||||
overrideMaterialPathUtf8.c_str());
|
||||
if (!drawSettings.overrideMaterial.IsValid()) {
|
||||
Debug::Logger::Get().Error(
|
||||
Debug::LogCategory::Rendering,
|
||||
(Containers::String(
|
||||
"ScriptableRenderContext DrawRenderers failed to load override material: ") +
|
||||
Containers::String(overrideMaterialPathUtf8.c_str()))
|
||||
.CStr());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return state->sceneRecorder->RecordSceneDrawSettings(
|
||||
drawSettings)
|
||||
? 1
|
||||
|
||||
Reference in New Issue
Block a user