7.0 KiB
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-inEnhanced/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
RenderingDevicerenderer без 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: