diff --git a/crates/benilla-assets/src/model.rs b/crates/benilla-assets/src/model.rs index 02dd5130..6424cd28 100644 --- a/crates/benilla-assets/src/model.rs +++ b/crates/benilla-assets/src/model.rs @@ -114,9 +114,9 @@ fn build_submesh_mesh(sub: &RenderSubmesh, usages: RenderAssetUsages) -> Mesh { mesh.insert_attribute(Mesh::ATTRIBUTE_COLOR, sub.vertex_colors.clone()); } if sub.normals.len() == sub.positions.len() { - // A card authored facing away from the viewer is lit on the face it presents, so flip its - // normals, never its winding: the reference culls the single-sided ones from every angle, - // and re-winding would show them. + // Deviation: a card authored facing away from the viewer is lit on the face it presents, + // because the reference shades it inverted and camera-dependent. Flip its normals, never + // its winding, which would show the single-sided ones the reference culls at every angle. let flip = sub.billboard_card_faces_away(); let normals: Vec<[f32; 3]> = sub .normals diff --git a/crates/benilla-assets/src/shaders/liquid.wgsl b/crates/benilla-assets/src/shaders/liquid.wgsl index bb7e5fcb..e06c1932 100644 --- a/crates/benilla-assets/src/shaders/liquid.wgsl +++ b/crates/benilla-assets/src/shaders/liquid.wgsl @@ -13,8 +13,8 @@ // `ocean_h` frame, near-black RGB and the ripple in alpha, which its authored mips fade with // distance, so the sampler's mips and anisotropy matter; primary is the lit default white vertex // (`glColorMaterial`); secondary is the sun sheen. -// Deviation: the reference's ADT water alpha is the `0xc7fbc0` LUT curve `1.6ยท(i/63)^8`; this keeps -// the linear swatch alpha, because switching changes the look of every ADT water surface. +// The ADT water alpha is the swatch's own: the `0xc7fbc0` LUT texture binds only behind +// `[0xc800ec]` (`0x685244`-`0x685257`), which never holds one (its one store, `0x68c7f8`, is 0). // Deviation: this is the `specular`/`pixelShaders` = 1 leg the reference install runs; both CVars // (`0x6886a0`/`0x688712`) default to 0, where water has no program, no specular, a plain ADD // combine and no blend. An active ARB program bypasses the texture environment. diff --git a/crates/benilla-assets/src/wmo.rs b/crates/benilla-assets/src/wmo.rs index 31b11fc5..cc7ba08b 100644 --- a/crates/benilla-assets/src/wmo.rs +++ b/crates/benilla-assets/src/wmo.rs @@ -88,8 +88,8 @@ pub struct WmoModel { /// Per-MODD first referencing group, whose MOLR set the interior lane folds; the /// interior/exterior class reads [`Self::doodad_groups`]. pub doodad_owner: Vec>, - /// Per-MODD every group whose MODR names it: the portal-cull key, as the reference draws - /// doodads per visible group (`0x695aa0`, MODR at `+0xe8`, count `+0x144`, walk `0x698720`). + /// Per-MODD every group whose MODR names it: the portal-cull key, as the reference admits a + /// group's props each frame its portal walk visits it (`0x685d70` โ†’ `0x6838f0`). pub doodad_groups: Vec>, /// Per-group footprint faces (render faces, MOCV, MOPY flags); `None` for exterior groups and /// groups without MOCV. A GameObject M2 down-rays them for its MOCV lighting (`0x69e4c0`). @@ -276,7 +276,8 @@ pub fn floor168(c: [u8; 3]) -> [f32; 3] { } /// MODD index to its first referencing group, whose MOLR set the interior lane uses. The reference -/// creates a doodad on the first visible-group walk that names it, and never one no group names. +/// creates a group's props once, when the group enters the streaming window (`0x698720` โ†’ +/// `0x695aa0`, MODR at `+0xe8`, count `+0x144`), and never one no group names. fn modr_owners(doodad_count: usize, group_doodad_refs: &[Vec]) -> Vec> { let mut owner: Vec> = vec![None; doodad_count]; for (gi, refs) in group_doodad_refs.iter().enumerate() { @@ -289,8 +290,8 @@ fn modr_owners(doodad_count: usize, group_doodad_refs: &[Vec]) -> Vec]) -> Vec> { let mut refs: Vec> = vec![Vec::new(); doodad_count]; for (gi, group) in group_doodad_refs.iter().enumerate() { diff --git a/crates/benilla-ui/src/loader/mod.rs b/crates/benilla-ui/src/loader/mod.rs index 435bbff9..890e68e2 100644 --- a/crates/benilla-ui/src/loader/mod.rs +++ b/crates/benilla-ui/src/loader/mod.rs @@ -316,9 +316,9 @@ impl Loader<'_> { TopLevel::Include(path) => self.do_include(path), // Deviation: a `