// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Scripting/ScriptingType.h"
#include "PostProcessSettings.h"
#include "Enums.h"
///
/// Graphics device manager that creates, manages and releases graphics device and related objects.
///
API_CLASS(Static) class FLAXENGINE_API Graphics
{
DECLARE_SCRIPTING_TYPE_NO_SPAWN(Graphics);
public:
///
/// Enables rendering synchronization with the refresh rate of the display device to avoid "tearing" artifacts.
///
API_FIELD() static bool UseVSync;
///
/// Anti Aliasing quality setting.
///
API_FIELD() static Quality AAQuality;
///
/// Screen Space Reflections quality setting.
///
API_FIELD() static Quality SSRQuality;
///
/// Screen Space Ambient Occlusion quality setting.
///
API_FIELD() static Quality SSAOQuality;
///
/// Volumetric Fog quality setting.
///
API_FIELD() static Quality VolumetricFogQuality;
///
/// The shadows quality.
///
API_FIELD() static Quality ShadowsQuality;
///
/// The shadow maps quality (textures resolution).
///
API_FIELD() static Quality ShadowMapsQuality;
///
/// Enables cascades splits blending for directional light shadows.
/// [Deprecated in v1.9]
///
API_FIELD() DEPRECATED static bool AllowCSMBlending;
///
/// The Global SDF quality. Controls the volume texture resolution and amount of cascades to use.
///
API_FIELD() static Quality GlobalSDFQuality;
///
/// The Global Illumination quality. Controls the quality of the GI effect.
///
API_FIELD() static Quality GIQuality;
///
/// The default Post Process settings. Can be overriden by PostFxVolume on a level locally, per camera or for a whole map.
///
API_FIELD() static PostProcessSettings PostProcessSettings;
public:
///
/// Disposes the device.
///
static void DisposeDevice();
};