# M00 — Renderer Baseline ## Outcome Получить воспроизводимую точку отсчёта текущего renderer до архитектурной декомпозиции. ## Steps - [x] Зафиксировать версию Godot, backend, hardware/profile и cache state. - [x] Выбрать контрольные позиции: terrain, ADT boundary, dense M2, large WMO, liquid, animated M2, sky transition. - [x] Объединить существующие renderer smoke scripts в документированный запуск без изменения visual behavior. - [x] Снять deterministic screenshots и metadata для каждой позиции. - [x] Записать cold/warm показатели frame time p50/p95/p99, max hitch, memory, queues и load time. - [x] Зафиксировать cache format versions и правила invalidation. - [x] Добавить regression manifest, не содержащий proprietary assets. - [x] Обновить `RENDER.md` ссылкой на baseline и известные расхождения с клиентом 3.3.5a. ## Fidelity evidence - Сравнить контрольные сцены с оригинальным клиентом 3.3.5a при максимально совпадающих map position, time и weather. - Каждое видимое расхождение зарегистрировать: terrain/material, placement, animation, lighting, liquid или culling. - Baseline не объявляет parity; он создаёт измеримый список gap. ## Verification ```powershell godot --headless --path . --quit godot --headless --path . --script res://src/tools/verify_render_materials.gd godot --headless --path . --script res://src/tools/verify_m2_unique_dedupe.gd godot --headless --path . --script res://src/tools/capture_render_checkpoints.gd -- --dry-run --wait 0.1 ``` ## Exit criteria Один документированный запуск создаёт отчёт baseline; контрольные точки воспроизводимы; gaps и budgets записаны; последующий refactor можно объективно сравнить. ## Evidence - Date: 2026-07-10 - Revision/worktree: `93bfe11` + worktree baseline changes. - Commands: `.\tools\run_render_baseline.ps1 -DryRun -WaitSeconds 0.1 -MeasureSeconds 0.1 -Output user://render_baseline_runner_test`; `.\tools\run_render_baseline.ps1 -Output user://render_baseline_m00_2026-07-10 -CacheState existing`. - Results: headless load, renderer material smoke, M2 unique-id dedupe and manifest contract passed. Full run produced 14 PNGs and 14 result records for 7 cold/warm checkpoints. Actual renderer was Godot 4.6.1, Vulkan Forward+, NVIDIA RTX 5070, 1280x900, High profile, with all seven cache families present. Cold p95 range was 31.585..86.537 ms with max hitch 258.456 ms; warm p95 range was 18.824..38.085 ms with max hitch 163.363 ms. The final streaming snapshots had an empty tile queue. Report: `user://render_baseline_m00_2026-07-10/report.json`. - Fidelity comparison: fixed positions/time/profile and current visual gaps are recorded, but no approved paired screenshots from the original WoW 3.3.5a build 12340 were available. This baseline does not claim parity. - Changed files: `RENDER.md`, `docs/RENDER_BASELINE.md`, `src/scenes/streaming/streaming_world_loader.gd`, `src/tools/capture_render_checkpoints.gd`, `src/tools/render_baseline_manifest.json`, `src/tools/verify_render_baseline_manifest.gd`, `tools/run_render_baseline.ps1`, `targets/00-render-baseline.md`. - Remaining risks: original-client paired comparison is still required before DONE; D3D12 descriptor heap creation failed and the measured run fell back to Vulkan; shutdown reported leaked renderer RIDs/resources; current captures intentionally preserve visible terrain/placement/material/animation gaps, including the synthetic native animated M2 probe; perceptual image diff/tolerance is documented but not automated yet.