Wire camera-config post-process requests
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
#include <XCEngine/Core/Asset/ResourceHandle.h>
|
||||
#include <XCEngine/Core/Math/Color.h>
|
||||
#include <XCEngine/Core/Math/Rect.h>
|
||||
#include <XCEngine/Core/Math/Vector4.h>
|
||||
#include <XCEngine/Resources/Material/Material.h>
|
||||
|
||||
#include <string>
|
||||
@@ -89,6 +90,12 @@ public:
|
||||
const Math::Color& GetSkyboxBottomColor() const { return m_skyboxBottomColor; }
|
||||
void SetSkyboxBottomColor(const Math::Color& value) { m_skyboxBottomColor = value; }
|
||||
|
||||
bool IsColorScalePostProcessEnabled() const { return m_colorScalePostProcessEnabled; }
|
||||
void SetColorScalePostProcessEnabled(bool value) { m_colorScalePostProcessEnabled = value; }
|
||||
|
||||
const Math::Vector4& GetColorScalePostProcessScale() const { return m_colorScalePostProcessScale; }
|
||||
void SetColorScalePostProcessScale(const Math::Vector4& value) { m_colorScalePostProcessScale = value; }
|
||||
|
||||
void Serialize(std::ostream& os) const override;
|
||||
void Deserialize(std::istream& is) override;
|
||||
|
||||
@@ -112,6 +119,8 @@ private:
|
||||
Math::Color m_skyboxTopColor = Math::Color(0.18f, 0.36f, 0.74f, 1.0f);
|
||||
Math::Color m_skyboxHorizonColor = Math::Color(0.78f, 0.84f, 0.92f, 1.0f);
|
||||
Math::Color m_skyboxBottomColor = Math::Color(0.92f, 0.93f, 0.95f, 1.0f);
|
||||
bool m_colorScalePostProcessEnabled = false;
|
||||
Math::Vector4 m_colorScalePostProcessScale = Math::Vector4::One();
|
||||
};
|
||||
|
||||
} // namespace Components
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <XCEngine/Rendering/Planning/CameraRenderRequest.h>
|
||||
#include <XCEngine/Rendering/Planning/SceneRenderRequestPlanner.h>
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
namespace XCEngine {
|
||||
@@ -15,13 +16,14 @@ class Scene;
|
||||
namespace Rendering {
|
||||
|
||||
class RenderPipelineAsset;
|
||||
class FullscreenPassSurfaceCache;
|
||||
|
||||
class SceneRenderer {
|
||||
public:
|
||||
SceneRenderer();
|
||||
explicit SceneRenderer(std::unique_ptr<RenderPipeline> pipeline);
|
||||
explicit SceneRenderer(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
|
||||
~SceneRenderer() = default;
|
||||
~SceneRenderer();
|
||||
|
||||
void SetPipeline(std::unique_ptr<RenderPipeline> pipeline);
|
||||
void SetPipelineAsset(std::shared_ptr<const RenderPipelineAsset> pipelineAsset);
|
||||
@@ -32,7 +34,7 @@ public:
|
||||
const Components::Scene& scene,
|
||||
Components::CameraComponent* overrideCamera,
|
||||
const RenderContext& context,
|
||||
const RenderSurface& surface) const;
|
||||
const RenderSurface& surface);
|
||||
|
||||
bool Render(const CameraRenderRequest& request);
|
||||
bool Render(const std::vector<CameraRenderRequest>& requests);
|
||||
@@ -43,8 +45,15 @@ public:
|
||||
const RenderSurface& surface);
|
||||
|
||||
private:
|
||||
void PrepareOwnedCameraPostProcessState(size_t requestCount);
|
||||
void AttachCameraPostProcessRequests(
|
||||
const RenderContext& context,
|
||||
std::vector<CameraRenderRequest>& requests);
|
||||
|
||||
SceneRenderRequestPlanner m_requestPlanner;
|
||||
CameraRenderer m_cameraRenderer;
|
||||
std::vector<std::unique_ptr<RenderPassSequence>> m_ownedPostProcessSequences;
|
||||
std::vector<std::unique_ptr<FullscreenPassSurfaceCache>> m_ownedPostProcessSourceSurfaces;
|
||||
};
|
||||
|
||||
} // namespace Rendering
|
||||
|
||||
Reference in New Issue
Block a user