//#define SHADER_FEATURES using SharpPluginLoader.Core.Configuration; namespace WorldTuningTool { using static Plugin; public enum StageExt : uint { Global = 0, InfinityOfNothingHandler = 100, AncientForest = 101, WildspireWaste = 102, CoralHighlands = 103, RottenVale = 104, ElderRecess = 105, GreatRavine = 106, GreatRavineStory = 107, HoarfrostReach = 108, GuidingLands = 109, InfinityOfNothing = 200, SpecialArena = 201, ChallengeArena = 202, Astera = 301, AsteraHub = 302, ResearchBase = 303, Seliana = 305, SelianaHub = 306, Opening = 401, Everstream = 403, ConfluenceOfFates = 405, AncientForestOpening = 406, CharacterCreation = 407, DebugMap = 408, ElDorado = 409, SelianaSupplyCache = 411, OriginIsleNergigante = 412, OriginIsleSharaIshvalda = 413, SecludedValley = 415, AlatreonStage = 416, CastleSchrade = 417, LivingQuarters = 501, PrivateQuarters = 502, PrivateSuite = 503, TrainingCamp = 504, ChamberOfFive = 505, SelianaRoom = 506 } public class Config : IConfig { public string Name => "WorldTuningTool"; public string Version => "0.9.8"; public static string StageToString(StageExt stage) { switch (stage) { case StageExt.Global: return "Global"; case StageExt.InfinityOfNothingHandler: return "Infinity Of Nothing Handler"; case StageExt.AncientForest: return "Ancient Forest"; case StageExt.WildspireWaste: return "Wildspire Waste"; case StageExt.CoralHighlands: return "Coral Highlands"; case StageExt.RottenVale: return "Rotten Vale"; case StageExt.ElderRecess: return "Elder Recess"; case StageExt.GreatRavine: return "Great Ravine"; case StageExt.GreatRavineStory: return "Great Ravine Story"; case StageExt.HoarfrostReach: return "Hoarfrost Reach"; case StageExt.GuidingLands: return "Guiding Lands"; case StageExt.InfinityOfNothing: return "Infinity Of Nothing"; case StageExt.SpecialArena: return "Special Arena"; case StageExt.ChallengeArena: return "Challenge Arena"; case StageExt.Astera: return "Astera"; case StageExt.AsteraHub: return "Astera Hub"; case StageExt.ResearchBase: return "Research Base"; case StageExt.Seliana: return "Seliana"; case StageExt.SelianaHub: return "Seliana Hub"; case StageExt.Opening: return "Opening"; case StageExt.Everstream: return "Everstream"; case StageExt.ConfluenceOfFates: return "Confluence Of Fates"; case StageExt.AncientForestOpening: return "Ancient Forest (Opening)"; case StageExt.CharacterCreation: return "Character Creation"; case StageExt.DebugMap: return "Debug Map"; case StageExt.ElDorado: return "El Dorado"; case StageExt.SelianaSupplyCache: return "Seliana Supply Cache"; case StageExt.OriginIsleNergigante: return "Origin Isle Nergigante"; case StageExt.OriginIsleSharaIshvalda: return "Origin Isle Shara Ishvalda"; case StageExt.SecludedValley: return "Secluded Valley"; case StageExt.AlatreonStage: return "Alatreon Stage"; case StageExt.CastleSchrade: return "Castle Schrade"; case StageExt.LivingQuarters: return "Living Quarters"; case StageExt.PrivateQuarters: return "Private Quarters"; case StageExt.PrivateSuite: return "Private Suite"; case StageExt.TrainingCamp: return "Training Camp"; case StageExt.ChamberOfFive: return "Chamber Of Five"; case StageExt.SelianaRoom: return "Seliana Room"; } return $"(Error: {stage})"; } public static readonly StageExt[] OrderedStages = { StageExt.Global, StageExt.Astera, StageExt.AsteraHub, StageExt.ResearchBase, StageExt.Seliana, StageExt.SelianaHub, StageExt.LivingQuarters, StageExt.PrivateQuarters, StageExt.PrivateSuite, StageExt.SelianaRoom, StageExt.TrainingCamp, StageExt.AncientForest, StageExt.WildspireWaste, StageExt.CoralHighlands, StageExt.RottenVale, StageExt.ElderRecess, StageExt.GreatRavine, StageExt.GreatRavineStory, StageExt.HoarfrostReach, StageExt.GuidingLands, StageExt.SpecialArena, StageExt.ChallengeArena, StageExt.Everstream, StageExt.ConfluenceOfFates, StageExt.ElDorado, StageExt.SelianaSupplyCache, StageExt.OriginIsleNergigante, StageExt.OriginIsleSharaIshvalda, StageExt.SecludedValley, StageExt.AlatreonStage, StageExt.CastleSchrade, StageExt.ChamberOfFive, StageExt.Opening, StageExt.AncientForestOpening, StageExt.CharacterCreation, StageExt.InfinityOfNothing, StageExt.InfinityOfNothingHandler, StageExt.DebugMap }; public struct PatchConfig { #if SHADER_FEATURES public bool FullResolutionSSLR { get; set; } = false; public bool VolumeUpsampleNoLinear { get; set; } = false; public bool FXAAMaxQualityPreset { get; set; } = false; public bool AddTonemappers { get; set; } = false; #endif public bool FullResolutionVolumeBlur { get; set; } = false; public bool HigherThanHighestVolumeRendering { get; set; } = false; public bool DisableLODLimits { get; set; } = false; public bool CharacterCreatorFaceRendering { get; set; } = false; public bool LargerFoliageSwayRange { get; set; } = false; public bool DisableReducedRateAnimations { get; set; } = false; public bool OverrideViewModeLODs { get; set; } = false; public PatchConfig() {} } public static Dictionary OldParameterNames = new Dictionary() { { "Sunlight Group", "Primary Light Group" }, { "Sunlight Direction", "Primary Light Direction" }, { "Sunlight Color", "Primary Light Color" }, { "Sunlight Intensity", "Primary Light Intensity" }, { "Sunlight Is Primary", "Primary Light Is Primary" }, { "Projection Scale", "Primary Light Projection Scale" }, { "Projection Offset Speed", "Primary Light Projection Offset Speed" }, { "Projection Up", "Primary Light Projection Up" }, { "Do Volumetric", "Primary Light Do Volumetric" }, { "Shadow Cast", "Primary Shadow Cast" }, { "Shadow Map Size", "Primary Shadow Map Size" }, { "Shadow Near Clip Distance", "Primary Shadow Near Clip Distance" }, { "Shadow Cascade Mode", "Primary Shadow Cascade Mode" }, { "Shadow Cascade 2Way Bias", "Primary Shadow Cascade 2Way Bias" }, { "Shadow Distance", "Primary Shadow Cascade Distance" }, { "Shadow Backforward Distance", "Primary Shadow Cascade Backforward Distance" }, { "Shadow Is Fixed Fov Mode", "Primary Shadow Is Fixed Fov Mode" }, { "Shadow Fov", "Primary Shadow Fov" }, { "Shadow Is Discretization Fov Mode", "Primary Shadow Is Discretization Fov Mode" }, { "Shadow Discretization Angle", "Primary Shadow Discretization Angle" }, { "Shadow Distribution", "Primary Shadow Cascade Distribution" }, { "Cascade Manual Split", "Primary Shadow Cascade Manual Split" }, { "Cascade Manual Split Distance[0]", "Primary Shadow Cascade Manual Split Distance[0]" }, { "Cascade Manual Split Distance[1]", "Primary Shadow Cascade Manual Split Distance[1]" }, { "Cascade Manual Split Distance[2]", "Primary Shadow Cascade Manual Split Distance[2]" }, { "Shadow Sloped Depth Bias", "Primary Shadow Sloped Depth Bias" }, { "Shadow Depth Bias", "Primary Shadow Depth Bias" }, { "Shadow Max Depth Bias", "Primary Shadow Max Depth Bias" }, { "Cascade Individual Shadow Bias", "Primary Shadow Cascade Individual Shadow Bias" }, { "Cascade Depth Bias[0]", "Primary Shadow Cascade Depth Bias[0]" }, { "Cascade Sloped Depth Bias[0]", "Primary Shadow Cascade Sloped Depth Bias[0]" }, { "Cascade Max Depth Bias[0]", "Primary Shadow Cascade Max Depth Bias[0]" }, { "Cascade Depth Bias[1]", "Primary Shadow Cascade Depth Bias[1]" }, { "Cascade Sloped Depth Bias[1]", "Primary Shadow Cascade Sloped Depth Bias[1]" }, { "Cascade Max Depth Bias[1]", "Primary Shadow Cascade Max Depth Bias[1]" }, { "Cascade Depth Bias[2]", "Primary Shadow Cascade Depth Bias[2]" }, { "Cascade Sloped Depth Bias[2]", "Primary Shadow Cascade Sloped Depth Bias[2]" }, { "Cascade Max Depth Bias[2]", "Primary Shadow Cascade Max Depth Bias[2]" }, { "Light Tone Map Type", "Tone Map Type" }, { "Light Compute Luminance", "Tone Map Compute Luminance" }, { "Light Luminance Version", "Tone Map Luminance Version" }, { "Light Shoulder Strength", "Tone Map Shoulder Strength" }, { "Light Linear Strength", "Tone Map Linear Strength" }, { "Light Linear Angle", "Tone Map Linear Angle" }, { "Light Toe Strength", "Tone Map Toe Strength" }, { "Light Toe Num", "Tone Map Toe Num" }, { "Light Toe Denum", "Tone Map Toe Denum" }, { "Light White Point", "Tone Map White Point" }, { "Light LUT Blend", "Color Grading LUT Blend" }, { "Light Vfx LUT Blend", "Color Grading Vfx LUT Blend" }, { "Light Enable Color Grading", "Color Grading Enable" }, { "Light Is Linear To PQ", "Color Grading Is Linear To PQ" }, { "Light Is PQ To Linear", "Color Grading Is PQ To Linear" } }; public bool DisableLightsFeature { get; set; } = false; public PatchConfig Patches { get; set; } = new PatchConfig(); public Dictionary> Globals { get; set; } = new Dictionary>(); public string SelectedGlobal { get; set; } = ""; public Dictionary> Overrides { get; set; } = new Dictionary>(); public Dictionary> Sets { get; set; } = new Dictionary>(); } }