acdream/src/AcDream.Plugin.Abstractions
Erik 75664805f8 feat(rendering): port retail one-pass detail material
Replace the building and EnvCell detail replay with retail's exact single-pass stage result, including authored surface opacity, squared detail alpha, final-alpha clipping, and the original subset pipeline/order. Arm the ordered walk command in place to close #471, delete the replay pipelines/shaders, and advance prepared content to recipe 9.

Mutation witnesses (each restored before commit):
- X=a*qA: RetailDetailTextureContractTests.BothShaderFamiliesUseTheSharedOnePassSourceAndDebugPrecedesDetailSample line 174, missing materialAlpha * detail.a * detail.a.
- X*=base alpha: same test line 175, forbidden baseTexel.a found.
- CLIP against base alpha: EnvCellAlphaDrawSourceTests.ClipShaders_UseGreaterEqualForThePerRangeReference line 260, final-X conditional missing.
- second detail draw: EnvCellAlphaDrawSourceTests.DetailOn_EveryEnvCellFamilyDrawsOnceInPlaceWithAuthoredOpacity line 105, Assert.Single saw 2 MDI calls.
- straight-alpha substitution: WalkStaticStreamPopulatorTests.ImmediateBuildingDetail_RetainsOriginalFramebufferFamily line 1244, Additive first failed (only wb-mesh-alpha-1x recorded; InvAlpha also failed).
- omit ordered arm: OrderPreservingSubmitterTests.PrepareThenDraw_OrdinaryBuildingClipBuildingOrdinary_ArmsOnePassInPlace line 305, expected (77,3.5), got (0,0).
- omit atmospheric combine: RetailDetailTextureContractTests.BothShaderFamiliesUseTheSharedOnePassSourceAndDebugPrecedesDetailSample line 173, atmospheric shared include missing.
- drop serialized opacity: ObjectMeshDataSerializerTests.SurfaceOpacity_RoundTripsBitExactlyAndDeterministically line 288, first reported 0.5 bits 1056964608 vs 1065353216.
- stale detail arm: ordered adjacency test line 307, expected following ordinary (0,0), got (77,3.5).
- per-frame surface map: EnvCellAlphaDrawSourceTests.ProductionWholeLeaf_WarmedScanSubmitRhiAndFilteredReplayDoNotAllocate line 178, expected 0 B, got 147456 B.

Verification before commit: shader compiler 23/23; focused App 213/213; Content 75/75; Core Wb 10/10; launcher migration 6/6; Release solution build 0 warnings / 0 errors; git diff --check clean.
2026-09-05 02:03:13 +02:00
..
Rendering feat(rendering): port retail one-pass detail material 2026-09-05 02:03:13 +02:00
AcDream.Plugin.Abstractions.csproj chore: phase 1 — add Core, Abstractions, App, Tests projects 2026-04-10 09:22:33 +02:00
Automation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
CombatAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
ContractSnapshot.cs feat(quest): QT6 — plugins can read the contract tracker 2026-08-21 15:22:22 +02:00
EnchantmentAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
EquipmentAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
FellowshipAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
IAcDreamPlugin.cs feat(plugins): enforce apiVersion; launcher plugins default ON with "none" opt-out 2026-08-20 21:28:04 +02:00
IEvents.cs feat(plugins): MossTank — a self-buffing plugin, and the automation surface it needed 2026-08-20 16:22:28 +02:00
IGameState.cs feat(quest): QT6 — plugins can read the contract tracker 2026-08-21 15:22:22 +02:00
IPluginHost.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
IPluginLogger.cs refactor(abstractions): rename ILogger to IPluginLogger, doc Initialize 2026-04-10 09:46:30 +02:00
IPluginStorage.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
ISelectionService.cs feat(ui): centralize retail selection state 2026-07-11 00:51:20 +02:00
ItemAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
IUiRegistry.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
LoginAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
LootAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
LootClassifierPlugins.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
MagicAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
NavigationAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
NetworkAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
packages.linux-x64.lock.json build: make release restore reproducible 2026-08-18 10:29:00 +02:00
packages.neutral.lock.json build: make release restore reproducible 2026-08-18 10:29:00 +02:00
packages.win-x64.lock.json build: make release restore reproducible 2026-08-18 10:29:00 +02:00
PluginCommands.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
ProjectileAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
RecoveryAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
SelectionAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
WorldEntitySnapshot.cs feat(core): add IGameState, IEvents, WorldEvents with replay-on-subscribe 2026-04-10 20:29:29 +02:00
WorldObjectAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00
WorldTimeAutomation.cs feat(mosstank): add VTank-style automation PoC 2026-08-27 18:57:21 +02:00