Formalize final color policy resolution

This commit is contained in:
2026-04-06 15:55:50 +08:00
parent b6132aec4d
commit 6645d507d0
12 changed files with 765 additions and 4 deletions

View File

@@ -4,6 +4,7 @@
#include "Rendering/Caches/FullscreenPassSurfaceCache.h"
#include "Rendering/Planning/CameraPostProcessPassFactory.h"
#include "Rendering/Planning/SceneRenderRequestUtils.h"
#include "Rendering/RenderPipelineAsset.h"
namespace XCEngine {
namespace Rendering {
@@ -35,6 +36,7 @@ std::vector<CameraRenderRequest> SceneRenderer::BuildRenderRequests(
const RenderSurface& surface) {
std::vector<CameraRenderRequest> requests =
m_requestPlanner.BuildRequests(scene, overrideCamera, context, surface);
ResolveCameraFinalColorPolicies(requests);
AttachCameraPostProcessRequests(context, requests);
return requests;
}
@@ -91,6 +93,24 @@ void SceneRenderer::PrepareOwnedCameraPostProcessState(size_t requestCount) {
}
}
void SceneRenderer::ResolveCameraFinalColorPolicies(
std::vector<CameraRenderRequest>& requests) const {
const RenderPipelineAsset* pipelineAsset = GetPipelineAsset();
const FinalColorSettings pipelineDefaults =
pipelineAsset != nullptr ? pipelineAsset->GetDefaultFinalColorSettings() : FinalColorSettings();
for (CameraRenderRequest& request : requests) {
if (request.camera == nullptr) {
continue;
}
request.finalColorPolicy = ResolveFinalColorPolicy(
pipelineDefaults,
&request.camera->GetFinalColorOverrides(),
nullptr);
}
}
void SceneRenderer::AttachCameraPostProcessRequests(
const RenderContext& context,
std::vector<CameraRenderRequest>& requests) {