Move scene viewport post effects into editor passes
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
#include "Passes/SceneViewportSelectionOutlinePass.h"
|
||||
|
||||
namespace XCEngine {
|
||||
namespace Editor {
|
||||
|
||||
namespace {
|
||||
|
||||
class SceneViewportSelectionOutlinePass final : public Rendering::RenderPass {
|
||||
public:
|
||||
SceneViewportSelectionOutlinePass(
|
||||
SceneViewportSelectionOutlinePassRenderer& renderer,
|
||||
RHI::RHIResourceView* objectIdTextureView,
|
||||
std::vector<uint64_t> selectedObjectIds,
|
||||
const Rendering::Passes::ObjectIdOutlineStyle& style)
|
||||
: m_renderer(renderer)
|
||||
, m_objectIdTextureView(objectIdTextureView)
|
||||
, m_selectedObjectIds(std::move(selectedObjectIds))
|
||||
, m_style(style) {
|
||||
}
|
||||
|
||||
const char* GetName() const override {
|
||||
return "SceneViewportSelectionOutline";
|
||||
}
|
||||
|
||||
bool Execute(const Rendering::RenderPassContext& context) override {
|
||||
return m_renderer.Render(
|
||||
context.renderContext,
|
||||
context.surface,
|
||||
m_objectIdTextureView,
|
||||
m_selectedObjectIds,
|
||||
m_style);
|
||||
}
|
||||
|
||||
private:
|
||||
SceneViewportSelectionOutlinePassRenderer& m_renderer;
|
||||
RHI::RHIResourceView* m_objectIdTextureView = nullptr;
|
||||
std::vector<uint64_t> m_selectedObjectIds = {};
|
||||
Rendering::Passes::ObjectIdOutlineStyle m_style = {};
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
void SceneViewportSelectionOutlinePassRenderer::Shutdown() {
|
||||
m_outlinePass.Shutdown();
|
||||
}
|
||||
|
||||
bool SceneViewportSelectionOutlinePassRenderer::Render(
|
||||
const Rendering::RenderContext& renderContext,
|
||||
const Rendering::RenderSurface& surface,
|
||||
RHI::RHIResourceView* objectIdTextureView,
|
||||
const std::vector<uint64_t>& selectedObjectIds,
|
||||
const Rendering::Passes::ObjectIdOutlineStyle& style) {
|
||||
return m_outlinePass.Render(
|
||||
renderContext,
|
||||
surface,
|
||||
objectIdTextureView,
|
||||
selectedObjectIds,
|
||||
style);
|
||||
}
|
||||
|
||||
std::unique_ptr<Rendering::RenderPass> CreateSceneViewportSelectionOutlinePass(
|
||||
SceneViewportSelectionOutlinePassRenderer& renderer,
|
||||
RHI::RHIResourceView* objectIdTextureView,
|
||||
const std::vector<uint64_t>& selectedObjectIds,
|
||||
const Rendering::Passes::ObjectIdOutlineStyle& style) {
|
||||
return std::make_unique<SceneViewportSelectionOutlinePass>(
|
||||
renderer,
|
||||
objectIdTextureView,
|
||||
selectedObjectIds,
|
||||
style);
|
||||
}
|
||||
|
||||
} // namespace Editor
|
||||
} // namespace XCEngine
|
||||
Reference in New Issue
Block a user