Tree LOD is implemented on develop.
- Terrain LOD and tree LOD are separated at render time.
FarRendererowns terrain and water LOD meshes.FarTreeRendererowns the far tree render pass.- Worker-side extraction is represented by
lod-worker-tree.ts. - LOD stats include tree section, draw call, instance, and triangle counts through
FarRenderer.getStats().
apps/dawnlight/src/game/engine/lod/far-tree-renderer.tsapps/dawnlight/src/workers/lod-worker-tree.tsapps/dawnlight/src/game/engine/lod/lod-data-types.tsapps/dawnlight/src/game/engine/lod/far-renderer.tsapps/dawnlight/src/workers/lod-worker.ts
Automated coverage exists for the LOD worker, worker manager, LOD tree, and near-only interaction behavior:
pnpm --filter dawnlight test -- lod-worker.test.ts lod-worker-manager.test.ts lod-tree.test.ts near-only-interaction.test.ts --runInBand
pnpm --filter dawnlight exec tsc --noEmitManual visual validation should still be done with agent-browser whenever LOD rendering changes:
pnpm --filter dawnlight dev -- --host 127.0.0.1
agent-browser open http://localhost:5173
agent-browser errors
agent-browser screenshot /tmp/dawnlight-lod-check.pngRepeatable screenshot baselines are documented in AGENT_BROWSER.md. The required LOD set is default spawn plus /lodbaseline forest, /lodbaseline beach, and /lodbaseline snow views when biome-specific LOD visuals change.
An old debug capture is archived at docs/lod/lod-log-sample.txt. New local LOD logs should use lod-log.txt or lod-log-*.txt, which are ignored.
- Collect and commit a release baseline summary after the next intentional LOD visual tuning pass.
- Add image-diff thresholds once baseline screenshots are stable enough for CI.
- Tree extraction can still increase worker cost in dense forests.
- Section boundaries need continued attention for duplicate or missing trees.
- Terrain and tree fade timing should stay synchronized to avoid visible popping.