refactor(srp): move core stage defaults into universal renderer
This commit is contained in:
@@ -60,6 +60,9 @@ CameraFramePlan CameraFramePlan::FromRequest(const CameraRenderRequest& request)
|
||||
plan.preScenePasses = request.preScenePasses;
|
||||
plan.postScenePasses = request.postScenePasses;
|
||||
plan.overlayPasses = request.overlayPasses;
|
||||
plan.shadowCasterStage.requested =
|
||||
request.shadowCaster.IsRequested() ||
|
||||
request.directionalShadow.IsValid();
|
||||
plan.colorChain.postProcess.requested = request.postProcess.IsRequested();
|
||||
plan.colorChain.finalOutput.requested = request.finalOutput.IsRequested();
|
||||
return plan;
|
||||
@@ -210,6 +213,25 @@ void CameraFramePlan::ClearFullscreenStage(
|
||||
RefreshGraphManagedSceneSurfaceState();
|
||||
}
|
||||
|
||||
bool CameraFramePlan::RequestShadowCasterStage(
|
||||
bool explicitlyConfigured) {
|
||||
shadowCasterStage.requested =
|
||||
shadowCaster.IsRequested() ||
|
||||
directionalShadow.IsValid();
|
||||
shadowCasterStage.explicitlyConfigured =
|
||||
shadowCasterStage.explicitlyConfigured ||
|
||||
explicitlyConfigured;
|
||||
return shadowCasterStage.requested;
|
||||
}
|
||||
|
||||
void CameraFramePlan::ClearShadowCasterStage(
|
||||
bool explicitlyConfigured) {
|
||||
shadowCasterStage.requested = false;
|
||||
shadowCasterStage.explicitlyConfigured =
|
||||
shadowCasterStage.explicitlyConfigured ||
|
||||
explicitlyConfigured;
|
||||
}
|
||||
|
||||
bool CameraFramePlan::HasExplicitFullscreenStageConfiguration(
|
||||
CameraFrameStage stage) const {
|
||||
if (const CameraFrameFullscreenStagePlan* fullscreenStagePlan =
|
||||
@@ -221,6 +243,14 @@ bool CameraFramePlan::HasExplicitFullscreenStageConfiguration(
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CameraFramePlan::HasExplicitShadowCasterStageConfiguration() const {
|
||||
return shadowCasterStage.explicitlyConfigured;
|
||||
}
|
||||
|
||||
bool CameraFramePlan::IsShadowCasterStageRequested() const {
|
||||
return shadowCasterStage.requested;
|
||||
}
|
||||
|
||||
bool CameraFramePlan::IsPostProcessStageValid() const {
|
||||
if (!IsFullscreenStageRequested(CameraFrameStage::PostProcess)) {
|
||||
return true;
|
||||
@@ -286,7 +316,7 @@ bool CameraFramePlan::HasFrameStage(CameraFrameStage stage) const {
|
||||
|
||||
switch (GetCameraFrameStageRequestKind(stage)) {
|
||||
case CameraFrameStageRequestKind::ShadowCaster:
|
||||
return shadowCaster.IsRequested() || directionalShadow.IsValid();
|
||||
return IsShadowCasterStageRequested();
|
||||
case CameraFrameStageRequestKind::DepthOnly:
|
||||
return request.depthOnly.IsRequested();
|
||||
case CameraFrameStageRequestKind::ObjectId:
|
||||
|
||||
@@ -11,6 +11,10 @@ bool DirectionalShadowRuntime::ResolveExecutionState(
|
||||
const RenderPipeline& pipeline,
|
||||
DirectionalShadowExecutionState& outShadowState) {
|
||||
outShadowState = {};
|
||||
if (!plan.IsShadowCasterStageRequested()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
outShadowState.shadowCasterRequest = plan.shadowCaster;
|
||||
|
||||
if (outShadowState.shadowCasterRequest.IsRequested()) {
|
||||
|
||||
@@ -5882,6 +5882,29 @@ void InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_ClearFullscr
|
||||
state->plan->ClearFullscreenStage(resolvedStage, true);
|
||||
}
|
||||
|
||||
mono_bool
|
||||
InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_RequestShadowCasterStage(
|
||||
uint64_t nativeHandle) {
|
||||
ManagedScriptableRenderPipelinePlanningContextState* const state =
|
||||
FindManagedScriptableRenderPipelinePlanningContextState(nativeHandle);
|
||||
return state != nullptr &&
|
||||
state->plan != nullptr &&
|
||||
state->plan->RequestShadowCasterStage(true)
|
||||
? 1
|
||||
: 0;
|
||||
}
|
||||
|
||||
void InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_ClearShadowCasterStage(
|
||||
uint64_t nativeHandle) {
|
||||
ManagedScriptableRenderPipelinePlanningContextState* const state =
|
||||
FindManagedScriptableRenderPipelinePlanningContextState(nativeHandle);
|
||||
if (state == nullptr || state->plan == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
state->plan->ClearShadowCasterStage(true);
|
||||
}
|
||||
|
||||
mono_bool
|
||||
InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_GetHasFinalColorProcessing(
|
||||
uint64_t nativeHandle) {
|
||||
@@ -6098,6 +6121,8 @@ void RegisterInternalCalls() {
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_GetStageUsesGraphManagedOutputColor", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_GetStageUsesGraphManagedOutputColor));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_RequestFullscreenStage", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_RequestFullscreenStage));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_ClearFullscreenStage", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_ClearFullscreenStage));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_RequestShadowCasterStage", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_RequestShadowCasterStage));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_ClearShadowCasterStage", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_ClearShadowCasterStage));
|
||||
mono_add_internal_call("XCEngine.InternalCalls::Rendering_ScriptableRenderPipelinePlanningContext_GetHasFinalColorProcessing", reinterpret_cast<const void*>(&InternalCall_Rendering_ScriptableRenderPipelinePlanningContext_GetHasFinalColorProcessing));
|
||||
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));
|
||||
|
||||
Reference in New Issue
Block a user