diff --git a/LIGHTING.md b/LIGHTING.md index 09a103c3..07e0b349 100644 --- a/LIGHTING.md +++ b/LIGHTING.md @@ -34,6 +34,7 @@ behind each constant. | Foliage wind | one weather-fed gust/veer field drives grass and classified tree/bush foliage; grass also parts around the player and nearby units | Advanced Graphics → Foliage Wind, cvar `foliageWind` 0 Off / 1 Grass / 2 Grass + Trees (High = 2), capture override `WOW_FOLIAGE_WIND`; field and benders in `benilla-world/src/wind/`. The wave phase is the CPU-integrated travel (speed integrated over time, wrapped seamlessly), and the waves' spatial term uses the fixed profile heading; the veer turns only the bend. Tree exile copies sway through material marker bit 14 (`FOLIAGE_WIND_MARKER`). Capture offset `WOW_CAPTURE_WIND_T` (s). Known: shadow casters (world-shadow proxies, `torch_depth.wgsl`) do not apply the sway, so leaves sample a static shadow; a future world-camera DepthPrepass must call the same offsets | | Ambient occlusion | soft contact shadows under props, in wall-floor corners and around feet; depth-only SSAO at half resolution (depth-reconstructed normals, 6/12 spiral taps, 4x4 depth-aware blur, bilateral upsample) multiplied into the opaque scene after the opaque pass and before the water copy, so water, particles and UI are untouched; fades out 45-90 yd (Low) / 60-120 yd (High), spares sky and bright pixels (`benilla-app/src/ssao.rs`, `benilla-app/src/shaders/ssao.wgsl`) | Advanced Graphics → Ambient Occlusion (Off/Low/High; default Off, High preset 2), cvar `ambientOcclusion`, env `WOW_AO=0\|1\|2`, `WOW_AO_DEBUG=1..4` diagnostic views (factor, protection, distance, raw occlusion), `WOW_AO_GAIN`/`_RADIUS`/`_BIAS`/`_STRENGTH` tuning | | Lamp fog | MONKEY (lampfog): the fog fullscreen pass selects the nearest resolved exterior and interior point-table sources and analytically integrates their softened inverse-square light over the camera-to-scene-depth ray. A near-field haze floor makes lamps visible inside the ordinary volumetric haze's 10 yd clear zone; it is zero by day, stronger in rain/fog, and deliberately unshadowed. The table colour already includes intensity, flame flicker and `fireLightGain`. Halo output uses destination headroom and stays below 1.0, so a later bloom pass cannot blow it out | Advanced Graphics → Lamp Fog, cvar `lampFog` 0 Off (default, unchanged) / 1 Low (16 lamps) / 2 High (32 lamps; Graphics preset High = 2), env `WOW_LAMPFOG=0\|1\|2`; `benilla-app/src/volumetric_fog.rs` | +| Zone skyboxes | the painted sky a zone's `LightParams` names (clear-weather slot, storm slot lerped by the storm blend) for the living, fading in by the Light sphere falloff with the modern client's crossfade (ghost > WMO > zone); extended `LightSkybox.dbc` flags `0x1` day cycle, `0x2` keep sun/moon/stars/clouds, `0x4` fog-colour horizon cone, plus a celestial second model; every skybox now plays its bones, texture transforms, colour and alpha tracks (`benilla-world/src/skybox.rs`, `skybox_anim.rs`, `benilla-formats/src/light/skybox.rs`) | Advanced Graphics → Zone Skyboxes, cvar `zoneSkyboxes` (0 Off default, 1 On; High = 1), env `WOW_ZONE_SKYBOXES=0\|1` | | Night and interior level | global dimming of the night sky term and of interior ambient | `nightGain`, `interiorGain`, `interiorBakeFloor` | Players reach all of it from **Options -> Advanced Graphics** (a Lighting Quality preset Off / Low / Medium / High plus the individual rows; Off is the original client look). The dev build has a panel for all of it: **Ctrl+Shift+D → Lighting & shadows**, with Dim / Default / diff --git a/crates/benilla-app/assets/ui/OptionsFrame.xml b/crates/benilla-app/assets/ui/OptionsFrame.xml index 5fef7d3c..d9ad6c90 100644 --- a/crates/benilla-app/assets/ui/OptionsFrame.xml +++ b/crates/benilla-app/assets/ui/OptionsFrame.xml @@ -501,6 +501,8 @@ -- MONKEY (sky): the sky tier row. skyQuality = "Sky Quality", fogOff = "Off", + -- MONKEY (skybox): the zone skybox row. + zoneSkyboxes = "Zone Skyboxes", waterQuality = "Water Quality", waterClassic = "Classic", waterEnhanced = "Enhanced", @@ -570,6 +572,12 @@ .. "gradient, adds a soft glow around the sun and a starry night sky with the " .. "Milky Way. High also gives the clouds finer detail and sunlit edges. " .. "Costs very little.", + -- MONKEY (skybox): what the zone skybox row changes. + ZONE_SKYBOXES = + "Draws the painted sky a zone's lighting names, as later expansions do: " + .. "the volcanic sky of the Burning Steppes, the alien sky of the Blasted Lands " + .. "and the starry night over Mount Hyjal, fading in at the zone's edge. " + .. "Off keeps the original client's sky everywhere but ghost and dungeon skies. Nearly free.", WATER_QUALITY = "Classic is the original client's water. Enhanced adds soft shorelines, " .. "animated foam around shores and objects, moving wave highlights, sky reflection " @@ -709,6 +717,8 @@ Applies to buildings loaded after the change. " -- MONKEY (sky): the sky tier row. skyQuality = "Качество неба", fogOff = "Выкл", + -- MONKEY (skybox): the zone skybox row. + zoneSkyboxes = "Небосводы зон", waterQuality = "Качество воды", waterClassic = "Классическое", waterEnhanced = "Улучшенное", @@ -780,6 +790,12 @@ Applies to buildings loaded after the change. " .. "цветовой переход неба, добавляет мягкое сияние вокруг солнца и звёздное " .. "ночное небо с Млечным Путём. «Высокое» также добавляет облакам мелкие " .. "детали и освещённые солнцем края. Почти не влияет на производительность.", + -- MONKEY (skybox): what the zone skybox row changes. + ZONE_SKYBOXES = + "Рисует нарисованное небо, заданное освещением зоны, как в поздних дополнениях: " + .. "вулканическое небо Пылающих степей, чужое небо Выжженных земель " + .. "и звёздную ночь над горой Хиджал, с плавным появлением на границе зоны. " + .. "«Выкл.» оставляет небо оригинального клиента везде, кроме неба призрака и подземелий. Почти бесплатно.", WATER_QUALITY = "«Классическое» — вода оригинального клиента. «Улучшенное» добавляет плавные переходы у берегов, " .. "анимированную пену у берегов и вокруг объектов, подвижные блики на волнах, отражение неба " @@ -993,6 +1009,8 @@ Applies to buildings loaded after the change. " "RowLampFog", -- MONKEY (integration): daylight window split. "RowDaylightWindowSplit", + -- MONKEY (integration): the skybox lane's row (the lane left it out of this list). + "RowZoneSkyboxes", }, -- Player Guild Names is a child of Player Names, as in 1.12 (l.702-708). Nameplates = { @@ -3186,6 +3204,18 @@ Applies to buildings loaded after the change. " "BENILLA_TOOLTIP_DAYLIGHT_WINDOW_SPLIT") + + + + + + + + OptionsRow_OnLoad(self, "zoneSkyboxes", + BENILLA_ADVGFX.zoneSkyboxes, + "BENILLA_TOOLTIP_ZONE_SKYBOXES") + +