Commit Graph
468 Commits
Author SHA1 Message Date
pkuzic ff046d0a8a Merge gfx/fog into integration
# Conflicts:
#	LIGHTING.md
#	crates/benilla-app/assets/ui/OptionsFrame.xml
#	crates/benilla-app/src/cvars.rs
#	crates/benilla-app/src/monkey_gfx.rs
#	crates/benilla-assets/src/shaders/enhanced_water.wgsl
#	crates/benilla-assets/src/shaders/fog_hook.wgsl
#	crates/benilla-assets/src/shaders/monkey_frame.wgsl
#	crates/benilla-world/src/lighting/monkey_frame.rs
#	crates/benilla-world/src/shaders/sky.wgsl
#	crates/benilla-world/src/sky.rs
2026-09-25 11:59:43 +01:00
pkuzic 816274419d Merge gfx/wind into integration
# Conflicts:
#	LIGHTING.md
#	THIRD-PARTY.md
#	crates/benilla-app/src/cvars.rs
#	crates/benilla-assets/src/materials.rs
#	crates/benilla-assets/src/shaders/wow_model.wgsl
#	crates/benilla-world/src/shaders/static_gx.wgsl
2026-09-25 11:49:31 +01:00
pkuzic df2da452bc Merge gfx/daylight into integration
# Conflicts:
#	LIGHTING.md
#	crates/benilla-app/src/cvars.rs
2026-09-25 11:46:41 +01:00
pkuzic f2723a4553 Merge gfx/sky into integration
# Conflicts:
#	LIGHTING.md
#	THIRD-PARTY.md
#	crates/benilla-app/assets/ui/OptionsFrame.xml
#	crates/benilla-app/src/capture/scenarios.rs
#	crates/benilla-app/src/cvars.rs
#	crates/benilla-app/src/game_plugins.rs
#	crates/benilla-app/src/lib.rs
#	crates/benilla-app/src/video.rs
2026-09-25 11:45:19 +01:00
pkuzic 1df700b17a Merge gfx/p0 into integration
# Conflicts:
#	crates/benilla-app/src/capture/scenarios.rs
#	crates/benilla-assets/src/shaders/enhanced_water.wgsl
2026-09-25 11:40:30 +01:00
pkuzicandClaude Opus 5.5 9e06afa11a MONKEY (p0): reframe the Elwynn, Redridge, Hyjal and Ironforge baseline scenes
Framed with the vista instrument: Elwynn above the canopy (the old eye stood
inside a tree), Redridge from the known-good Lakeshire dock eye with a wider
look, Hyjal above the terrain (the Light.dbc sphere centre z is underground),
Ironforge over a floor face inside the city (the old eye was outside the WMO).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 11:20:37 +01:00
pkuzicandClaude Opus 5.5 06d2fc4669 MONKEY (fog): tune Modern after captures; fog-vista scenarios; consume-set allow-list
Sun-fog strength 0.25 / angle 0.4 / lean 0.4, end-fog lean 0.25: the first
pass turned dusk ridges into flat orange cut-outs against a blue sky. The
dome's low band now MIXES toward the far fog colour by 15 deg (an offset
over-pushed an already warm dusk ring). update_fog_model joins the
ordering test's ALLOWED list (it runs in the resolve set, after it).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 10:43:03 +01:00
pkuzicandGPT-5.6 Sol (Codex) f657570c21 MONKEY (integration): allow read-only capture CVar fixtures
Let deterministic captures read an explicitly selected BENILLA_HOME config while keeping every capture persistence path disabled. This makes the post ON/OFF homes effective without weakening capture hermeticity.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 09:36:18 +01:00
pkuzicandClaude Opus 5.5 42b4783660 MONKEY (fog): fogModel cvar, Advanced Graphics row, fog-duskwood scenarios, docs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 09:21:02 +01:00
pkuzicandClaude Opus 5.5 06a2e3a504 MONKEY (fog): volumetric haze uses the shared fog colour; no haze on sky pixels (Modern)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 09:21:00 +01:00
pkuzicandClaude Opus 5.5 bbea017484 MONKEY (fog): Modern fog model (fogModel 1) in fog_hook + fog_model.rs
fog_hook.wgsl: radial exponential fog fitted to the zone's 1.12 start/end
(60 % survival mid-span, closed over the last stretch so the zone end
holds), optional height fog, end-fog colour shift, sun-fog lobe; interior
WMO spans stay classic; the WDL hull pair takes the far colour.
lighting/fog_model.rs fills the MonkeyFrame fog rows each frame (derived
from the 1.12 bands, or LightFogBand.dbc rows); fog_d.x carries the scene
fog end as the Modern flag, fog_d.zw the octahedral sun direction.
resolve.rs: Modern stretches the fog end with farclip past 777 only.
sky.wgsl/sky.rs: the dome's low band eases into the same far colour.
Classic packs zeros and every new path branches out.

