You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(render): persist all one-shot BG bakes via accumulating layer
The korlab5 airlock door opened with the card reverted to closed the
instant the open animation finished — still passable, and re-carding
played the close animation, so only the visual was wrong.
The open door bakes itself into the scene BG as a flag-0x60 one-shot
overlay (drzwiotN.wyc, ~165-183px wide). SaveSceneBgAtlas kept a SINGLE
atlas slot gated on width >= 320px (built only for the stub-pic
full-background case), so the narrow door bake was never saved and the
per-frame .pic repaint wiped it the next frame. Re-entry happened to work
only because its drzwiot3 frame is >= 320px.
The original engine (FUN_00411730) accumulates every such bake into one
persistent BG page with no size gate. Mirror that: replace the single
slot + width gate with a screen-sized bake layer (pixels + 1-byte
coverage mask + dirty bbox). SaveSceneBgAtlas accumulates clean atlas
pixels (overwrite-in-place, so open/close toggles show the latest
state), PaintSceneBgAtlasIfAny overlays the masked bbox each frame, and
paint_oneshot_bg bakes unconditionally. The HUD panel is drawn
separately by hud_paint and never used this path, so dropping the gate
is safe.
Fixes narrow and multiple scene-prop bakes generally (the door plus the
card-reader guziki/pasek). Verified: clean build, 481/481 unit tests,
headless ASan/UBSan clean.
0 commit comments