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

@ -92,7 +92,10 @@ internal sealed record InteractionRetainedUiDependencies(
// needed. gmMapUI::Update @0x004a1eb0 reads GameTime::current_game_time
// every 5s — MapPageController owns that cadence, this just supplies the
// current reading.
Func<AcDream.Core.World.DerethDateTime.Calendar> CurrentCalendar)
Func<AcDream.Core.World.DerethDateTime.Calendar> CurrentCalendar,
AcDream.App.Rendering.Packs.RenderPackCatalogSource? RenderPackCatalog = null,
Func<AcDream.App.Rendering.Packs.RenderPackDiagnosticsSnapshot>?
RenderPackDiagnostics = null)
{
public RuntimeActionState Actions => Runtime.ActionOwner;
@ -643,7 +646,8 @@ internal sealed class RetailInteractionRetainedUiCompositionFactory
screenshots = new FrameScreenshotController(
d.BackbufferReader,
Path.Combine(artifactDirectory, "screenshots"),
ProbeLog);
ProbeLog,
d.RenderPackDiagnostics);
}
checkpoint(InteractionRetainedUiCompositionPoint.UiProbeCreated);
@ -949,7 +953,53 @@ internal sealed class RetailInteractionRetainedUiCompositionFactory
LoadDisplay: () => d.Settings.Display,
SaveDisplay: d.Settings.SaveDisplay,
LoadAudio: () => d.Settings.Audio,
SaveAudio: d.Settings.SaveAudio),
SaveAudio: d.Settings.SaveAudio,
LoadRenderPackChoices: d.RenderPackCatalog is null
? null
: () => d.RenderPackCatalog.Snapshot().Entries
.Select(entry =>
new ConfigOptionsPageController.RenderPackChoice(
entry.Descriptor.Id,
entry.Descriptor.DisplayName,
entry.Descriptor.PackVersion.ToString(),
entry.IsCompatible,
entry.IncompatibilityReason,
entry.Descriptor.QualityPresets
.Select(preset =>
{
entry.PresetIncompatibilityReasons.TryGetValue(
preset.Id,
out string? reason);
return new ConfigOptionsPageController.RenderPackPresetChoice(
preset.Id,
preset.DisplayName,
entry.IsCompatible && reason is null,
reason ?? entry.IncompatibilityReason)
{
SettingOverrides = preset.SettingOverrides,
MaxResidentGpuBytes = preset.MaxResidentGpuBytes,
MaxIncrementalGpuMillisecondsP50 =
preset.MaxIncrementalGpuMillisecondsP50,
MaxIncrementalGpuMillisecondsP99 =
preset.MaxIncrementalGpuMillisecondsP99,
MaxIncrementalCpuMillisecondsP50 =
preset.MaxIncrementalCpuMillisecondsP50,
MaxIncrementalCpuMillisecondsP99 =
preset.MaxIncrementalCpuMillisecondsP99,
};
})
.ToArray())
{
FeatureSummary = entry.Descriptor.FeatureSummary,
Settings = entry.Descriptor.Settings,
})
.ToArray(),
LoadRenderPackCatalogRevision: d.RenderPackCatalog is null
? null
: () => d.RenderPackCatalog.Revision,
LoadRenderPackFailureNotice: d.RenderPackDiagnostics is null
? null
: () => d.RenderPackDiagnostics().FailureReason),
// Campaign FA slice FA3: the social panel's own bindings —
// FA2's typed Fellowship/Allegiance snapshot readers off the
// GameRuntime views, plus J4.1's Friends/Squelch owners