feat(editor): persist graphics settings and shadow overrides
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <XCEngine/Components/Component.h>
|
||||
#include <XCEngine/Core/Math/Color.h>
|
||||
#include <XCEngine/Rendering/Shadow/DirectionalShadowSettings.h>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace Components {
|
||||
@@ -34,6 +35,34 @@ public:
|
||||
bool GetCastsShadows() const { return m_castsShadows; }
|
||||
void SetCastsShadows(bool value) { m_castsShadows = value; }
|
||||
|
||||
bool GetOverridesDirectionalShadowSettings() const { return m_overrideDirectionalShadowSettings; }
|
||||
void SetOverridesDirectionalShadowSettings(bool value) { m_overrideDirectionalShadowSettings = value; }
|
||||
|
||||
const Rendering::DirectionalShadowSamplingSettings& GetDirectionalShadowSamplingSettings() const {
|
||||
return m_directionalShadowSampling;
|
||||
}
|
||||
void SetDirectionalShadowSamplingSettings(const Rendering::DirectionalShadowSamplingSettings& value);
|
||||
|
||||
const Rendering::DirectionalShadowCasterBiasSettings& GetDirectionalShadowCasterBiasSettings() const {
|
||||
return m_directionalShadowCasterBias;
|
||||
}
|
||||
void SetDirectionalShadowCasterBiasSettings(const Rendering::DirectionalShadowCasterBiasSettings& value);
|
||||
|
||||
float GetDirectionalShadowReceiverDepthBias() const { return m_directionalShadowSampling.receiverDepthBias; }
|
||||
void SetDirectionalShadowReceiverDepthBias(float value);
|
||||
|
||||
float GetDirectionalShadowNormalBiasScale() const { return m_directionalShadowSampling.normalBiasScale; }
|
||||
void SetDirectionalShadowNormalBiasScale(float value);
|
||||
|
||||
float GetDirectionalShadowStrength() const { return m_directionalShadowSampling.shadowStrength; }
|
||||
void SetDirectionalShadowStrength(float value);
|
||||
|
||||
float GetDirectionalShadowDepthBiasFactor() const { return m_directionalShadowCasterBias.depthBiasFactor; }
|
||||
void SetDirectionalShadowDepthBiasFactor(float value);
|
||||
|
||||
int GetDirectionalShadowDepthBiasUnits() const { return m_directionalShadowCasterBias.depthBiasUnits; }
|
||||
void SetDirectionalShadowDepthBiasUnits(int value);
|
||||
|
||||
void Serialize(std::ostream& os) const override;
|
||||
void Deserialize(std::istream& is) override;
|
||||
|
||||
@@ -44,6 +73,9 @@ private:
|
||||
float m_range = 10.0f;
|
||||
float m_spotAngle = 30.0f;
|
||||
bool m_castsShadows = false;
|
||||
bool m_overrideDirectionalShadowSettings = false;
|
||||
Rendering::DirectionalShadowSamplingSettings m_directionalShadowSampling = {};
|
||||
Rendering::DirectionalShadowCasterBiasSettings m_directionalShadowCasterBias = {};
|
||||
};
|
||||
|
||||
} // namespace Components
|
||||
|
||||
50
engine/include/XCEngine/Rendering/GraphicsSettingsState.h
Normal file
50
engine/include/XCEngine/Rendering/GraphicsSettingsState.h
Normal file
@@ -0,0 +1,50 @@
|
||||
#pragma once
|
||||
|
||||
#include <XCEngine/Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h>
|
||||
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
|
||||
class GraphicsSettingsState final {
|
||||
public:
|
||||
GraphicsSettingsState() = default;
|
||||
|
||||
void SetManagedRenderPipelineBridge(
|
||||
std::shared_ptr<const Pipelines::ManagedRenderPipelineBridge> bridge);
|
||||
void ClearManagedRenderPipelineBridge();
|
||||
std::shared_ptr<const Pipelines::ManagedRenderPipelineBridge>
|
||||
GetManagedRenderPipelineBridge() const {
|
||||
return m_managedRenderPipelineBridge;
|
||||
}
|
||||
|
||||
size_t GetManagedRenderPipelineBridgeGeneration() const {
|
||||
return m_managedRenderPipelineBridgeGeneration;
|
||||
}
|
||||
|
||||
size_t GetEnvironmentGeneration() const {
|
||||
return m_environmentGeneration;
|
||||
}
|
||||
|
||||
void SetRenderPipelineAssetDescriptor(
|
||||
const Pipelines::ManagedRenderPipelineAssetDescriptor& descriptor);
|
||||
void ClearRenderPipelineAssetDescriptor();
|
||||
Pipelines::ManagedRenderPipelineAssetDescriptor
|
||||
GetRenderPipelineAssetDescriptor() const {
|
||||
return m_renderPipelineAssetDescriptor;
|
||||
}
|
||||
|
||||
private:
|
||||
void BumpEnvironmentGeneration();
|
||||
|
||||
Pipelines::ManagedRenderPipelineAssetDescriptor
|
||||
m_renderPipelineAssetDescriptor = {};
|
||||
std::shared_ptr<const Pipelines::ManagedRenderPipelineBridge>
|
||||
m_managedRenderPipelineBridge = nullptr;
|
||||
size_t m_managedRenderPipelineBridgeGeneration = 1u;
|
||||
size_t m_environmentGeneration = 1u;
|
||||
};
|
||||
|
||||
GraphicsSettingsState& GetGraphicsSettingsState();
|
||||
|
||||
} // namespace Rendering
|
||||
} // namespace XCEngine
|
||||
Reference in New Issue
Block a user