Remove scene viewport postprocess API from engine
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user