perf(content): close prepared asset cutover
This commit is contained in:
parent
b1ad4b7c0a
commit
a564c4b782
11 changed files with 428 additions and 66 deletions
|
|
@ -35,9 +35,10 @@ acdream streams asynchronously while the WB editor's manager owned its own loadi
|
|||
loop. Do not reintroduce worker-side `RegisterCell` calls or shared pending cell
|
||||
collections.
|
||||
|
||||
`DatCollectionAdapter` bridges our `IDatCollection` to the `IDatReaderWriter`
|
||||
interface WB's internals expect (O-D7 fallback; `ObjectMeshManager` has 26
|
||||
internal `_dats.*` call sites — above the 20-site inline-swap threshold).
|
||||
`DatCollectionAdapter` bridges the sole `DatCollection` to Content's
|
||||
`IDatReaderWriter`. Since MP1c, production `ObjectMeshManager` no longer reads
|
||||
DAT; the adapter remains the bounded typed-object access seam for runtime
|
||||
non-render content plus explicit bake/equivalence tooling.
|
||||
|
||||
**MP1a (2026-07-05): CPU mesh-extraction half moved to `AcDream.Content`.**
|
||||
The GL-free portion of the former `ObjectMeshManager` — dat read → polygon
|
||||
|
|
@ -82,14 +83,13 @@ behavior change, no divergence-register row.
|
|||
throw (preloads staged before a malformed-dat texture-decode exception
|
||||
survive, as they always did). The MP1b bake tool passes its own
|
||||
collector.
|
||||
- **Stays in `src/AcDream.App/Rendering/Wb/`:** `ObjectMeshManager` (now a
|
||||
thin wrapper owning the staged-queue/worker-pool/Dispose-quiesce lifecycle
|
||||
and all GL upload — constructs one `MeshExtractor` and delegates every
|
||||
former `Prepare*` call site to it), `ObjectRenderData`/`ObjectRenderBatch`
|
||||
- **Stays in `src/AcDream.App/Rendering/Wb/`:** `ObjectMeshManager` (the
|
||||
staged-queue/worker-pool/Dispose-quiesce lifecycle and all GL upload;
|
||||
production workers now consume `IPreparedAssetSource`),
|
||||
`ObjectRenderData`/`ObjectRenderBatch`
|
||||
(hold a GL `TextureAtlasManager` field), `TextureAtlasManager`,
|
||||
`DatCollectionAdapter` (concrete `DatCollection`-backed implementation of
|
||||
the now-Content-namespaced `IDatReaderWriter`), `GeometryUtils` (used only
|
||||
by App-side raycasting, not by extraction), `AcSurfaceMetadata`/
|
||||
`GeometryUtils` (used only by App-side raycasting, not by extraction),
|
||||
`AcSurfaceMetadata`/
|
||||
`AcSurfaceMetadataTable` (not on the extraction path), `Building.cs`
|
||||
(explicitly out of scope).
|
||||
- `AcDream.Core` is untouched; `AcDream.Content` references `AcDream.Core`
|
||||
|
|
@ -114,6 +114,23 @@ aliasing and fails on any collision. This is an acdream resource-ownership seam,
|
|||
not a second DAT interpreter; `DatCollection` and `MeshExtractor` remain the
|
||||
only reader/extractor path.
|
||||
|
||||
**MP1c production prepared-asset cutover (2026-07-24).** Production
|
||||
world-mesh workers no longer invoke `MeshExtractor` or rebuild Setup, GfxObj,
|
||||
EnvCell, Surface, palette, and texture graphs during portals. The validated
|
||||
machine-local `acdream.pak` is opened through Content's
|
||||
`IPreparedAssetSource`; typed GfxObj and EnvCell requests deserialize immutable
|
||||
`ObjectMeshData` while retaining the existing App worker, staging, render-thread
|
||||
upload, cache, ownership, and shutdown contracts. The format-1/bake-tool-3
|
||||
payload persists exact batch translucency so App does not reconstruct a
|
||||
`GfxObjMesh` for metadata. Setup activation uses the package TOC as an explicit
|
||||
type-presence index before reading valid Setup records through the bounded DAT
|
||||
cache. `DatPreparedAssetSource` and `MeshExtractor` remain explicit
|
||||
bake/equivalence/UI-Studio tools, not a production fallback. Portal → HighRes
|
||||
→ Language → Cell lookup precedence is encoded directly in
|
||||
`DatCollectionAdapter.TryResolvePreferred`. The connected physical and
|
||||
installed-DAT gates are recorded in
|
||||
`docs/research/2026-07-24-slice-c-prepared-asset-cutover-report.md`.
|
||||
|
||||
**Retail VFX hook compatibility seam (2026-07-14).** Chorizite.DatReaderWriter
|
||||
2.1.7 models `CreateBlockingParticleHook` as the common hook header only, while
|
||||
retail inherits the complete `CreateParticleHook` payload. The narrow readers in
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue