fix(render): 修复场景光束透光与幽灵/复合怪物外发光黑边瑕疵,实现 1.13c 加色混合与图层解耦 #403
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
1. 缺陷背景与现象
11,12,以及R1~R5,1R~4R等)外缘呈现厚重的棕黑色实心色块/硬木板轮廓,遮盖了地表石板纹理。FR)以及幽灵类怪物(怨灵WR、电鬼WW等)身周带有刺眼的黑色椭圆硬边或暗圈。2. 根因剖析(暴雪 1.13c Ground Truth)
drawEffect = 3以及objects.txt/Missiles.txt的Trans = 7(定向光束)和Trans = 1(能量孔)触发 加色半透明混合(Additive Blending:GL_SRC_ALPHA, GL_ONE)。在此模式下纯黑底色相加为 0(即全透明),亮部叠加形成通透强光。Trans和drawEffect属性,并在怪物合成时使用blit()粗暴将实体躯干与发光层拍平。blendMode: "normal",使得暗部像素被赋予Alpha = 1.0并在屏幕上实心画出。3. 重构实现方案
src/game/objects.ts:扩展ObjectsRow支持blendMode,识别 1.13c 的Trans = 7/1与 COFdrawEffect = 3物件。src/scene/act-scene.ts:在物件深度绘制循环中,将光束等物件派发至blendMode: "additive"。ADDITIVE_OBJECT_TOKENS静态兼容映射,无需重新打包即可即时消除全图 136 个关卡的黑块。src/game/monster-art.ts:纯加色幽灵怪(WR,WW)整帧标记为blendMode: "additive";复合发光怪物(如指魔FR)根据drawEffect自动解耦为实体躯干sheet与发光魔翼glowSheet,全 8 方向、448 帧保持严格 0 像素锚点漂移。src/scene/act-scene.ts:怪物渲染循环先以 Normal 绘制躯干,紧接着在原坐标以 Additive 叠加魔翼,内置ADDITIVE_MONSTER_TOKENS回退。scripts/pack-act-assets.ts与scripts/pack-entity-assets.ts持久化trans、blendMode与glowClips。verify-packs.ts。4. 验证与合并结论(R4)
npm run typecheck0 错误;Vitest 74/74 测试全量通过;模拟调度断言 961,589 项无回归。feat/refactor-transparency(commita8295c2)完成,已干净合并回main(commitc2e4c5b),并推送至远端。