refactor(rendering): formalize camera frame stage contracts
This commit is contained in:
@@ -102,31 +102,31 @@ bool CameraFramePlan::IsFinalOutputStageValid() const {
|
||||
}
|
||||
|
||||
bool CameraFramePlan::HasFrameStage(CameraFrameStage stage) const {
|
||||
switch (stage) {
|
||||
case CameraFrameStage::PreScenePasses:
|
||||
return preScenePasses != nullptr;
|
||||
case CameraFrameStage::ShadowCaster:
|
||||
return shadowCaster.IsRequested() || directionalShadow.IsValid();
|
||||
case CameraFrameStage::DepthOnly:
|
||||
return request.depthOnly.IsRequested();
|
||||
case CameraFrameStage::MainScene:
|
||||
if (stage == CameraFrameStage::MainScene) {
|
||||
return true;
|
||||
case CameraFrameStage::PostProcess:
|
||||
return postProcess.IsRequested();
|
||||
case CameraFrameStage::FinalOutput:
|
||||
return finalOutput.IsRequested();
|
||||
case CameraFrameStage::ObjectId:
|
||||
}
|
||||
|
||||
if (IsCameraFrameSequenceStage(stage)) {
|
||||
return GetPassSequence(stage) != nullptr;
|
||||
}
|
||||
|
||||
switch (GetCameraFrameStageRequestKind(stage)) {
|
||||
case CameraFrameStageRequestKind::ShadowCaster:
|
||||
return shadowCaster.IsRequested() || directionalShadow.IsValid();
|
||||
case CameraFrameStageRequestKind::DepthOnly:
|
||||
return request.depthOnly.IsRequested();
|
||||
case CameraFrameStageRequestKind::ObjectId:
|
||||
return request.objectId.IsRequested();
|
||||
case CameraFrameStage::PostScenePasses:
|
||||
return postScenePasses != nullptr;
|
||||
case CameraFrameStage::OverlayPasses:
|
||||
return overlayPasses != nullptr;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
RenderPassSequence* CameraFramePlan::GetPassSequence(CameraFrameStage stage) const {
|
||||
if (!IsCameraFrameSequenceStage(stage)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
switch (stage) {
|
||||
case CameraFrameStage::PreScenePasses:
|
||||
return preScenePasses;
|
||||
@@ -144,10 +144,10 @@ RenderPassSequence* CameraFramePlan::GetPassSequence(CameraFrameStage stage) con
|
||||
}
|
||||
|
||||
const ScenePassRenderRequest* CameraFramePlan::GetScenePassRequest(CameraFrameStage stage) const {
|
||||
switch (stage) {
|
||||
case CameraFrameStage::ShadowCaster:
|
||||
switch (GetCameraFrameStageRequestKind(stage)) {
|
||||
case CameraFrameStageRequestKind::ShadowCaster:
|
||||
return &shadowCaster;
|
||||
case CameraFrameStage::DepthOnly:
|
||||
case CameraFrameStageRequestKind::DepthOnly:
|
||||
return &request.depthOnly;
|
||||
default:
|
||||
return nullptr;
|
||||
@@ -155,7 +155,10 @@ const ScenePassRenderRequest* CameraFramePlan::GetScenePassRequest(CameraFrameSt
|
||||
}
|
||||
|
||||
const ObjectIdRenderRequest* CameraFramePlan::GetObjectIdRequest(CameraFrameStage stage) const {
|
||||
return stage == CameraFrameStage::ObjectId ? &request.objectId : nullptr;
|
||||
return GetCameraFrameStageRequestKind(stage) ==
|
||||
CameraFrameStageRequestKind::ObjectId
|
||||
? &request.objectId
|
||||
: nullptr;
|
||||
}
|
||||
|
||||
const RenderSurface& CameraFramePlan::GetMainSceneSurface() const {
|
||||
|
||||
Reference in New Issue
Block a user