Files
open-wc/targets/04-renderer-fidelity.md

7.0 KiB

M04 — Renderer Fidelity and Graphics Foundation

Outcome

Довести графическую основу OpenWC до evidence-backed визуальной совместимости с оригинальным клиентом WoW 3.3.5a build 12340 и создать общий graphics contract для дальнейшего клиента, Editor preview и отдельного racing-профиля.

Noggit используется как дополнительный ориентир композиции и authoring preview, но не заменяет оригинальный клиент как fidelity oracle.

Benilla используется как pinned secondary reference для M2 animation/material architecture, particles/ribbons, WMO portal visibility и temporal test ideas. Его Vanilla 1.12.1/Bevy behavior не заменяет build-12340 captures и не подтверждает WotLK parity без отдельного fixture comparison.

Reference corpus

  • Принять versioned CSV manifest и валидатор оригинальных captures.
  • Импортировать минимум две позиции каждой выбранной локации: wide для неба/тумана/дальности/композиции и ground для terrain/material/M2/WMO.
  • Сохранять map/zone/subzone, WoW/server coordinates, orientation, доступные camera parameters, time, weather, graphics profile, viewport и имя артефакта.
  • Не угадывать отсутствующие camera значения: хранить Unknown, landmark и ограничение сравнения.
  • Хранить proprietary screenshots/video вне Git; в репозитории сохранять manifest, SHA-256, provenance, metrics, classifications и human approval.
  • Добавить выбранную матрицу dawn/day/dusk/night, weather, shadow и liquid quality без полного комбинаторного умножения всех локаций.
  • Добавить temporal clips/кадры для water, animation, billboards, particles, ribbons, weather и spell effect lifecycle.

Graphics foundation

  • Ввести явный graphics profile contract: Blizzlike335 и opt-in Enhanced/Racing; улучшения не меняют Blizzlike-путь и не маскируют gaps.
  • Зафиксировать color pipeline: source color space, sampling, gamma, tonemapping, fog, alpha coverage и deterministic capture output.
  • Заменять approximate constants только после paired original-client evidence; каждое осознанное расхождение регистрировать по подсистеме.
  • Сохранить WorldRenderFacade, streaming budgets, cache versioning и main-thread GPU finalization boundaries M03.
  • Не начинать полный custom RenderingDevice renderer без bounded spike, profiler evidence и ADR; сначала использовать точные Godot shader passes.

Required implementation order

  • Environment: точная DBC interpolation, sky/skybox, ambient/directional light, zone transitions, fog, day/night и weather presentation.
  • Terrain: MCNK topology/normals/holes, MCAL variants/layer animation, filtering/mips, MCSH/baked shadow data, seams и WDL distant terrain.
  • M2/WMO materials: build-12340 blend/depth/cull flags, alpha test, multi-texture combiners, vertex colors, emissive/unlit, UV animation, billboards, WMO indoor/outdoor, portals, local lights и fog semantics.
  • Shadows: воспроизвести оригинальную policy для выбранных graphics settings; terrain/baked, character/object и dynamic shadows проверять раздельно.
  • Liquids: MH2O/MCLQ/MLIQ geometry, masks/heights/depth, original animated textures и water/ocean/magma/slime/underwater behavior. Enhanced reflections, normals и shore blending остаются opt-in.
  • Animation/characters: GPU skinning path, sequences/blending/global sequences, attachments, geosets, customization, equipment, mounts и vehicles; CPU deformation оставить только измеренным fallback/diagnostic path.
  • Effects: M2 particles/ribbons, texture animation, weather emitters, SpellVisual/SpellVisualKit cast/projectile/impact/aura presentation, pooling, deterministic lifetime и visibility budgets.
  • Racing readiness: renderer/world/character/effects APIs не зависят от WoW gameplay/network; racing profile меняет только явные graphics capabilities.

Verification

  • Original-client/OpenWC paired captures используют одинаковые viewport, camera contract, position, time, weather и graphics profile либо явно классифицируют неизвестное поле.
  • Static comparison включает full-frame и semantic regions; geometry/framing, material, lighting, shadow, liquid, animation/effect gaps не смешиваются.
  • Temporal comparison проверяет phase, duration, trajectory, UV motion и emitter lifetime, а не только один случайный кадр.
  • GPU test matrix покрывает Godot Forward+/D3D12/Vulkan, cold/warm load, rapid traversal, teleport, weather/time transitions и profile switching.
  • Обязательны p50/p95/p99, max hitch, draw calls, visible objects, CPU/GPU memory, shader/cache stability и Node/Resource/RID leak checks.

Exit criteria

  • Reference corpus покрывает обязательные static и temporal классы и проходит schema/provenance/hash validation.
  • Все пункты renderer coverage map имеют evidence-backed статус; Verified допускается только с original-client fixture и human approval.
  • Для утверждённой build-12340 capture matrix не остаётся неклассифицированных визуально различимых gaps; принятые engine/GPU отклонения имеют измеренный tolerance, rationale и artifact evidence.
  • Blizzlike335 сохраняет оригинальную policy, Enhanced/Racing выключаем и не изменяет default behavior.
  • Long traversal не создаёт recurring hitches, cache churn или renderer leaks; M03 performance budgets остаются зелёными либо изменены только отдельным evidence-backed решением.
  • Character, animation, liquid, shadow и effects contracts пригодны для runtime, Editor preview и будущего racing fork без зависимости от network/gameplay.

Evidence

  • Date:
  • Revision/worktree:
  • Original-client build/settings/corpus:
  • Commands:
  • Static/temporal comparison results:
  • Performance and lifetime results:
  • Human approval:
  • API/module docs and diagrams:
  • Changed files:
  • Remaining risks: