103 lines
5.4 KiB
Markdown
103 lines
5.4 KiB
Markdown
# RND — Rendering and Graphics
|
||
|
||
## Цель
|
||
|
||
Воспроизвести визуальные правила WoW 3.3.5a и дать opt-in улучшения, сохранив frame pacing на больших мирах Godot.
|
||
|
||
## RND-1. Renderer architecture
|
||
|
||
- `WorldRenderFacade` принимает focus, environment snapshot и entity presentation commands.
|
||
- `StreamingTargetPlanner` вычисляет desired state без Node creation.
|
||
- `RenderBudgetScheduler` ограничивает main-thread finalize по типам операций.
|
||
- Terrain, M2, WMO, liquid, sky, character, effects и debug overlays — отдельные services.
|
||
- RenderingServer/RIDs применяются только там, где profiler доказал overhead scene tree.
|
||
- Ownership каждого RID и cache entry документируется; world unload проверяет leaks.
|
||
|
||
## RND-2. World streaming
|
||
|
||
- WDT-driven tile catalog, priority по position/direction/velocity/camera frustum.
|
||
- Prewarm, retain и hysteresis исключают churn на ADT boundaries.
|
||
- Separate budgets для I/O, parse, mesh/material load, main-thread attach и eviction.
|
||
- Cold/warm cache scenarios, teleport, rapid flight и camera rotation stress.
|
||
- Cancellation stale jobs при teleport/map change.
|
||
- Streaming focus не обязан быть Camera3D: player, spectator, editor viewport, capture tool.
|
||
|
||
## RND-3. Terrain
|
||
|
||
- Точная 145-vertex MCNK topology, holes, normals и coordinate seams.
|
||
- Texture layer order, MCAL alpha variants, animation flags, repeat и mip behavior.
|
||
- Control-splat/array implementation как Godot optimization с fidelity tests.
|
||
- WDL/distant terrain и hierarchical LOD.
|
||
- Terrain collision/query representation отдельно от visual mesh.
|
||
- Editing path: sculpt, smooth, flatten, holes, texture paint, seam repair и rebake.
|
||
|
||
## RND-4. M2
|
||
|
||
- Static geometry, SKIN batches, blend modes, flags, UV transforms и texture lookup.
|
||
- Native pivot-based skeletal animation, bone palettes, global sequences и animation lookup.
|
||
- Billboards, attachments, key bones, events, cameras и bounding volumes.
|
||
- Particles, ribbons, texture animation и material combiners.
|
||
- Static doodads группировать spatial MultiMesh cells; animated/interactive entities не смешивать со static batching.
|
||
- MultiMesh buffer updates выполнять батчем; cell size выбирать по culling, а не только draw-call minimum.
|
||
|
||
## RND-5. WMO
|
||
|
||
- Root/group materials, batches, vertex colors, multiple UV sets и doodad sets.
|
||
- Portals/rooms, indoor/outdoor, BSP/collision, fog и group visibility.
|
||
- MLIQ, skybox, lights и ambient color semantics.
|
||
- Lightweight render cache для больших WMO и incremental group attach.
|
||
- Editor tools для group/portal/doodad validation.
|
||
|
||
## RND-6. Characters and creatures
|
||
|
||
- Race/gender/customization from DBC.
|
||
- Geosets, skin regions, hair/facial features и composited textures.
|
||
- Equipment component models/textures, attachment points, sheath, enchant visuals.
|
||
- Animation state resolver: locomotion, combat, casting, emotes, death, swim, mount, vehicle.
|
||
- CreatureDisplayInfo/Extra/ModelData, NPC equipment, pets и shapeshift.
|
||
- Character preview uses same presenter as world runtime.
|
||
|
||
## RND-7. Liquids
|
||
|
||
- MH2O/MCLQ layers, existence masks, heights, depth и liquid type.
|
||
- Отдельные profiles water/ocean/magma/slime.
|
||
- Blizzlike material: texture animation, alpha, lighting и fog behavior.
|
||
- Enhanced material: normals, reflections, depth/shore blending — opt-in.
|
||
- Liquid collision/swim state принадлежит gameplay/physics query, не shader.
|
||
|
||
## RND-8. Environment
|
||
|
||
- DBC-driven Light/LightParams/LightIntBand/LightFloatBand interpolation.
|
||
- Server time, day/night, zone/subzone transitions.
|
||
- Skyboxes, fog, ambient/directional light, weather visual state.
|
||
- Blizzlike cheap shadow policy; enhanced selective character/object shadows отдельно.
|
||
- Camera far plane, fog и streaming distances согласованы профилем.
|
||
|
||
## RND-9. Effects and presentation
|
||
|
||
- SpellVisual/SpellVisualKit-driven cast/impact/aura effects.
|
||
- Projectiles, decals, dynamic objects, combat text и selection circles.
|
||
- Weather particles и world emitters.
|
||
- Cinematic/model cameras и loading transitions.
|
||
- Effects have pooling, lifetime, visibility и per-frame budgets.
|
||
|
||
## RND-10. Graphical extensions
|
||
|
||
- Higher-resolution content overlays без модификации originals.
|
||
- Anisotropy, extended draw distance, improved water/shadows, post-processing и upscaling.
|
||
- Optional PBR approximation only when it does not replace Blizzlike material profile.
|
||
- Graphics settings expose measurable cost and fallback.
|
||
- Editor comparison viewport: Blizzlike/Enhanced side-by-side, screenshot и metric capture.
|
||
|
||
## Verification
|
||
|
||
- Paired checkpoints с original 3.3.5a по position/time/weather/camera.
|
||
- Material/animation fixtures from independent references.
|
||
- Perceptual diff плюс human approval для intentional deviations.
|
||
- p50/p95/p99, max hitch, draw calls, visible objects, GPU/CPU memory и RID leak checks.
|
||
- D3D12/Vulkan and quality profile matrix.
|
||
|
||
## Gate
|
||
|
||
Видимый мир не деградирует при декомпозиции; under-foot/near-field quality готова до появления в кадре; long traversal не создаёт recurring hitches/leaks; Enhanced всегда отключаем.
|