114 lines
7.0 KiB
Markdown
114 lines
7.0 KiB
Markdown
# M04 — Renderer Fidelity and Graphics Foundation
|
|
|
|
<!-- OPENWC_TARGET:ACTIVE -->
|
|
|
|
## 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:
|