feat(srp): add camera-driven universal renderer selection
This commit is contained in:
@@ -597,6 +597,8 @@ RenderPipelineStageRenderGraphContext BuildCameraFramePipelineStageRenderGraphCo
|
||||
context.plan.UsesGraphManagedOutputColor(stageState.stage);
|
||||
pipelineContext.directionalShadowPlan =
|
||||
context.plan.directionalShadow;
|
||||
pipelineContext.rendererIndex =
|
||||
context.plan.request.rendererIndex;
|
||||
return pipelineContext;
|
||||
}
|
||||
|
||||
|
||||
@@ -3908,6 +3908,16 @@ int32_t InternalCall_Rendering_ScriptableRenderContext_GetStage(
|
||||
: static_cast<int32_t>(Rendering::CameraFrameStage::MainScene);
|
||||
}
|
||||
|
||||
int32_t InternalCall_Rendering_ScriptableRenderContext_GetRendererIndex(
|
||||
uint64_t nativeHandle) {
|
||||
const ManagedScriptableRenderContextState* const state =
|
||||
FindManagedScriptableRenderContextState(nativeHandle);
|
||||
return state != nullptr &&
|
||||
state->graphContext != nullptr
|
||||
? state->graphContext->rendererIndex
|
||||
: -1;
|
||||
}
|
||||
|
||||
int32_t InternalCall_Rendering_ScriptableRenderContext_GetSourceColorTextureHandle(
|
||||
uint64_t nativeHandle) {
|
||||
const ManagedScriptableRenderContextState* const state =
|
||||
@@ -4833,6 +4843,43 @@ InternalCall_Rendering_CameraRenderRequestContext_GetRenderedRequestCount(
|
||||
: 0;
|
||||
}
|
||||
|
||||
uint64_t
|
||||
InternalCall_Rendering_CameraRenderRequestContext_GetCameraGameObjectUUID(
|
||||
uint64_t nativeHandle) {
|
||||
const ManagedCameraRenderRequestContextState* const state =
|
||||
FindManagedCameraRenderRequestContextState(nativeHandle);
|
||||
if (state == nullptr ||
|
||||
state->request == nullptr ||
|
||||
state->request->camera == nullptr ||
|
||||
state->request->camera->GetGameObject() == nullptr) {
|
||||
return 0u;
|
||||
}
|
||||
|
||||
return state->request->camera->GetGameObject()->GetUUID();
|
||||
}
|
||||
|
||||
int32_t InternalCall_Rendering_CameraRenderRequestContext_GetRendererIndex(
|
||||
uint64_t nativeHandle) {
|
||||
const ManagedCameraRenderRequestContextState* const state =
|
||||
FindManagedCameraRenderRequestContextState(nativeHandle);
|
||||
return state != nullptr &&
|
||||
state->request != nullptr
|
||||
? state->request->rendererIndex
|
||||
: -1;
|
||||
}
|
||||
|
||||
void InternalCall_Rendering_CameraRenderRequestContext_SetRendererIndex(
|
||||
uint64_t nativeHandle,
|
||||
int32_t rendererIndex) {
|
||||
ManagedCameraRenderRequestContextState* const state =
|
||||
FindManagedCameraRenderRequestContextState(nativeHandle);
|
||||
if (state == nullptr || state->request == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
state->request->rendererIndex = rendererIndex;
|
||||
}
|
||||
|
||||
mono_bool
|
||||
InternalCall_Rendering_CameraRenderRequestContext_GetHasDirectionalShadow(
|
||||
uint64_t nativeHandle) {
|
||||
@@ -4856,6 +4903,17 @@ void InternalCall_Rendering_CameraRenderRequestContext_ClearDirectionalShadow(
|
||||
state->request->directionalShadow = {};
|
||||
}
|
||||
|
||||
int32_t
|
||||
InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_GetRendererIndex(
|
||||
uint64_t nativeHandle) {
|
||||
const ManagedScriptableRenderPipelinePlanningContextState* const state =
|
||||
FindManagedScriptableRenderPipelinePlanningContextState(nativeHandle);
|
||||
return state != nullptr &&
|
||||
state->plan != nullptr
|
||||
? state->plan->request.rendererIndex
|
||||
: -1;
|
||||
}
|
||||
|
||||
mono_bool
|
||||
InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_IsStageRequested(
|
||||
uint64_t nativeHandle,
|
||||
@@ -5094,6 +5152,7 @@ void RegisterInternalCalls() {
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_SetRenderPipelineAsset", reinterpret_cast<const void*>(&InternalCall_Rendering_SetRenderPipelineAsset));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_GetRenderPipelineAsset", reinterpret_cast<const void*>(&InternalCall_Rendering_GetRenderPipelineAsset));
|
||||
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_GetRendererIndex", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_GetRendererIndex));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_GetSourceColorTextureHandle", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_GetSourceColorTextureHandle));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_GetPrimaryColorTargetHandle", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_GetPrimaryColorTargetHandle));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderContext_GetDepthTargetHandle", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderContext_GetDepthTargetHandle));
|
||||
@@ -5160,6 +5219,7 @@ 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_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));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_GetStageUsesGraphManagedOutputColor", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_GetStageUsesGraphManagedOutputColor));
|
||||
@@ -5167,6 +5227,9 @@ void RegisterInternalCalls() {
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_ClearFullscreenStage", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_ClearFullscreenStage));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_GetRenderedBaseCameraCount", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_GetRenderedBaseCameraCount));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_GetRenderedRequestCount", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_GetRenderedRequestCount));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_GetCameraGameObjectUUID", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_GetCameraGameObjectUUID));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_GetRendererIndex", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_GetRendererIndex));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_SetRendererIndex", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_SetRendererIndex));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_GetHasDirectionalShadow", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_GetHasDirectionalShadow));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_CameraRenderRequestContext_ClearDirectionalShadow", reinterpret_cast<const void*>(&InternalCall_Rendering_CameraRenderRequestContext_ClearDirectionalShadow));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user