acdream/src/AcDream.App/Rendering
Erik c265b52d4b docs(render): V11 closeout — register, architecture, code structure, issues
Retires the GL framing from the documents that described a two-backend,
two-UI-stack client, and files what the deletion left behind.

Divergence register:
  * AD-46 (anisotropic tap pattern in dense alpha scenery) is REFRAMED rather
    than retired. Its substance survives -- distant foliage may read denser
    than retail's -- but it was measured GL-vs-Vulkan, and with GL gone it is
    a Vulkan-vs-retail question against the D3D oracle it already cited. The
    measurement is kept as the evidence that the residual is a driver tap
    pattern; the row now records that it is no longer falsifiable by
    self-differential, which is a real loss the deletion causes.
  * AD-47 and AD-48 are NEW, and the campaign's own risk register scheduled
    them here: MSAA sample positions (measured at 8.83% of the frame at 4x,
    which is why every strict gate runs MSAA off -- and therefore why a
    regression confined to the multisample path would not be caught) and
    present pacing (#235 is the live instance).
  * AD-17's justification moves from a GL clip-plane citation to Vulkan's
    maxClipDistances floor, which is the same 8, so the divergence is
    unchanged and only its authority moves.
  * AP-92 keeps IUiViewportRenderer.TextureIsBottomUp rather than folding it
    flat, because it is what let the origin question be answered by data.

Architecture and code structure: the layer diagram, the frame order, the
residency vocabulary and the reference table all said OpenGL. The UI section
said two stacks. Rule 3's rationale is rewritten around what actually
happened -- ImGui was deleted and not one panel, ViewModel or command had to
change, because none of them had ever imported ImGuiNET. That is the rule
paying for itself, so it is recorded as evidence rather than removed as
obsolete.

Issues: #258 files the dev-panel host as a decision rather than an accident,
and #255 is REOPENED. Its TaskCreationOptions.LongRunning fix asks the
scheduler for a thread but does not promise two callbacks overlap; under nine
concurrent test assemblies it still failed 2 of 5 whole-suite runs. The
earlier evidence tested a narrower pool, not a contended one. The fix it
needs is a rendezvous inside the read stub -- not a weakened assertion.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-29 03:20:04 +02:00
..
Gpu docs(render): V11 closeout — register, architecture, code structure, issues 2026-07-29 03:20:04 +02:00
Residency Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
Scene refactor(app): key live projections by runtime identity 2026-07-25 21:50:58 +02:00
Selection feat(rendering): prove packed dispatcher output parity 2026-07-25 01:31:56 +02:00
Shaders feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
Sky feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
Vfx Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
Wb feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
AnimationPresentationDiagnostics.cs refactor(animation): extract live PartArray presenter 2026-07-21 09:37:02 +02:00
AttachmentUpdateOrder.cs refactor(app): key live projections by runtime identity 2026-07-25 21:50:58 +02:00
BackendNeutralWorldTextures.cs feat(render): Campaign V slice V6i-2 commit 2 — world texture creation crosses to IGpuTexture 2026-07-28 13:57:43 +02:00
BitmapFont.cs feat(render): put the retained UI and debug lines on both backends 2026-07-28 08:51:32 +02:00
BoundedUnownedResourceCache.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
CameraController.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
CameraFrameController.cs refactor(camera): extract the update frame 2026-07-22 03:08:58 +02:00
CellVisibility.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
ChaseCamera.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
ClipFrame.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
ClipFrameAssembler.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
ClipPlaneSet.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
CompositeTextureArrayCache.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
CreatureAppraisalPresentation.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
DatLiveEntityProjectionMaterializer.cs refactor(runtime): close simulation ownership 2026-07-26 15:53:31 +02:00
DebugLineRenderer.cs feat(render): Campaign V slice V6l commit 1 - particles draw on Vulkan 2026-07-28 17:20:59 +02:00
DebugVmRenderFactsPublisher.cs refactor(render): extract frame presentation diagnostics 2026-07-22 05:02:31 +02:00
DevToolsRuntimeSources.cs refactor(runtime): close simulation ownership 2026-07-26 15:53:31 +02:00
DisplayFramePacingController.cs feat(linux): add graphical platform services 2026-07-27 11:54:59 +02:00
DollCamera.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
DollEntityBuilder.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
DynamicBufferCapacity.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
EquippedChildRenderController.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
FixedEntityTextureOwnerLease.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
FlyCamera.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
FramebufferResizeController.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
FramePacingController.cs feat(linux): add graphical platform services 2026-07-27 11:54:59 +02:00
FramePacingPolicy.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
FramePacingWaiterFactory.cs feat(linux): add graphical platform services 2026-07-27 11:54:59 +02:00
FrustumCuller.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
GameFrameGraphSlot.cs refactor(app): compose atomic frame roots 2026-07-22 19:02:08 +02:00
GameRenderResourceLifetime.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
GameWindow.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
GameWindowLifetime.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
GpuDeviceFrameLifetime.cs feat(render): Campaign V slice V4a - port TextRenderer/BitmapFont/DebugLineRenderer/TextureCache UI path onto IGpuDevice 2026-07-27 19:37:19 +02:00
GpuFrameFlightController.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
GpuRetiredTerrainSlotAllocator.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
HostQuiescenceGate.cs refactor(app): own native window callback lifetime 2026-07-22 09:59:10 +02:00
IAnimationHookCaptureSink.cs refactor(runtime): extract the live object frame 2026-07-22 00:42:26 +02:00
ICamera.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
ICameraCollisionProbe.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
ILiveAnimationPresentationContext.cs refactor(animation): extract live PartArray presenter 2026-07-21 09:37:02 +02:00
ILiveStaticPartFrameSource.cs fix(animation): harden presentation phase handoffs 2026-07-21 10:01:25 +02:00
IndoorDrawPlan.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
InteriorEntityPartition.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
LinuxMonotonicFramePacingWaiter.cs feat(linux): add graphical platform services 2026-07-27 11:54:59 +02:00
LiveAnimationPresentationContext.cs fix(runtime): restore interaction completion ownership 2026-07-23 05:51:51 +02:00
LiveEntityAnimationPresenter.cs refactor(app): key live projections by runtime identity 2026-07-25 21:50:58 +02:00
LiveEntityAnimationScheduler.cs refactor(runtime): own projectile simulation 2026-07-26 14:17:42 +02:00
LiveEntityAnimationState.cs fix(animation): harden presentation phase handoffs 2026-07-21 10:01:25 +02:00
LiveEntityAppearanceBinding.cs refactor(world): extract live projection mechanics 2026-07-21 16:17:03 +02:00
LiveEntityCreateSupersessionRecovery.cs refactor(world): extract live entity hydration 2026-07-21 17:32:45 +02:00
LiveEntityPartArrayLifecycle.cs refactor(update): cut over the frame orchestrator 2026-07-22 03:31:38 +02:00
LiveStaticAnimationResidency.cs refactor(runtime): extract the live object frame 2026-07-22 00:42:26 +02:00
NdcScissorRect.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
OrbitCamera.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
OrderedResourceTeardown.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
OutdoorCellNode.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
OwnerScopedResourceRegistry.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
PaperdollFramePresenter.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
PaperdollViewportRenderer.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
ParticleEmitterRetirementTracker.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
ParticleRenderer.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
ParticleRenderer.Rhi.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
ParticleSubmissionOrdering.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
PhysicsCameraCollisionProbe.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
PortalDepthMaskRenderer.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
PortalDepthMaskRenderer.Rhi.cs feat(render): Campaign V slice V6l commit 2 - the portal mask draws on Vulkan 2026-07-28 17:36:45 +02:00
PortalProjection.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
PortalTunnelCamera.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
PortalTunnelPresentation.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
PortalView.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
PortalVisibilityBuilder.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
PrivateEntityViewportRenderer.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
PrivatePresentationRenderer.cs feat(ui): port retail creature appraisal presentation 2026-07-23 12:55:24 +02:00
QuadClipper.cs fix(ui): render live component counts 2026-07-15 18:11:02 +02:00
RenderFrameDiagnosticsController.cs perf(diagnostics): expose prepared asset source counters 2026-07-24 15:16:32 +02:00
RenderFrameDiagnosticSources.cs refactor(runtime): own world environment state 2026-07-26 16:45:04 +02:00
RenderFrameOrchestrator.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
RenderFramePreparationController.cs feat(render): Campaign V slice V11 commit 1 - delete ImGui, Studio, and the DevTools frontend 2026-07-28 23:56:04 +02:00
RenderFrameResourceController.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
ResourceCleanupGroup.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
ResourceShutdownTransaction.cs refactor(app): extract focused window lifetime 2026-07-22 19:43:52 +02:00
RestoredTextureBindingMutation.cs refactor(lifetime): own render resource prefixes 2026-07-22 14:42:14 +02:00
RetailAlphaQueue.cs perf(render): bound animation and alpha scratch residency 2026-07-24 16:34:28 +02:00
RetailChaseCamera.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
RetailCursorManager.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
RetailCursorResolver.cs fix(rendering): bound portal resource lifetime 2026-07-18 21:35:16 +02:00
RetailParticleGeometryClassifier.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
RetailPViewPassExecutor.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
RetailPViewRenderer.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
RetailStaticAnimatingObjectScheduler.cs feat(rendering): index incremental scene queries 2026-07-24 22:12:26 +02:00
RollingTimingSampleWindow.cs refactor(render): extract frame presentation diagnostics 2026-07-22 05:02:31 +02:00
RuntimeResourceSlots.cs refactor(lifetime): own render resource prefixes 2026-07-22 14:42:14 +02:00
SceneLightingUboBinding.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
ScreenPolygonClip.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
SilkWindowCallbackBinding.cs refactor(app): own native window callback lifetime 2026-07-22 09:59:10 +02:00
SkyPesFrameController.cs refactor(render): extract world frame preparation 2026-07-22 05:54:00 +02:00
SpawnMotionInitializer.cs refactor(world): extract live entity hydration 2026-07-21 17:32:45 +02:00
StandaloneBindlessTextureCache.cs feat(render): Campaign V slice V6l commit 1 - particles draw on Vulkan 2026-07-28 17:20:59 +02:00
StaticLiveRootCommitter.cs refactor(runtime): extract the live object frame 2026-07-22 00:42:26 +02:00
SyntheticEntityMeshReferenceOwner.cs fix(streaming): preserve portal destination ownership 2026-07-25 08:35:12 +02:00
TeleportViewPlaneController.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
TerrainAtlas.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
TerrainDrawDiagnosticsController.cs refactor(app): key live projections by runtime identity 2026-07-25 21:50:58 +02:00
TerrainModernRenderer.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
TerrainModernRenderer.Rhi.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
TerrainTextureTilingTable.cs feat(render): Campaign V slice V6f-2 - terrain's tiling table becomes a buffer 2026-07-28 10:11:00 +02:00
TextRenderer.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
TextureCache.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
UiTextureTableHandle.cs feat(render): put the retained UI and debug lines on both backends 2026-07-28 08:51:32 +02:00
ViewconeCuller.cs Revert "Campaign V slice V4a" - it lost world multisampling 2026-07-27 18:29:28 +02:00
WindowsHighResolutionFramePacingWaiter.cs fix #225: stabilize render pacing and frame CPU 2026-07-19 06:29:30 +02:00
WorldPassScope.cs feat(render): Campaign V slice V6l commit 3 - the offscreen viewports draw on Vulkan 2026-07-28 18:05:24 +02:00
WorldPassSurface.cs feat(render): Vulkan campaign V11 step 2 — delete the OpenGL backend 2026-07-29 02:19:53 +02:00
WorldRenderDiagnostics.cs feat(render): Vulkan campaign V11 step 3 — drop the GL packages and shaders 2026-07-29 02:58:15 +02:00
WorldRenderFrameBuilder.cs refactor(runtime): close simulation ownership 2026-07-26 15:53:31 +02:00
WorldRevealRenderResourceScheduler.cs fix(streaming): preserve portal destination ownership 2026-07-25 08:35:12 +02:00
WorldSceneDiagnosticsController.cs test(render): add blank-world attribution apparatus and a post-world GL sample 2026-07-28 00:08:10 +02:00
WorldScenePassExecutor.cs feat(render): Campaign V slice V6j commit 2 - Dereth draws on Vulkan 2026-07-28 15:46:54 +02:00
WorldSceneRenderer.cs perf(rendering): retire production entity partition 2026-07-25 10:50:57 +02:00
WorldSceneRuntimeSources.cs refactor(runtime): close simulation ownership 2026-07-26 15:53:31 +02:00