Commit Graph
530 Commits
Author SHA1 Message Date
pkuzicandGPT-5.6 Sol (Codex) df78c4758e MONKEY (reviewfix): preserve missing stage-one UV transforms
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 23:23:43 +01:00
pkuzicandGPT-5.6 Sol (Codex) 132b1d07c4 MONKEY (reviewfix): document Classic skybox fidelity
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 23:22:02 +01:00
pkuzicandGPT-5.6 Sol (Codex) 33061bd94b MONKEY (reviewfix): keep skybox clocks precise
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 23:21:11 +01:00
pkuzicandClaude Opus 5.5 f7715c80af MONKEY (followups): reduce SSAO grain on alpha-tested foliage
STAGE_AO flags a two-sided depth spike (the smaller one-sided step two pixels out, capped by the
second difference: ~0 on planes, grazing planes, silhouettes and contact creases) and stores the
smoothness in alpha. STAGE_BLUR turns the spike density of its 4x4 window into a foliage mask,
widens the depth tolerance there (up to 11x) and scales the occlusion by 1 - 0.4 * mask. Smooth
windows are unchanged. WOW_AO_DEBUG=5 shows the mask. LIGHTING.md documents this and the two
earlier followups fixes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 22:02:01 +01:00
pkuzicandClaude Opus 5.5 14578ea26b MONKEY (followups): re-apply the saved presets to rows missing from config
On load, Cvars::reapply_saved_presets writes the saved graphicsQuality rung (and the saved
lightingQuality rung, else the Graphics rung's) over every governed row the file does not carry,
so a row registered after the save follows the preset instead of its registered default. Rows the
file carries and session-owned rows stay; Custom writes nothing. Tests for both ladders.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 21:53:25 +01:00
pkuzicandClaude Opus 5.5 e970cedcf2 MONKEY (followups): refresh the streamed shadow cache without volumetric fog
The static world caster rebuilds only on 16 yd of camera drift. The refresh that invalidates it
when streamed geometry arrives lived in the volumetric-fog plugin and was gated on that cvar, so
with volumetricFog 0 a standing camera never picked up trees and doodads that streamed in late.
The refresh now lives in world_shadow.rs and is gated on worldShadows only (Classic unaffected).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 21:53:25 +01:00
pkuzicandClaude Opus 5.5 b36848bc68 MONKEY (integration): order tick_shelter before the lighting resolve set
It reads MonkeyFrame.wetness while update_fog_model writes MonkeyFrame; the
undeclared pair put the ambiguity count one over the 5,582 ceiling.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 20:31:25 +01:00
pkuzicandClaude Opus 5.5 88e8096991 MONKEY (integration): merge graphics-programme-rainshelter
Camera-centred rain-occlusion height map for the wet lane (clean merge).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 19:53:18 +01:00
pkuzicandClaude Opus 5.5 6bf7c409a2 MONKEY (integration): merge graphics-programme-presets
Graphics Preset ladder + Render Distance (farclip ceiling 1497). Conflict in
options_tests: the Advanced page now has 33 rows (preset + render distance lead,
then the 31 programme rows). The three round-3 rows join the ladder:
ambientOcclusion 0/0/1/2/2, zoneSkyboxes 0/0/1/1/1, lampFog 0/0/1/2/2
(Classic/Low/Medium/High/Ultra); the preset tooltip names them (EN+RU).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 19:52:52 +01:00
pkuzicandClaude Opus 5.5 5467066041 MONKEY (integration): LIGHTING.md row for daylightWindowSplit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 19:46:18 +01:00
pkuzicandClaude Opus 5.5 810cc56df6 MONKEY (integration): RU torch-terrain tooltip newline; RenderSubmesh.stage1 in the billboard-card test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 19:28:49 +01:00
Claude 2f467713f5 MONKEY (rainshelter): document the rain-occlusion map and buffer region
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R8t89gSUuo1uvbXKdh1mJt
2026-09-25 18:10:12 +00:00
Claude 8b3c07fc11 MONKEY (rainshelter): receivers read the shelter map
wet_hook gains shelter_taps/shelter_cell/shelter_amount (bilinear over
four cells; sheltered when a covered top is >= ~1 yd above the fragment,
the roof's own surface stays open). terrain, wow_model and static_gx
mirror the region after monkey and scale wet exposure by 1 - shelter
(wet_puddles takes exposure, so no puddles under cover); enhanced_water
suppresses rain rings under bridges/roofs via its row view. The lookup
runs only while wetness > 0 and the header is active, so a dry frame is
unchanged.

Verified: the wet_hook + receiver/water lookup snippets composed and
validated with naga_oil 0.20 / naga 27 (scratch harness; unpack2x16float
avoided - it needs a float16 capability). Full receiver shaders were not
compiled here (no GPU, no game data).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R8t89gSUuo1uvbXKdh1mJt
2026-09-25 18:10:12 +00:00
Claude a9409c4e38 MONKEY (rainshelter): camera-centred rain-occlusion height map
128x128 cells of 0.75 yd around the camera, recentred in 16-cell steps.
Filled by vertical rays against the collision world (the precip ground
oracle's SpatialQuery + body filter): top surface, then down each hit
until an air gap >= 1.2 yd marks the column covered. Cover is eroded two
cells (drip margin) and 3x3 blurred (soft edge), packed with the top
height into one u32 per cell. 192 casts/frame while filling (nearest
first), 32/frame refresh once full; idle and header off when dry or
rainSurfaces=0.

The grid rides the shared light buffer as a new region right after the
MonkeyFrame block; the prop-probe region (and everything chained from it)
moves up by 65568 B. Uploads only the header and changed rows.

Verified: cargo test -p benilla-world --lib (652 pass, 9 new shelter
tests: column probe, transform, recentre, budget, porch shelter/drip,
packing, region alignment); cargo check -p benilla. Linux only; no
platform seams.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R8t89gSUuo1uvbXKdh1mJt
2026-09-25 18:10:12 +00:00
pkuzicandClaude Opus 5.5 552a0b61c6 MONKEY (integration): fix the programme's test failures (warm names, shader embed, dev door, CRLF/path-separator test bugs, float compare, tooltip newlines) and declare the missing system orders
- ssao.wgsl registered in shaders::plugin and loaded by its embedded path
- wind/wetness/fog-model MonkeyFrame writers ordered; viewer publish before its readers;
  sky clock + sky tier before LightingConsumeSet; zone skybox chain joins the consume set;
  grass benders read GlobalTransform
- ambiguity ceiling re-measured with the reason (MatAnimTable allocator + exclusive-system pairs)
- verb_event_gate: Windows separators; AddSkillUp/RemoveSkillUp GAP rows
- ui_session portrait test: CRLF checkout
- spell envelope fuse assertion: f32 tolerance
- daylightWindowSplit tooltip: escaped \n (raw line breaks broke the Lua chunk)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 19:09:34 +01:00
Claude c7f91ef62c MONKEY (presets): Graphics Preset ladder and Render Distance row
Advanced Graphics gains a Graphics Preset row (cvar graphicsQuality:
Classic / Low / Medium / High / Ultra / Custom) and a Render Distance slider
on farclip (177..1497, same cvar as Graphics' Terrain Distance). The ladder is
GRAPHICS_PRESETS in cvars.rs, one line per governed row with a column per
rung; lightingQuality is itself a row, so the lighting ladder's members follow
it. The lighting ladder gains an Ultra rung (4096 sun map, 16/8 torch maps,
High water, High volumetric fog). The label is re-derived every frame beside
lightingQuality, so editing a governed row shows Custom.

A player whose config.toml names no graphicsQuality is seeded to High at
startup over the rows the file does not carry; captures, tests and malformed
files never seed, and the rows keep their per-lane registered defaults. The
page's Defaults lands on High too. ambientOcclusion, zoneSkyboxes and lampFog
are commented one-line TODO rows until their cvars land.

Verified: cargo test -p benilla-app --lib -- options cvars preset (136
passed, incl. 7 new preset tests); full benilla-app lib: 3722 passed, 5
pre-existing failures unrelated to this change (spell envelope float, schedule
ambiguity ceiling, pipe_warm fog/shaft/shadow lanes, dev-plane cfg). The
options UI tests need WoW data and were skipped; no captures (no install in
the cloud). Built on Linux only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Toc8dZYuTKW1JWBFbMb5S1
2026-09-25 18:00:24 +00:00
Claude 5203b830ab MONKEY (presets): farclip ceiling 777 -> 1497 for Modern fog's longer view
FARCLIP_RANGE now ends at FARCLIP_MAX = 1497 (the 1.12 slider grid of 60
carried to n = 22), a documented deviation: Modern fog already stretches the
fog end past 777 with farclip, so a longer view is visible. Terrain residency,
the model/WMO and particle walls follow farclip; at 1497 residency is at most
7x7 ADT tiles against 777's 5x5, which is the memory bound. The art-scope
sweep radius rises to 7 tiles to stay clear of the widest resident reach.

Verified: cargo test -p benilla-world --lib (643 passed). Built on Linux only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Toc8dZYuTKW1JWBFbMb5S1
2026-09-25 18:00:24 +00:00
pkuzicandClaude Opus 5.5 2f68d4c4e6 MONKEY (integration): merge gfx/skybox
Zone Skyboxes row moved to the end of the Advanced Graphics page and added to
OPTIONS_PAGE_ROWS (the lane had left it out of the list).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:08:23 +01:00
pkuzicandClaude Opus 5.5 3816d5c47a MONKEY (integration): Advanced Graphics row for daylightWindowSplit (EN+RU)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:06:45 +01:00
pkuzicandClaude Opus 5.5 34f754c5a9 MONKEY (integration): warm the shafts, fog and AO pipelines on every 3-D view
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:06:45 +01:00
pkuzicandClaude Opus 5.5 eefd0037db MONKEY (integration): capture-only knobs ask run_mode::dev_affordances (one dev door)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 18:06:45 +01:00
pkuzicandClaude Opus 5.5 22d75ea613 MONKEY (skybox): second texture stage for two-texture skybox batches
RenderSubmesh carries stage 1 (texture, UV set, transform, Mod/Mod2x) for
textureCount 2 batches; M2Vertex reads UV1. WowModelExt gains a stage1
uniform + texture binding 94/95 and the WOW_STAGE1 shader def, so every
one-texture batch compiles the old code. The skybox lane binds stage 1 on
its own material copies and drives its transform rows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:50:38 +01:00
pkuzicandClaude Opus 5.5 4ba6e7c9c2 MONKEY (integration): keep build_light_data within Bevy's 16 system params (post + lampfog each added one)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:47:26 +01:00
pkuzicandClaude Opus 5.5 d554ffe939 MONKEY (integration): merge gfx/lampfog
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:36:40 +01:00
pkuzicandClaude Opus 5.5 c1e4569af3 MONKEY (integration): merge gfx/ao
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:33:52 +01:00
pkuzicandClaude Opus 5.5 c524b205c7 MONKEY (fix-daylight): repair the Torch Terrain Shadows tooltip string
The daylight lane's tooltip had raw line breaks inside a Lua string instead of
an escaped blank line, a syntax error that broke OptionsFrame.xml's inline
script (an error dialog on the UI-fixture captures).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:18:44 +01:00
pkuzicandClaude Opus 5.5 5d201387ee MONKEY (fix-fog): LightFogBand sample without a per-frame Vec (review B11)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:17:00 +01:00
pkuzicandClaude Opus 5.5 361850a49d MONKEY (fix-wind): document the static shadow under swaying leaves (review W6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:04:05 +01:00
pkuzicandClaude Opus 5.5 55e155cb97 MONKEY (fix-wet): wet-stormwind-night capture scenario
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:03:14 +01:00
pkuzicandClaude Opus 5.5 5cadc52a49 MONKEY (fix-daylight): gate the district window split; per-slot terrain torch keys
Review B4: the Stormwind window split changed the default image with no switch.
New cvar daylightWindowSplit (default 1 = merged behaviour, a future High-only
preset member), bridged to daylight::set_window_split. Review B5: each settled
exterior torch slot is keyed by the resident tiles whose footprint reaches its
sphere (terrain_torch_generation_near), not a global stamp that re-rendered
every slot on any stream event.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:02:15 +01:00
pkuzicandClaude Opus 5.5 cd32ca2044 MONKEY (fix-wind): one grass bend span per model; warm the clutter UV_1 layout
Review W4: the bend height was normalised per submesh, so a trunk + canopy
detail doodad tore apart at the seam; the span is now taken over all of the
model's submeshes. Review W5: clutter meshes carry UV_1 (VERTEX_UVS_B), so the
six clutter pipelines are also warmed on the POS+NORMAL+UV0+UV1+COLOR quad.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:02:12 +01:00
pkuzicandClaude Opus 5.5 263d7ab765 MONKEY (fix-sky): order the sky and cloud FX readers after tick_clouds
Review B9: update_sky_colors and update_cloud_fx read the cloud coverage with no
order against tick_clouds, so the glow's cover sample was this frame's or the
last one's nondeterministically. New CloudTick set; both run after it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:02:09 +01:00
pkuzicandClaude Opus 5.5 4f5dd17f8d MONKEY (fix-sky): day-long f64 sky clock; twinkle rates whole cycles per wrap
Review B2: the f32 clock wrapped hourly and every star's twinkle jumped at the
wrap. It now accumulates in f64 and wraps at 86400 s; the shader rounds each
twinkle rate to whole cycles per wrap, so the stars are seamless. The High
cloud detail drift still re-patterns once per 24 h (noted).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:57:20 +01:00
pkuzicandClaude Opus 5.5 9c7e5fa4da MONKEY (fix-wet): seamless ripple wrap, no dry-weather churn, no sheen NaN, windows stay lit
Review B3: floor(cycle) % 50 keeps the ring roll continuous across the 1000 s
wrap. B8: publish the ripple clock only while it rains. B7: nudge the wet
sheen half-vector off zero. B6: WORD_WINDOW batches are excluded from wet
darkening.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:56:30 +01:00
pkuzicandClaude Opus 5.5 76cee36b2c MONKEY (fix-post): bloom keeps the base image; window gain on the light term only
Review P4: emissive_boost now lifts only above a 0.6 knee (equal to the old
gain at 1.0), so additive spells and lava keep their look and the excess feeds
the bloom. Review P3: the window gain applies to static_gx's SIDN light term
before fog, not to the whole fogged batch. Review P6: Low-tier extract taps
scale with the quarter-size target. Review P7: excess capped at 64 (no NaN).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:55:55 +01:00
pkuzicandClaude Opus 5.5 bcc528d6fd MONKEY (fix-post): sun shafts fall off radially; exact sky-depth test; one MSAA sample
Review P1: the path mean lifted every clear sky pixel equally; it is now the
occlusion ratio times an aspect-corrected radial falloff from the sun.
Review P2: sky = depth <= 1e-7 (cleared / sky-pinned), no longer a nearclip-
dependent ramp. Review P5 (partial): read one MSAA sample per tap.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:58 +01:00
pkuzicandClaude Opus 5.5 72a0a36fe8 MONKEY (fix-sky): Enhanced/High sky mixes the Modern fog horizon into the gradient
The integration wrapped the final gamma colour in fog_sky_horizon, whose weight
is 1 at 0 deg, so the sunset glow was erased at the horizon. Mix the Modern far
fog colour into the linear gradient before the glow and stars (review A1) and
return from the SKY_FX branch; the Classic tail keeps fog_sky_horizon.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:31 +01:00
pkuzicandClaude Opus 5.5 512c81f43e MONKEY (fix-wind): tree exile sway rides a material marker, not MeshTag bit 18
Bit 18 aliases the top lane-weight bit and bit 12 of the interior probe slot,
so doorway units and probe-lit interior props swayed like trees. A classified
leaf batch's fade-band exile now gets marked copies of its cutout/blend
materials (clutter_fade.z bit 14, FOLIAGE_WIND_MARKER, not a key axis) and
wow_model.wgsl sways only those.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:08 +01:00
pkuzicandClaude Opus 5.5 f0526d610b MONKEY (fix-wind): integrate wind travel on the CPU; fixed-heading spatial phase
The wave phase was k*speed(t)*t (its rate grows with session age: ~33 Hz noise
after 10 min) and its spatial term rotated about the world origin with the veer
(hundreds of rad/s at 9k yd from the first second). Now update_wind integrates
travel += speed*dt in f64 and publishes it wrapped at 4096 yd (wind_b.x); every
wave rate is a whole number of cycles per wrap, so the wrap is seamless. The
spatial term uses the fixed profile heading (wind_a.z); the veer and gust turn
only the bend. Capture offset WOW_CAPTURE_WIND_T for late-session shots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:54:07 +01:00
pkuzicandClaude Opus 5.5 f13a7c9ead MONKEY (skybox): WOW_SKYBOX_T capture clock for animated skies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:48:19 +01:00
pkuzic 0c2e40fd3e MONKEY (integration): document recovered wind framing 2026-09-25 16:43:50 +01:00
pkuzicandClaude Opus 5.5 c97ecc1123 MONKEY (skybox): pose captures at t = 0, higher Hyjal viewpoint
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 16:39:11 +01:00
pkuzicandGPT-5.6 Sol (Codex) 26e286db1c MONKEY (integration): weld the wind preset observer
Foliage wind is a lighting-preset member but bypasses VideoConfig. Read back its world resource in the shared preset clamp test so the merged row is covered like every other member.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 16:09:41 +01:00
pkuzicandGPT-5.6 Sol (Codex) eef0083236 MONKEY (lampfog): add options and visual proofs
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 16:01:28 +01:00
pkuzicandGPT-5.6 Sol (Codex) b96b9deb59 MONKEY (lampfog): scatter resolved lamps through fog
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 16:01:14 +01:00
pkuzicandGPT-5.6 Sol (Codex) d601f97a7d MONKEY (integration): keep one WarcraftXL credit table
Remove merge-time blank separators so the water, post, sky, and wind attribution rows remain in the single required table.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 15:55:20 +01:00
pkuzicandGPT-5.6 Sol (Codex) c94f28996f MONKEY (integration): restore the verified wind framing
The wind lane's unverified closer handoff coordinates put the capture camera inside a Goldshire building. Restore the open-grass coordinates used by the lane's successful before/after captures.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 15:44:54 +01:00
pkuzicandGPT-5.6 Sol (Codex) 1fc96cbf03 MONKEY (integration): account for cloud lighting ordering
The cloud FX reader is registered from CloudsPlugin in LightingConsumeSet, outside the source file inspected by the ordering census. Record that cross-file registration explicitly.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 14:47:49 +01:00
pkuzicandGPT-5.6 Sol (Codex) e96e1a5f52 MONKEY (integration): legalize composable WGSL identifiers
Naga Oil treats a trailing digit as an invalid composable-module identifier. Rename the remaining sky, water, and shadow helpers and locals without changing their calculations.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 14:47:33 +01:00
pkuzicandClaude Opus 5.5 41f46087e2 MONKEY (ao): AO options test writes High first (default is Off); reframe ao-character
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 14:04:54 +01:00