# 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 всегда отключаем.