Issue #3: wreck scorch quad ramp + RGBA4444 alpha cutout (the 'dark square')
MECHMD's scorch base (basev:bvx9_mtl, bexp9_tex = BEXP.BSL RGBA4444 slice 8, ramp cdusty) drew as a hard-edged dark square for two stacked reasons: 1. The blanket 'truecolor BSL slice (channel >= 6) never ramps' gate blocked its cdusty ramp. Corpus scan: only 4 shipped textures use truecolor slices; bexp9/bdet9 are grayscale in RGB (100% / 98.8% r==g==b) and their materials author ramps -- only bdam8 (damage sheet) is truly coloured. bgfload rampableSlice() now probes the decoded slice: a truecolor slice ramps iff effectively gray (>=95%), keeping bdam8's colour protected. 2. The RGBA4444 authored alpha channel -- a binary 0/240 cutout mask (the splat silhouette, 78.5% transparent) -- was never alpha-tested, so the quad's transparent surround rendered as an opaque rectangle. New BgfDrawBatch.texAlpha (channel >= 8) routes these batches through the PUNCH alpha-test draw states, WITHOUT the black-texel keying (which would hole the near-black charred centre). Side benefit: tree9 (tree/leaf cards) + bdet9 (trans-rail lattice) get their authored cutouts too. Pixel-verified (ram-kill run, BT_SHOT): irregular char splat, dark brown (71,44,34) lifting to near-terrain tan (115,100,91 vs terrain 131,119,108), no rectangle; pre-death frames unregressed (vehicles stay lit/diffuse -- hasNormals gate untouched). Awaiting human verification. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
557e9fd243
commit
9fff079df4
+17
-7
@@ -264,13 +264,23 @@ rubble originally never appeared because additional cultural objects were built
|
||||
DPLStaticChildRenderable/DCSInstanceRenderable at TOP level — those read the bare matrix stack
|
||||
(identity), so the rubble drew at the WORLD ORIGIN. Every cultural video object is now a
|
||||
`RootRenderable` (places from `myEntity->localToWorld`). Screenshot timeline confirms: intact
|
||||
MECHMOVR truck → ram death → MECHMD wreck debris scattered at the truck's spot. ⚠ STILL OPEN
|
||||
(#3): (a) the wreck's scorch base quad draws as an opaque BLACK rectangle (MECHMD's own op —
|
||||
material/ramp resolve); (b) the death Explosion (psfx 1008 ddam5) not visually confirmed;
|
||||
(c) the authored BurningState fire visual unreconstructed. PICKUP TRAIL for (a): the black
|
||||
square is MECHMD.bgf patch 0 — a 4-vtx NO-NORMAL quad (VTX_XYZ_UV), material `basev:bvx9_mtl`
|
||||
(BASEV.BMF; scratchpad/dump_bmf.py truncates before its record) — the no-normal ramp/material
|
||||
resolve path renders it void-black instead of the authored scorch. For (b): the ram fires the
|
||||
MECHMOVR truck → ram death → MECHMD wreck debris scattered at the truck's spot.
|
||||
**(a) SCORCH QUAD FIXED (2026-07-19, pixel-verified, awaiting human confirm):** the scorch base
|
||||
(MECHMD patch 0, 4-vtx no-normal quad, `basev:bvx9_mtl` → bexp9_tex = BEXP.BSL **RGBA4444
|
||||
slice 8**, ramp `cdusty`) drew as a hard dark SQUARE for TWO stacked reasons: (1) the blanket
|
||||
"truecolor slice (channel ≥ 6) never ramps" gate blocked its cdusty ramp — but only 4 shipped
|
||||
textures use truecolor slices, and bexp9/bdet9 are GRAYSCALE in RGB (100% / 98.8% r==g==b
|
||||
texels; only bdam8 is truly coloured) — `bgfload rampableSlice()` now probes the decoded slice
|
||||
(a truecolor slice ramps iff effectively gray, ≥95%; bdam8's colour stays protected); (2) the
|
||||
RGBA4444 **authored alpha** (a binary 0/240 splat CUTOUT mask, 78.5% transparent) was never
|
||||
alpha-tested — new `BgfDrawBatch.texAlpha` (channel ≥ 8) routes through the PUNCH alpha-test
|
||||
draw states WITHOUT the black-texel keying (which would hole the near-black charred centre).
|
||||
Side benefit: tree9 (GRASS tree/leaf cards) + bdet9 (trans-rail lattice) get their authored
|
||||
cutouts too. Post-death shot: irregular char splat, dark brown (71,44,34) lifting to
|
||||
near-terrain tan (115,100,91 vs terrain 131,119,108), no rectangle; pre-death frames
|
||||
unregressed (vehicles stay lit/diffuse — the `hasNormals` gate is untouched). [T2] ⚠ STILL OPEN
|
||||
(#3): (b) the death Explosion (psfx 1008 ddam5) not visually confirmed;
|
||||
(c) the authored BurningState fire visual unreconstructed. For (b): the ram fires the
|
||||
CRUNCH explosion res 31 (small, human-seen); res 32 is the icon's non-crunch explosion —
|
||||
check which the weapon-kill path should fire + psfx scale vs period footage. LESSON: `[cultvis]` log lines verify
|
||||
the STATE MACHINE, not pixels — only a screen check (BT_SHOT / human) verifies rendering.
|
||||
|
||||
Reference in New Issue
Block a user