// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. #pragma once #include "Engine/Core/Config/Settings.h" #include "Engine/Serialization/Serialization.h" #include "Engine/Graphics/Enums.h" /// /// Graphics rendering settings. /// /// class GraphicsSettings : public Settings { public: /// /// Enables rendering synchronization with the refresh rate of the display device to avoid "tearing" artifacts. /// bool UseVSync = false; /// /// Anti Aliasing quality setting. /// Quality AAQuality = Quality::Medium; /// /// Screen Space Reflections quality setting. /// Quality SSRQuality = Quality::Medium; /// /// Screen Space Ambient Occlusion quality setting. /// Quality SSAOQuality = Quality::Medium; /// /// Volumetric Fog quality setting. /// Quality VolumetricFogQuality = Quality::High; /// /// The shadows quality. /// Quality ShadowsQuality = Quality::Medium; /// /// The shadow maps quality (textures resolution). /// Quality ShadowMapsQuality = Quality::Medium; /// /// Enables cascades splits blending for directional light shadows. /// bool AllowCSMBlending = false; public: // [Settings] void Apply() override; void RestoreDefault() final override { UseVSync = false; AAQuality = Quality::Medium; SSRQuality = Quality::Medium; SSAOQuality = Quality::Medium; VolumetricFogQuality = Quality::High; ShadowsQuality = Quality::Medium; ShadowMapsQuality = Quality::Medium; AllowCSMBlending = false; } void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) final override { DESERIALIZE(UseVSync); DESERIALIZE(AAQuality); DESERIALIZE(SSRQuality); DESERIALIZE(SSAOQuality); DESERIALIZE(VolumetricFogQuality); DESERIALIZE(ShadowsQuality); DESERIALIZE(ShadowMapsQuality); DESERIALIZE(AllowCSMBlending); } };