feat(render): implement Campaign AR and terrain fidelity

This commit is contained in:
Erik 2026-08-22 13:13:29 +02:00
parent 99cf26e00c
commit 7a5f96ede5
368 changed files with 50611 additions and 950 deletions

View file

@ -1,4 +1,8 @@
using AcDream.App.Settings;
using AcDream.App.Plugins;
using AcDream.App.Rendering.Gpu;
using AcDream.App.Rendering.Packs;
using AcDream.UI.Abstractions.Panels.Settings;
using Silk.NET.Input;
namespace AcDream.App.Composition;
@ -18,11 +22,22 @@ namespace AcDream.App.Composition;
/// keybinds.json (not retail's <c>.keymap</c> format — register row AP-202).
/// </summary>
internal sealed record SettingsDevToolsResult(
AcDream.UI.Abstractions.Settings.QualitySettings ResolvedQuality);
AcDream.UI.Abstractions.Settings.QualitySettings ResolvedQuality)
{
internal RenderPackCatalogSource? RenderPacks { get; init; }
internal RenderPackSelectionSettings RenderPackSelection { get; init; } =
RenderPackSelectionSettings.Retail;
}
internal sealed record SettingsDevToolsDependencies(
RuntimeSettingsController Settings,
IRuntimeSettingsStartupTarget StartupTarget);
IRuntimeSettingsStartupTarget StartupTarget)
{
internal BufferedRenderPackRegistry? RenderPacks { get; init; }
internal IGpuDevice? GpuDevice { get; init; }
}
/// <summary>
/// Production Phase 3: applies the resolved startup display/audio settings.
@ -51,6 +66,19 @@ internal sealed class SettingsDevToolsCompositionPhase :
ArgumentNullException.ThrowIfNull(content);
_dependencies.Settings.ApplyStartup(_dependencies.StartupTarget);
return new SettingsDevToolsResult(_dependencies.Settings.ResolvedQuality);
RenderPackCatalogSource? renderPacks = null;
if (_dependencies.RenderPacks is { } registry
&& _dependencies.GpuDevice is { } gpu)
{
renderPacks = new RenderPackCatalogSource(
registry,
RenderPackCapabilityResolver.Resolve(gpu.Capabilities));
}
return new SettingsDevToolsResult(_dependencies.Settings.ResolvedQuality)
{
RenderPacks = renderPacks,
RenderPackSelection = _dependencies.Settings.Display.RenderPack,
};
}
}