draw calls 优化批:瓦片态非英雄格隐形 StyleBoxFlat 置 null——满负荷帧 504→196 DC

定位(临时 A/B 探针逐档实测,窗口化满负荷帧,探针已删方法存档于本信息):
- 基线 census:100 格已开 92/glyph 23/叠层约 20/tex 变体 12
- 统一全格 tex_base 为单纹理:504→504(零增益——纹理切换非批断裂主因)
- 去 glyph/badge:-23(每字格 1 DC)
- 去矢量叠层(outline/facade/proj/eflag/contact):-23
- 去隐形 bg_sb:-402(100 格×~4 个不可合批 StyleBoxFlat polygon 命令,逐格打断棋盘批)
- 隐整个 board_zone 参照系:37 DC(HUD 外围)
- sb 清除后 100 格 tex quad 合回 ~1 批(隐格仅省 1 DC)——批可跨 item 合并,唯一杀手=sb 多边形

改动(game/presentation/views/board_view.gd _paint_cell 单点):
- 瓦片态非英雄格不再挂透明载体 sb(透明底+零描边=视觉贡献零),u.bg_sb=null
- 英雄格保留蓝框载体 sb(新透明 sb+3px 边框,绘制序不变);平色回退路径零改动
- 核心层/data/smoke 策略参数零触碰

读数与闸门:
- battle_draw_calls 504→196(目标 ≤200 达标;三跑 196/196/196 稳定)
- 视觉零变化:三关棋盘 PNG(board_shot_probe)+四屏截图(shot_probe)改前后 7/7
  逐像素零差异(PIL diff bbox=None,容差 0)
- 冒烟 596/0;四探针 ui_input/ui_probe/ui_click/ui_layout 退出码全 0
- 附:补交 shot_probe.gd.uid(Godot 4.7 uid 元数据,库内 .uid 全跟踪惯例)
This commit is contained in:
DKChan committed 2026-10-01 07:09:10 +08:00
1 parent 54a48d5e91
commit fcd34b52bc
2 files changed
+8 -3

No files matched your search

+7 -3
View File
@@ -708,16 +708,20 @@ func _paint_cell(c: Vector2i, hero: Vector2i) -> void:
# 瓦片模式(高墙接线批 2026-09-26):tex_base = 查表瓦片(未开=墙瓦片/已开=地面瓦片),
# bg_sb 降级为透明描边载体——只承载呼吸微光/主角蓝框(CellUnit 瓦片态画在瓦片之上),
# 程序化平色退役;瓦片分配=格坐标哈希,初始化落定后逐拍稳定(禁逐轮重掷——圣经原则三)
var sb: StyleBoxFlat
# draw calls 批优化(2026-10-01):透明载体 sb 视觉贡献=零(透明底+零描边——不可见),但
# StyleBoxFlat 多边形命令不可合批,每格打断棋盘批——实测 100 格满负荷帧 ~402 DC(A/B 探针
# 阶梯:纹理统一 0 增益/去 glyph −23/去叠层 −23/去隐形 sb −402)。非英雄格 sb 直接置 null
#(绘制路径零像素变化),仅英雄格保留蓝框载体。
var sb: StyleBoxFlat = null
var tile: Texture2D = null
if _tiles_ok:
# Color.TRANSPARENT 载体(引擎常量——视图禁内联色字面量纪律;透明+零描边=瓦片上不画任何东西)
sb = UiKit.panel_flat(Color.TRANSPARENT, Color.TRANSPARENT, 3, 0)
tile = _floor_tile_for(c) if revealed else _wall_tile_for(c)
else:
# 素材整批缺位回退 = 现行程序化平色路径(fresh checkout 冒烟不炸——任务书 §2.2)
sb = UiKit.panel_flat(bg, bg.darkened(0.15), 3)
if is_hero:
if sb == null:
sb = UiKit.panel_flat(Color.TRANSPARENT, Color.TRANSPARENT, 3, 0)
sb.set_border_width_all(3)
sb.border_color = COL_HERO
if glyph == "" and _hero_tex_idle == null: