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

@ -74,7 +74,9 @@ internal sealed record LivePresentationDependencies(
DeferredRenderFrameDiagnosticsSource? DevFrameDiagnostics,
DeferredRenderFrameDiagnosticsSource UiFrameDiagnostics,
Action<string> Log,
Action<string>? Toast)
Action<string>? Toast,
AcDream.App.Rendering.Packs.IRenderPackDiagnosticsSnapshotSource?
RenderPackDiagnostics = null)
{
public SelectionState Selection => Runtime.ActionOwner.Selection;
@ -448,7 +450,8 @@ internal sealed class LivePresentationCompositionPhase
LiveRenderProjectionJournal? liveRenderProjections =
renderSceneShadow?.BindLiveRuntime(
liveEntities,
new GpuWorldRenderTraversalOrderSource(worldState));
new GpuWorldRenderTraversalOrderSource(worldState),
d.PlayerIdentity);
Fault(LivePresentationCompositionPoint.CanonicalRuntimeCreated);
bindings.Adopt(
@ -803,7 +806,9 @@ internal sealed class LivePresentationCompositionPhase
d.TranslucencyFades,
selectionScene,
d.RetailAlphaQueue,
alphaScratchBudgets.DispatcherBytes),
alphaScratchBudgets.DispatcherBytes,
foundation.TerrainAtlas?.BuildingDetailTexture ?? default,
() => d.Settings.DisplayPreview.BuildingDetailTextures),
static value => value.Dispose());
var selectionQuery = new WorldSelectionQuery(
liveEntities,
@ -1238,9 +1243,11 @@ internal sealed class LivePresentationCompositionPhase
?? throw new InvalidOperationException(
"The graphics backend must publish a world pass scope."),
foundation.MeshAdapter!.MeshManager!,
envCellFrustum),
envCellFrustum,
foundation.TerrainAtlas?.EnvironmentDetailTexture ?? default,
() => d.Settings.DisplayPreview.BuildingDetailTextures),
static value => value.Dispose());
// The three pipelines ARE its program, built at construction — the
// The four pipelines ARE its program, built at construction — the
// raw-GL arm's separate Initialize(Shader) step was deleted at V11.
Fault(LivePresentationCompositionPoint.EnvironmentCellsCreated);
@ -1484,7 +1491,8 @@ internal sealed class LivePresentationCompositionPhase
new SilkRenderFrameTitleSink(d.Window),
d.RenderDiagnosticLog,
d.Options.UiProbeDump,
resourceDiagnostics);
resourceDiagnostics,
d.RenderPackDiagnostics);
if (d.DevFrameDiagnostics is { } devFrameDiagnostics)
{
bindings.Adopt(