Files
OptiScaler/CyberXeSS/Config.h
T

117 lines
3.0 KiB
C++

#pragma once
#include "pch.h"
#include <optional>
#include <filesystem>
#include <SimpleIni.h>
#include "backends/IFeature.h"
typedef enum NVNGX_Api
{
NVNGX_NOT_SELECTED = 0,
NVNGX_DX11,
NVNGX_DX12,
NVNGX_VULKAN,
} NVNGX_Api;
class Config
{
public:
Config(std::wstring fileName);
// Depth
std::optional<bool> DepthInverted;
// Color
std::optional<bool> AutoExposure;
std::optional<bool> HDR;
// Motion
std::optional<bool> JitterCancellation;
std::optional<bool> DisplayResolution;
//Logging
std::optional<bool> LoggingEnabled;
std::optional<bool> LogToFile;
std::optional<bool> LogToConsole;
std::optional<bool> LogToNGX;
std::optional<bool> OpenConsole;
std::optional<int> LogLevel;
std::optional<std::string> LogFileName;
// XeSS
std::optional<bool> BuildPipelines;
std::optional<int32_t> NetworkModel;
std::optional<int32_t> OverrideQuality;
std::optional<bool> ColorSpaceFix;
// CAS
std::optional<bool> CasEnabled;
std::optional<int> CasColorSpaceConversion;
//Sharpness
std::optional<bool> OverrideSharpness;
std::optional<float> Sharpness;
// Upscale Ratio Override
std::optional<bool> UpscaleRatioOverrideEnabled;
std::optional<float> UpscaleRatioOverrideValue;
// Quality Overrides
std::optional<bool> QualityRatioOverrideEnabled;
std::optional<float> QualityRatio_UltraQuality;
std::optional<float> QualityRatio_Quality;
std::optional<float> QualityRatio_Balanced;
std::optional<float> QualityRatio_Performance;
std::optional<float> QualityRatio_UltraPerformance;
//Hotfixes
std::optional<bool> DisableReactiveMask;
std::optional<int32_t> ColorResourceBarrier;
std::optional<int32_t> MVResourceBarrier;
std::optional<int32_t> DepthResourceBarrier;
std::optional<int32_t> ExposureResourceBarrier;
std::optional<int32_t> MaskResourceBarrier;
std::optional<int32_t> OutputResourceBarrier;
// Upscalers
std::optional<std::string> Dx11Upscaler;
std::optional<std::string> Dx12Upscaler;
std::optional<std::string> VulkanUpscaler;
// fsr
std::optional<float> FsrVerticalFov;
std::optional<float> FsrHorizontalFov;
// dx11wdx12
std::optional<int> UseSafeSyncQueries;
// Engine Info
NVSDK_NGX_EngineType NVNGX_Engine = NVSDK_NGX_ENGINE_TYPE_CUSTOM;
bool NVNGX_EngineVersion5 = false;
NVNGX_Api Api = NVNGX_NOT_SELECTED;
NVSDK_NGX_LoggingInfo NVSDK_Logger{ nullptr, NVSDK_NGX_LOGGING_LEVEL_OFF, false };
IFeature* CurrentFeature = nullptr;
bool changeBackend = false;
bool changeCAS = false;
std::string newBackend = "";
bool xessDebug = false;
void Reload();
bool SaveIni(std::string name);
static Config* Instance();
private:
inline static Config* _config;
CSimpleIniA ini;
std::filesystem::path absoluteFileName;
std::optional<std::string> readString(std::string section, std::string key, bool lowercase = false);
std::optional<float> readFloat(std::string section, std::string key);
std::optional<int> readInt(std::string section, std::string key);
std::optional<bool> readBool(std::string section, std::string key);
};