Files
open-wc/targets/00-render-baseline.md
2026-07-10 11:21:33 +04:00

4.0 KiB

M00 — Renderer Baseline

Outcome

Получить воспроизводимую точку отсчёта текущего renderer до архитектурной декомпозиции.

Steps

  • Зафиксировать версию Godot, backend, hardware/profile и cache state.
  • Выбрать контрольные позиции: terrain, ADT boundary, dense M2, large WMO, liquid, animated M2, sky transition.
  • Объединить существующие renderer smoke scripts в документированный запуск без изменения visual behavior.
  • Снять deterministic screenshots и metadata для каждой позиции.
  • Записать cold/warm показатели frame time p50/p95/p99, max hitch, memory, queues и load time.
  • Зафиксировать cache format versions и правила invalidation.
  • Добавить regression manifest, не содержащий proprietary assets.
  • Обновить 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

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.