Includes the cherry-picked p0 fix 05d6b1ad (MonkeyFrame rows fog_a..).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 09:20:59 +01:00
pkuzicandClaude Opus 5.5 ee13878f8a MONKEY (fog): LightFogBand.dbc reader + LightCatalog::blend_chain
benilla-formats/src/light/fog_band.rs reads our LightFogBand.dbc (the
LightFloatBand record, 13 rows per LightParams: height fog, curve blend,
sun-fog rgb/strength/angle, end-fog rgb/distance). Absent file = empty
catalog, no error. blend_chain exposes the area-light blend order so a
side table folds with the same law as the stock bands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 09:20:58 +01:00
pkuzicandClaude Opus 5.5 f0b1de26ae MONKEY (p0): WGSL fixes found by the world-scene run
naga_oil refuses a composable-module identifier that naga's namer would
rewrite (a trailing digit gets a '_'), which failed every pipeline that
imports monkey_frame / enhanced_water (models, WMOs, liquid invisible).
MonkeyFrame rows are renamed fog_a..fog_d, wind_a/b, wet_a (same order and
layout), and enhanced_water's padding member _sh_c16 becomes _sh_quad.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 09:06:06 +01:00
pkuzicandClaude Opus 5.5 05d6b1adf3 MONKEY (p0): WGSL fixes found by the world-scene run
naga_oil refuses a composable-module identifier that naga's namer would
rewrite (a trailing digit gets a '_'), which failed every pipeline that
imports monkey_frame / enhanced_water (models, WMOs, liquid invisible).
MonkeyFrame rows are renamed fog_a..fog_d, wind_a/b, wet_a (same order and
layout), and enhanced_water's padding member _sh_c16 becomes _sh_quad.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 08:37:39 +01:00
pkuzicandClaude Opus 5.5 b87b1a3f42 MONKEY (sky): softer sun glow gain (0.22)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 08:09:07 +01:00
pkuzicandGPT-5.6 Sol (Codex) 2d1e5bd483 MONKEY (wind): sway classified tree foliage
Classify static alpha-tested tree and bush leaf batches, log accepted model paths, and apply gentle anchor-phased crown sway and flutter in both retained and fade-twin render paths. Keep animated doodads and tree shadows unchanged, and add wind capture instruments.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 08:06:56 +01:00
pkuzicandGPT-5.6 Sol (Codex) 16448ab01c MONKEY (wind): animate grass and unit parting
Author bend weight from source-mesh height in clutter UV1, preserve texture coordinates and cutout alpha, and apply WarcraftXL's two-wave gust, lean, phase, variance, and distance fade in the model vertex path. Fill the player plus seven nearest unit benders without per-frame allocation.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 08:06:56 +01:00
pkuzicandGPT-5.6 Sol (Codex) 347f675f91 MONKEY (wind): add shared WarcraftXL wind field
Port the stateless gust and veer profile, scale it from live weather, and publish one sample through the WindField resource and MonkeyFrame each frame. Add the foliageWind tier CVar, High preset value, and Advanced Graphics row.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 08:06:55 +01:00
pkuzicandGPT-5.6 Sol (Codex) 5ffdc828c8 Merge gfx/post into integration
Preserve p0 fog and MonkeyFrame hooks, water's row-view ABI, and the post lane's emissive, bloom, sun-shaft, grading, cvar, and options work.

Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 08:01:24 +01:00
pkuzicandClaude Opus 5.5 f56d5309e2 Merge gfx/water into integration
enhanced_water.wgsl keeps the water lane's row view of the shared light buffer (fixes the WGSL
composer failure); the p0 fog hook reads the MonkeyFrame block through water_monkey() (row 533).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 07:53:11 +01:00
pkuzicandClaude Opus 5.5 d1da7033c7 MONKEY (daylight): options tests count the new Advanced Graphics row
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 07:52:08 +01:00
pkuzicandClaude Opus 5.5 dfc9121eb1 MONKEY (p0): graphics-programme baseline capture scenarios
Appended at the end of ON_DEMAND: elwynn-noon/dusk/night, elwynn-rain (run
with WOW_WEATHER=1,0.8), westfall-farm, redridge-lake, duskwood-road,
burning-steppes, blasted-lands-portal, hyjal-mount (Kalimdor, Light.dbc
sphere 270 / params 269), stormwind-cathedral-interior, ironforge-forge.
Positions checked against the Light.dbc spheres with benilla-extract
lightslots (Westfall 17, Duskwood 14, Burning Steppes 23, Blasted Lands 21,
Hyjal 269).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 07:52:05 +01:00
pkuzicandGPT-5.6 Sol (Codex) e98a2201dd MONKEY (water): refine nearby liquid meshes
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 06:12:57 +01:00
pkuzicandClaude Opus 5.5 c66cf1e601 MONKEY (daylight): time the terrain caster gather in WOW_TORCH_TRACE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 05:28:38 +01:00
pkuzicandClaude Opus 5.5 54eac4fdaf MONKEY (daylight): district window split (oversized EXT batches become per-pane apertures), sky rooms include EXT-class windows, lamp occlusion scan, B1 hill scenarios
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 05:28:05 +01:00
pkuzicandClaude Opus 5.5 b11c1cfbbf MONKEY (sky): SKY_FX / SKY_FX_CLOUDS pipeline keys so Classic compiles the reference shader unchanged
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 05:17:50 +01:00
pkuzicandClaude Opus 5.5 46c5f72a9d MONKEY (daylight): city rooms the portal graph connects to the sky take the interiorDaylight floor; capture knobs + torch/goldshire scenario; LIGHTING.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 04:38:01 +01:00
pkuzicandClaude Opus 5.5 91ac4d1481 MONKEY (sky): skyQuality tier — smooth gradient, sun glow, night sky, High cloud detail + sun march
skyQuality 0 Classic (unchanged), 1 Enhanced, 2 High; Advanced Graphics row (EN+RU),
cvar bridge, sky-* scenarios above the canopy. Cloud technique ported from WarcraftXL
wxl-retail-clouds (THIRD-PARTY.md).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 04:09:34 +01:00
pkuzicandGPT-5.6 Sol (Codex) ccd9f42dab MONKEY (water): add Gerstner crest whitecaps
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 03:42:44 +01:00
pkuzicandGPT-5.6 Sol (Codex) 0489b5c168 MONKEY (water): restore WMO canal and pool rendering
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 03:11:31 +01:00
pkuzicandGPT-5.6 Sol (Codex) 6b1af8338f MONKEY (post): port zone colour grading
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 03:07:06 +01:00
pkuzicandGPT-5.6 Sol (Codex) 5e61bf676d MONKEY (post): add depth-occluded sun shafts
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 03:00:04 +01:00
pkuzicandClaude Opus 5.5 88eabacf2a MONKEY (sky): sky-* capture scenarios (dusk, night, zenith night, overcast)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 02:53:02 +01:00
pkuzicandClaude Opus 5.5 adc9d277e7 MONKEY (daylight): terrain as a caster in exterior torch cube maps (torchTerrainShadows, default off)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 02:52:49 +01:00
pkuzicandClaude Opus 5.5 6f30b5466b MONKEY (daylight): city daylight census instrument + daylight- capture scenarios
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 02:52:49 +01:00
pkuzicandGPT-5.6 Sol (Codex) 5c1cc7ab07 MONKEY (post): add world-only HDR bloom pass
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 02:20:38 +01:00
pkuzicandGPT-5.6 Sol (Codex) 36d03ee462 MONKEY (post): route emissive materials into HDR
Co-Authored-By: GPT-5.6 Sol (Codex)
2026-09-25 02:02:19 +01:00
pkuzicandClaude Opus 5.5 721a1f7d19 MONKEY (p0): THIRD-PARTY.md with the WarcraftXL credit table
One table of every WarcraftXL-derived file (Benilla file | WarcraftXL module |
Source files | What was taken), pre-filled with the enhanced-water blocks and
the swimmer bob, plus the planned ports. The standard header line
("Ported from WarcraftXL (https://github.com/WarcraftXL) by iThorgrim —
module ..., ...") is added to enhanced_water.wgsl and water_fx/bob.rs.
Linked from README, LIGHTING and WATER. WATER.md no longer says the WarcraftXL
water module is for the 1.12 client: it is a 3.3.5a client module.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 01:37:38 +01:00
pkuzicandClaude Opus 5.5 8c263244c9 MONKEY (p0): skyDither cvar for the FFXGlow deband dither
The combine's dither lane was armed only by the WOW_DITHER env var. It is now
the `skyDither` cvar (0/1, default 0 = reference look; Graphics preset High
= 1) with an Advanced Graphics "Sky Dithering" checkbox row (EN + RU). The
cvar lands on `benilla_world::ffx_glow::SkyDither` (extracted) through the new
`benilla-app/src/monkey_gfx.rs` bridge; WOW_DITHER=1 still forces it on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 01:34:25 +01:00
pkuzicandClaude Opus 5.5 fc99f2c858 MONKEY (p0): fog_hook.wgsl, one distance-fog law for every receiver
`benilla::fog_hook` (fog_linear / fog_sample / apply_fog) replaces the seven
hand-rolled copies of the linear planar-eye-Z fog: terrain, wow_model,
static_gx, liquid, enhanced_water (factor form), wow_effect (scene fog; the
rain streak fade uses fog_linear) and wdl (the hull's own 0..1 yd pair).
Pure functions, values passed as arguments, same expressions in the same
order, so the classic result is bit-identical. `fog_sample` branches on
MonkeyFrame.fog_model (fog3.x) as the FOG lane's extension point, currently
returning the classic result. wow_effect gains a world_pos varying for it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 01:33:52 +01:00
pkuzicandClaude Opus 5.5 3415538908 MONKEY (p0): MonkeyFrame block appended to the shared light buffer
16 vec4 rows (256 B) after the point-light table, so no earlier offset moves
(per-frame blob 8528 -> 8784 B, size test updated). Rust side: the
`lighting::MonkeyFrame` resource any system may write, packed each frame by
`global_light::pack_monkey_frame` (which also fills time_of_day / night).
WGSL side: `benilla::monkey_frame::MonkeyFrame`, declared as `monkey` after
`points` in every WowLight mirror (terrain, wow_model, static_gx, liquid,
enhanced_water, wow_effect, wdl). All zero = no visual change. Layout in
LIGHTING.md "Invariants".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 01:21:19 +01:00
pkuzicandClaude Opus 5.5 129ea35f5a Merge upstream main (samwhosung/benilla fd386e75) into lighting
71 upstream commits: the repo-wide comment rewrite, the hover highlight as the
scene ambient, M2 Mod/Mod2x batches drawing the bare texel, test and contribution
changes. Conflicts were comment-vs-code in 36 files; where upstream changed only
comments our code was kept, and wow_model.wgsl carries both our lighting lanes
and upstream's new unlit/Mod/Mod2x paths.

Follow-ups folded in:
- our nine Advanced Graphics / water / fog options tests take upstream's
  wow_data_or_skip! guard
- PostUpdate ambiguity ceiling re-measured under upstream's new census: 466,
  with the per-family breakdown in the comment
- LIGHTING.md: new upstream base

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 00:18:30 +01:00
pkuzicandClaude Opus 5.5 2e486e3612 MONKEY: water module split, depth look, High reflections, volumetric fog
Water (Enhanced/High; Classic stays byte-identical to upstream):
- the enhanced water now lives in its own WGSL library, benilla::enhanced_water
  (enhanced_water.wgsl), with its own bindings 103-106; upstream liquid.wgsl
  keeps three small hooks only
- depth look: per-channel extinction over the real path through the water,
  refraction of an opaque-colour copy bent by the waves (samples landing on
  anything in front of the water are refused via the scene depth), caustic
  web on sunlit shallow beds
- High: screen-space reflection of the scenery (bisected march against the
  scene depth)
- the module fogs its own surface terms only (the refracted/reflected scene is
  already fogged); depth+colour copies run both-or-neither
- credits: portions derived from WarcraftXL wxl-experimental-water by
  iThorgrim, used with permission (WATER.md)

Volumetric fog (Advanced Graphics -> Volumetric Fog: Off/Low/High, cvar
volumetricFog, env WOW_VOLFOG): own fullscreen pass after the main pass,
near-field haze converging on the zone fog colour, denser at dawn and in
weather, faint indoors, plus sun/moon light shafts from the shadow map.

Tests: addon-harness oracle fixtures no longer require unix symlinks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 23:16:18 +01:00
pkuzicandClaude Opus 5.5 18914f02f6 MONKEY: enhanced water module (Water Quality: Classic/Enhanced/High) + lava glow
Water (Enhanced/High only; Classic stays byte-identical to upstream):
- scene depth resolved after the main opaque pass and bound to liquids
  (liquid/scene_depth.rs, water_depth.rs)
- procedural multi-band waves with analytic normals; long ocean swell moves
  vertices, mirrored on the CPU (liquid/waves.rs)
- separate ocean and inland profiles; depth-driven colour and soft edge
- Fresnel sky reflection, sun path, moon path, point-light glints
- beach surf driven by the shore wave phase: continuous front, dissolving
  lace, swash sheet; only where the authored sea bed is shallow, so sunken
  objects never foam; thin bed clutter (grass, reeds) ignored for contact foam
- swimmers: wake foam, treading rings, visual-only bob with the swell
- river flow effect tried and removed at the owner's request

Lava: magma surfaces emit warm point lights through the lighting module
(lighting/lava_light.rs, lavaLightGain).

Options: Water Quality + Lava Glow rows (EN, RU strings prepared).
Docs: WATER.md. Credits: design reference WarcraftXL wxl-experimental-water,
author iThorgrim (reuse permitted with attribution).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 23:15:57 +01:00
Sam SungandClaude Opus 5.5 fd386e75ae Comments in benilla-ui: one line of fact each, no history, no record numbers (#143)
Part of #41: the comments of `benilla-ui` (the Lua UI engine, its FrameXML loader and its widgets) are rewritten to the rule in `docs/METHOD.md`, which is what the code does and the reference fact behind it, in a line. 43,140 comment lines become 15,161.

- **The mechanical strip.** The citations that were only a private record number go first, and each edit is shown to be a pure removal.
- **Wrong facts corrected.** The rewrite corrects the comments that stated wrong facts. Among them:
  - `0x64a480` is the case-sensitive compare (a byte `repz cmpsb`), and `0x64a4c0` the case-insensitive one.
  - A frame's id sits at `+0xb0`, not `+0xb4`. `EnableKeyboard`/`IsKeyboardEnabled` are `0x776ec0`/`0x776f90`.
  - A region's unpinned edge has no fallback to its owner's rect: the owner supplies only the scale.
  - `$parent` expands to the nearest named ancestor, or "Top" when none is named (`0x76c5b0`), not simply to the parent.
  - A StatusBar fills from its internal normalised fraction, not from `GetValue()`.
  - The addresses of `StartDuel` and `StartDuelUnit` were swapped.
  - Many "untraced" notes now give the traced reference fact: the drag threshold, the per-grip sizing edges, the empty-`autoFocus` skip, and `SetTexCoordModifiesRect`'s default.
  - Stock FrameXML line citations are checked against the stock 1.12 files and corrected. `ref-` file names become the stock file names.
- **Deviation labels.** "Deviation:" now marks only a choice with a reason. A surface that exists only for the retired Era addon target says so plainly: it is not 1.12.
- **Verification.** Every file strips to identical code, and `cargo fmt --check` is clean. Nine second readers compared every file old against new, restored the facts the rewrite had dropped, and checked each new citation against the code, the stock files, vmangos and the reference.

Behaviour differences the rewrite surfaced are filed as their own issues (#131–#142), and more are being validated. The comments here state what the code does. String literals are untouched; they are #92.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 01:58:49 +07:00
Sam SungandClaude Opus 5.5 8505187668 Comments in benilla-formats: one line of fact each, no history, no record numbers (#130)
Part of #41: the comments of `benilla-formats` (the library, its extract tools, examples and tests) are rewritten to the rule in `docs/METHOD.md`, which is what the code does and the reference fact behind it, in a line. 19,654 comment lines become 7,264.

Fixes #105: the WMO collision comments now name walking's box-query leaf `0x6bca50` and the camera and line-of-sight segment-query leaf `0x6bc700`, in `models/collision.rs`, `examples/wmo_bsp.rs` and `tests/chain.rs`.

- **The mechanical strip.** The citations that were only a private record number go first, and each edit is shown to be a pure removal.
- **Wrong facts corrected.** The rewrite corrects the comments that stated wrong facts. Among them:
  - A placed doodad's material alpha reads file slot 0 on its spawn clock, while the reference reads bone 0's armed sequence, re-rolled every play window. The old text said doodads are armed once at load.
  - The fog end is stored ×36 and scaled once at load (`0x6d6090`). It is not raw.
  - The MCSH bit picks a map doodad's sun scale, 1.0 lit or 0.5 shadowed. 2.5 belongs to an entity's light node.
  - `SpellRec` is the row as stored, column × 4, not a translated copy.
  - A global sequence's clock is anchored at the instance's attach time (`0x714352`).
  - Particle twinkle is a gated size multiplier (`0x7b2adc`).
  - The blob shadow sizes from the Stand box.
  - Data claims are checked against the install: the weapon-trail kits' parameters and alphas, the beam rows' noise, and the maps' `field_16`.
  - Dozens more turned up on the way: renamed or deleted items, docs sitting on the wrong item, stale counts and links.
- **Deviation labels.** "Deviation:" now marks only a choice with a reason. An unbuilt behaviour says so plainly.
- **Verification.** Every file strips to identical code, and `cargo fmt --check` is clean. Four second readers compared every file old against new, restored the facts the rewrite had dropped, and checked each new citation against the reference, the code and the shipped data.

String literals are untouched; they are #92.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 19:38:53 +07:00
Sam SungandClaude Opus 5.5 fdfd8d39ec Comments in benilla-world: one line of fact each, no history, no record numbers (#121)
Part of #41: the comments of `benilla-world`, Rust and WGSL, are rewritten to the rule in `docs/METHOD.md`, which is what the code does and the reference fact behind it, in a line. 24,226 comment lines become 8,863.

- **The mechanical strip.** The citations that were only a private record number go first, and each edit is shown to be a pure removal.
- **Wrong facts corrected.** The rewrite corrects the comments that stated wrong facts. Among them:
  - `0x6b62e0` is the WMO group's liquid renderer, not a doodad drawer.
  - The reference creates a WMO's props once, when a group enters its streaming window (`0x698720` → `0x695aa0`). It then admits them each frame the portal walk visits the group (`0x685d70` → `0x6838f0`). The old text had them created per visible group.
  - The liquid query's comments now state the reference's order: the map-object leg first, then the ADT (`0x69b6d0`). They no longer call the Outdoors/Inside split a match.
  - The interior probe runs from the character, not the camera.
  - The reference lights ground clutter. The old comment said it draws unlit.
  - The model-particle "pool order" deviation was wrong. Each instance is its own mesh, depth-sorted every frame.
  - The reference's vertical field of view follows the aspect ratio (44.1° at 16:9). The comment now gives it beside our fixed 45°.
  - The effect shader's far wall is the live `farclip`, 177 to 777 yd, not a fixed 777 yd.
  - Dozens more turned up on the way: renamed or deleted items, docs sitting on the wrong item, stale counts and links.
- **Deviation labels.** "Deviation:" now marks only a choice with a reason. An unbuilt behaviour says so plainly.
- **Verification.** Every file strips to identical code, and `cargo fmt --check` is clean. Five second readers compared every file old against new, restored the facts the rewrite had dropped, and checked each new citation against the reference.

Defects the rewrite surfaced outside the comments are filed as their own issues (#106, #114, #115, #116). The comments here state what the code does. String literals are untouched; they are #92.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 17:43:40 +07:00
Sam SungandClaude Opus 5.5 d69d09dfce Comments in benilla-assets: one line of fact each, no history, no record numbers (#95)
Part of #41: the comments of `benilla-assets`, Rust and WGSL, rewritten to the rule in `docs/METHOD.md`: what the code does and the reference fact behind it, in a line. 3,872 comment lines become 1,568.

- The citations that were only a private record number go first, mechanically, each edit shown to be a pure removal.
- The rewrite corrects the comments that stated wrong facts: the alpha-key cutoff now cites the reference's per-blend-mode table (`0x85ad20`), the texture-filter note names the subsystems that ignore the global setting, a test doc said an exhausted variation roll returns the last variation (it returns the first), and about twenty more found on the way (renamed or deleted items, a shader flag the doc misread, docs sitting on the wrong function). "Deviation:" now marks only a choice with a reason; an unbuilt behaviour says so plainly.
- Verified: every file strips to identical code, and `cargo fmt --check` is clean. A second reader compared every file old against new, restored the facts the rewrite had dropped, and checked each new citation against the reference.

String literals are untouched; they are #92.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 16:27:58 +07:00
Sam SungandClaude Opus 5.5 d936857673 Comments in the small crates: one line of fact each, no history, no record numbers (#93)
Part of #41: the comments of the thirteen small crates (`benilla-adt`, `-blp`, `-buildstamp`, `-bytes`, `-dbc`, `-m2`, `-mpq`, `-srp`, `-visual`, `-wdt`, `-wmo`, `-worldview` and `benilla`) rewritten to the rule in `docs/METHOD.md`: what the code does and the reference fact behind it, in a line. 2,176 comment lines become 1,029.

- The citations that were only a private record number go first, mechanically, each edit shown to be a pure removal.
- The rewrite corrects the comments that stated wrong facts: the M2 header's selection-ring claim, the texture-transform and MCNK impassable-flag notes, a DBC reader note that said short records zero-pad (they do not, #17), and about twenty more found on the way. The SRP handshake's redraw and redial are marked as a deviation, with the measured reason.
- Verified: every file strips to identical code, and `cargo fmt --check` is clean. A second reader compared every file old against new and restored the facts the rewrite had dropped.

String literals are untouched; they are #92.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 15:51:18 +07:00
Sam SungandClaude Opus 5.5 5b94c3eba8 Comments name no chat reporter, channel or message id, and quote no report (#90)
Comments that named a chat reporter, cited a chat channel or message id, or quoted a report word for word now state the symptom in their own words. The test fixtures that used real character names use invented ones.

Verified: 52 of the 56 files strip to identical code with their comments removed; the other 4 differ only in the fixture names, and with those mapped back they strip identical too. `cargo fmt --check` is clean, and the `ui_party`, `unit_frame_tests` and `capture` tests pass with the install present and no skips. Record numbers still in these comments go with the comment pass (#41).

Fixes #34

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 14:29:56 +07:00