[Parity][frontend][S2][F] 野蛮人、圣骑士的 FW(前进)叠加层(bafws / pafws)缺失,被静默跳过;而且所有叠加层一律按 'screen' 混合 #702

Closed
opened 2026-10-02 11:42:58 +00:00 by troytt · 1 comment
Owner

1.13c 客户端保真度审计立项(基准快照:7bd1090 / main @ 77a20c7)

证据标记说明:V-data = 1.13c MPQ 数据表 (.txt / animdata.d2 / .tbl / pal.pl2);V-src = D2MOO 逆向源码;V-bin = 1.13c DLL 反汇编;K = 1.13c 公认行为。

来源审计项:frontend#8 — [S2][F] 野蛮人、圣骑士的 FW(前进)叠加层(bafws / pafws)缺失,被静默跳过;而且所有叠加层一律按 'screen' 混合

  • 位置:
    • src/client/frontend/frontend-renderer.ts:1841-1844:const ovStrip = strips[${slot.phase}_ov],取不到就不画;画的时候固定传 additive=true
    • :528-532:additive 一律是 globalCompositeOperation = 'screen'
    • manifest 和 public/ui/frontend/campfire 里都没有 ba / pa 的 fw 叠加条带
  • 原版:
    • V-bin(D2Launch):会加载 bafws、pafws(字符串位于文件偏移 0x1d614 / 0x1d5f3);ba 的 FW 描述符 0x6fa65d9c、pa 的 FW 描述符 0x6fa65db0 都带第二图层 ppCellFile2,drawMode 5。
    • V-src:D2MOO D2Gfx/include/DrawMode.h 中 5 = DRAWMODE_NORMAL(3 = DRAWMODE_MODULATE);D2Win/src/D2WinAnimImage.cpp:234-239 用描述符自己的 eDrawMode 画第二图层。
  • 影响:选野蛮人或圣骑士时,前进动画少画一层(原版能看到的部分没了),而且没有任何报错;就算把资源补上,现在的渲染器也会把 drawMode 5 的普通图层当成 'screen' 来画。
  • 建议:烘焙 bafws / pafws;manifest 里给每个叠加层带上描述符的 drawMode,渲染时按 drawMode 选混合方式;资源缺失要报错,不要跳过。
  • 已有 issue:—
> **1.13c 客户端保真度审计立项**(基准快照:`7bd1090` / `main @ 77a20c7`) > 证据标记说明:`V-data` = 1.13c MPQ 数据表 (`.txt` / `animdata.d2` / `.tbl` / `pal.pl2`);`V-src` = D2MOO 逆向源码;`V-bin` = 1.13c DLL 反汇编;`K` = 1.13c 公认行为。 ### 来源审计项:`frontend#8` — [S2][F] 野蛮人、圣骑士的 FW(前进)叠加层(bafws / pafws)缺失,被静默跳过;而且所有叠加层一律按 'screen' 混合 - 位置: - `src/client/frontend/frontend-renderer.ts:1841-1844`:`const ovStrip = strips[`${slot.phase}_ov`]`,取不到就不画;画的时候固定传 additive=true - `:528-532`:additive 一律是 `globalCompositeOperation = 'screen'` - manifest 和 `public/ui/frontend/campfire` 里都没有 ba / pa 的 fw 叠加条带 - 原版: - V-bin(D2Launch):会加载 `bafws`、`pafws`(字符串位于文件偏移 0x1d614 / 0x1d5f3);ba 的 FW 描述符 0x6fa65d9c、pa 的 FW 描述符 0x6fa65db0 都带第二图层 ppCellFile2,drawMode 5。 - V-src:D2MOO `D2Gfx/include/DrawMode.h` 中 5 = `DRAWMODE_NORMAL`(3 = `DRAWMODE_MODULATE`);`D2Win/src/D2WinAnimImage.cpp:234-239` 用描述符自己的 eDrawMode 画第二图层。 - 影响:选野蛮人或圣骑士时,前进动画少画一层(原版能看到的部分没了),而且没有任何报错;就算把资源补上,现在的渲染器也会把 drawMode 5 的普通图层当成 'screen' 来画。 - 建议:烘焙 bafws / pafws;manifest 里给每个叠加层带上描述符的 drawMode,渲染时按 drawMode 选混合方式;资源缺失要报错,不要跳过。 - 已有 issue:—
Author
Owner

Resolved in commit 0897bf6 on main (Batch 7 & 8 Phase 2). Verified via tsc and vitest unit tests.

Resolved in commit 0897bf6 on main (Batch 7 & 8 Phase 2). Verified via tsc and vitest unit tests.
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#702
No description provided.