Remove scene viewport postprocess API from engine

This commit is contained in:
2026-04-03 15:26:17 +08:00
parent 7cc4aa3b45
commit e8f64407ba
13 changed files with 20 additions and 831 deletions

View File

@@ -1,7 +1,5 @@
#pragma once
#include <XCEngine/Rendering/Passes/BuiltinInfiniteGridPass.h>
#include <XCEngine/Rendering/Passes/BuiltinObjectIdOutlinePass.h>
#include <XCEngine/Rendering/RenderPass.h>
#include <XCEngine/Rendering/RenderCameraData.h>
#include <XCEngine/Rendering/RenderContext.h>
@@ -32,24 +30,12 @@ struct ObjectIdRenderRequest {
}
};
struct BuiltinPostProcessRequest {
Passes::InfiniteGridPassData gridPassData = {};
RHI::RHIResourceView* objectIdTextureView = nullptr;
std::vector<uint64_t> selectedObjectIds = {};
Passes::ObjectIdOutlineStyle outlineStyle = {};
bool IsRequested() const {
return gridPassData.valid || !selectedObjectIds.empty();
}
};
struct CameraRenderRequest {
const Components::Scene* scene = nullptr;
Components::CameraComponent* camera = nullptr;
RenderContext context;
RenderSurface surface;
ObjectIdRenderRequest objectId;
BuiltinPostProcessRequest builtinPostProcess;
float cameraDepth = 0.0f;
uint8_t cameraStackOrder = 0;
RenderClearFlags clearFlags = RenderClearFlags::All;

View File

@@ -2,7 +2,6 @@
#include <XCEngine/Rendering/CameraRenderRequest.h>
#include <XCEngine/Rendering/ObjectIdPass.h>
#include <XCEngine/Rendering/Passes/BuiltinPostProcessPassSequenceBuilder.h>
#include <XCEngine/Rendering/RenderPipeline.h>
#include <memory>
@@ -44,7 +43,6 @@ private:
std::shared_ptr<const RenderPipelineAsset> m_pipelineAsset;
std::unique_ptr<RenderPipeline> m_pipeline;
std::unique_ptr<ObjectIdPass> m_objectIdPass;
Passes::BuiltinPostProcessPassSequenceBuilder m_builtinPostProcessBuilder;
};
} // namespace Rendering

View File

@@ -1,91 +0,0 @@
#pragma once
#include <cstdint>
#include <vector>
namespace XCEngine {
namespace Rendering {
namespace Passes {
enum class BuiltinPostProcessPassStep : uint8_t {
ColorToRenderTarget,
InfiniteGrid,
SelectionOutline,
ColorToShaderResource,
SelectionMaskDebug
};
struct BuiltinPostProcessPassPlanInput {
bool hasGridOverlay = false;
bool hasSelection = false;
bool debugSelectionMask = false;
bool hasObjectIdShaderView = false;
};
struct BuiltinPostProcessPassPlan {
bool valid = false;
std::vector<BuiltinPostProcessPassStep> steps;
};
inline BuiltinPostProcessPassPlan BuildBuiltinPostProcessPassPlan(
const BuiltinPostProcessPassPlanInput& input) {
BuiltinPostProcessPassPlan plan = {};
plan.valid = true;
if (input.debugSelectionMask) {
if (input.hasSelection && input.hasObjectIdShaderView) {
plan.steps = {
BuiltinPostProcessPassStep::ColorToRenderTarget,
BuiltinPostProcessPassStep::SelectionMaskDebug,
BuiltinPostProcessPassStep::ColorToShaderResource
};
return plan;
}
if (input.hasGridOverlay) {
plan.steps = {
BuiltinPostProcessPassStep::ColorToRenderTarget,
BuiltinPostProcessPassStep::ColorToShaderResource
};
return plan;
}
plan.valid = false;
return plan;
}
if (input.hasGridOverlay && input.hasSelection && input.hasObjectIdShaderView) {
plan.steps = {
BuiltinPostProcessPassStep::ColorToRenderTarget,
BuiltinPostProcessPassStep::InfiniteGrid,
BuiltinPostProcessPassStep::SelectionOutline,
BuiltinPostProcessPassStep::ColorToShaderResource
};
return plan;
}
if (input.hasGridOverlay) {
plan.steps = {
BuiltinPostProcessPassStep::ColorToRenderTarget,
BuiltinPostProcessPassStep::InfiniteGrid,
BuiltinPostProcessPassStep::ColorToShaderResource
};
return plan;
}
if (input.hasSelection && input.hasObjectIdShaderView) {
plan.steps = {
BuiltinPostProcessPassStep::ColorToRenderTarget,
BuiltinPostProcessPassStep::SelectionOutline,
BuiltinPostProcessPassStep::ColorToShaderResource
};
return plan;
}
plan.valid = false;
return plan;
}
} // namespace Passes
} // namespace Rendering
} // namespace XCEngine

View File

@@ -1,59 +0,0 @@
#pragma once
#include <XCEngine/Rendering/Passes/BuiltinInfiniteGridPass.h>
#include <XCEngine/Rendering/Passes/BuiltinObjectIdOutlinePass.h>
#include <XCEngine/Rendering/RenderPass.h>
#include <cstdint>
#include <vector>
namespace XCEngine {
namespace Rendering {
namespace Passes {
struct BuiltinPostProcessPassSequenceInput {
InfiniteGridPassData gridPassData = {};
RHI::RHIResourceView* objectIdTextureView = nullptr;
std::vector<uint64_t> selectedObjectIds = {};
ObjectIdOutlineStyle outlineStyle = {};
};
struct BuiltinPostProcessPassSequenceBuildResult {
bool valid = false;
bool missingObjectIdTextureViewForSelection = false;
};
class BuiltinPostProcessPassSequenceBuilder {
public:
~BuiltinPostProcessPassSequenceBuilder();
void Shutdown();
BuiltinPostProcessPassSequenceBuildResult Build(
const BuiltinPostProcessPassSequenceInput& input,
RenderPassSequence& outSequence);
private:
void AddColorToRenderTargetPass(RenderPassSequence& outSequence);
void AddInfiniteGridPass(
const InfiniteGridPassData& gridPassData,
RenderPassSequence& outSequence);
void AddSelectionOutlinePass(
RHI::RHIResourceView* objectIdTextureView,
const std::vector<uint64_t>& selectedObjectIds,
const ObjectIdOutlineStyle& outlineStyle,
RenderPassSequence& outSequence);
void AddColorToShaderResourcePass(RenderPassSequence& outSequence);
void AddSelectionMaskDebugPass(
RHI::RHIResourceView* objectIdTextureView,
const std::vector<uint64_t>& selectedObjectIds,
const ObjectIdOutlineStyle& outlineStyle,
RenderPassSequence& outSequence);
BuiltinInfiniteGridPass m_gridPass;
BuiltinObjectIdOutlinePass m_outlinePass;
};
} // namespace Passes
} // namespace Rendering
} // namespace XCEngine