Optimize finalized surface artwork

This commit is contained in:
Alexander Sellite 2026-09-01 13:05:05 -04:00
parent 82938d3d57
commit f2239d248a
14 changed files with 1254 additions and 305 deletions

View file

@ -284,6 +284,35 @@ godot --headless --path . --script scripts/normalize_texture_imports.gd \
godot --headless --path . --script tests/texture_sampling_validation.gd
```
### Surface artwork runtime
Art Kit cells are authoritative palette and author planes, not per-cell nodes
or dictionaries. Keep `SurfaceDrawingCellBuffer` as the live representation;
materialize the legacy cell-array view only for inspection and tests. Finished
artwork uses a full-resolution nearest-neighbor texture on a coarse,
surface-conforming mesh. It discards guide and brush transforms, receives a
distance visibility range, and unloads its render node when far from the local
player while retaining compact session state.
`surface_drawing_v3` snapshots carry packed palette and participant-index
planes. The host sends late-join snapshots over multiple frames, prioritizing
active and nearby canvases, so adding finished work must not restore a
single-frame snapshot burst. Active editing and finalized artwork have
separate bounded budgets; finalizing a canvas frees active-grid capacity.
The finalized budget holds 512 maximum-size (128 x 128) canvases. At the
current 0.075-meter cell size, 441 canvases can tile the full 200 x 200-meter
generated-world footprint. If the generated world grows, update the finalized
canvas and cell budgets together and rerun the artwork performance validation.
Run both focused validations after changing this path:
```sh
godot --headless --path . --script tests/surface_drawing_validation.gd
godot --headless --path . \
--script tests/surface_drawing_performance_validation.gd
```
### Importing animalese voice sets
Animalese clips use one deterministic runtime level and format: -18 dBFS RMS