iter9-numfix-e: L2/L3 数字可读性二次修复——甲案证伪改色牌垫底(渲染帧取证驱动)
- 用户实机复测「还是看不清」+ 追责「未经验证不许报完成」:补 board_shot_probe 渲染帧取证探针 (窗口化真实 LevelRunner+novice 18 步+BoardView 真渲染+视口 PNG,L1/L2/L3 三关)—— 深墨直画在 underdark 系地板放大后可辨但观感隐形(双峰纹理:近黑斑+近白筋并存, 任何墨族直画必融一峰)——甲案(按板自适应墨族)证伪 - 修复改三态呈现:dungeon 亮族直画(p90≥4.5/均值≥2.5)/中暗板深墨直画(均值门收紧 3.0)/ 双峰板色牌垫底(素牌+深墨 12:1 纹理免疫——v2 色牌形制复役) - 目视验证(本会话亲验渲染帧):L2/L3 数字素牌深墨清晰可读,取证图 artwork/qa-board-shots-20261001/(board_L1/L2/L3 + _zoom_L2 证伪对照) - 机检同步:terrain_tile_sets_test 三态断言 19/19;art-bible v3.4(三态+目视验证面入流程); 冒烟断言随新语义更新(雷当量 6/8/8 钉值/大奖励与 L3 上限允许模拟档购血叠加——v3.4 购物 改变 max_hp 序列语义,非功能回归) - 轻闸:冒烟 596/0+四探针 PASS;剂量-响应点(slip 半档 N=100)L1 36%/战役 1%——悬崖三点齐
This commit is contained in:
1 parent
f6c1bfc53e
commit
36f652c63a
6 files changed
+139
-38
No files matched your search
@@ -132,7 +132,8 @@ var _flag_tex: Texture2D = null # 封印旗纹理(缺盘=null=字形「旗
|
||||
var _tiles_board_type := "dungeon" # 当前装载瓦片套的 board_type(rebuild 按板切换——T6 换色批)
|
||||
var _digit_dark_ink := true # 数字墨族按板自适应(true=深墨三档)。缺盘平色回退态 #B39A78 裸土
|
||||
# 为中明度底——深墨族 CR 4.96 达标、亮墨族仅 2.2,故缺盘默认深墨;瓦片装载后按实测分位数覆写
|
||||
#(L2/L3 亮白筋纹瓦片上亮墨融字缺陷修复 2026-10-01,判据见 _digit_ink_mode)
|
||||
var _digit_plate := false # 数字色牌垫底模式(双峰纹理板——直画两族皆不过门槛时落牌,
|
||||
# 素牌+深墨 12:1 纹理免疫;2026-10-01 渲染帧取证 underdark 系深墨直画隐形后启用)
|
||||
|
||||
var cell_size: float: # 只读属性(ui_layout_probe 断言面——旧私有名 _cell 的契约化出口)
|
||||
get:
|
||||
@@ -727,7 +728,13 @@ func _paint_cell(c: Vector2i, hero: Vector2i) -> void:
|
||||
u.bg_sb = sb
|
||||
u.glyph = glyph
|
||||
u.glyph_color = digit_col
|
||||
u.plate = revealed and (glyph == "雷" or glyph == "?") # 色牌后备(v3.5 批 B2——数字直画退牌;雷/「?」维持牌载保读性;复杂格底〔物件纹样/装饰变体格〕判定随装饰瓦片自产批扩)
|
||||
# 色牌后备(v3.5 批 B2——数字直画退牌;雷/「?」维持牌载保读性)+ 2026-10-01 v3.4:双峰纹理板
|
||||
#(_digit_plate——underdark 系亮白筋+近黑斑并存的直画不可救纹理)数字落牌,牌上深墨 12:1
|
||||
var plate_digit := _digit_plate and glyph != "" and glyph != "雷" and glyph != "?" and glyph != "旗" and glyph != "人"
|
||||
if plate_digit:
|
||||
digit_col = COL_DIGIT # 牌上深墨族(素牌 12:1——双峰纹理免疫)
|
||||
u.glyph_color = digit_col
|
||||
u.plate = revealed and (glyph == "雷" or glyph == "?" or plate_digit)
|
||||
u.outline_sides.assign([]) # typed Array[int](代码审查批 3 类型收紧——assign 保持引用语义)
|
||||
u.facade_south = false
|
||||
u.proj_band = 0.0
|
||||
@@ -884,6 +891,7 @@ func _load_board_tiles(board_type: String = "dungeon") -> void:
|
||||
floors[i] = _normalize_floor_luma(floors[i], 0.10, lumas)
|
||||
var ink_mode := _digit_ink_mode(lumas)
|
||||
_digit_dark_ink = bool(ink_mode.dark)
|
||||
_digit_plate = bool(ink_mode.plate)
|
||||
# 六镜像件(词表 §二:wall_e←wall_w / wall_ne←wall_nw / wall_se←wall_sw /
|
||||
# wall_end_e←wall_end_w / wall_in_ne←wall_in_nw / wall_in_se←wall_in_sw;只水平翻转禁旋转
|
||||
# ——北受光不受损)
|
||||
@@ -954,18 +962,21 @@ static func _srgb_lin(c: float) -> float:
|
||||
# ---- 数字墨族按板自适应(L2/L3 亮瓦融字缺陷修复 2026-10-01——甲案:墨色按关自适应+三关对比断言)----
|
||||
|
||||
const DIGIT_INK_CR_P90 := 4.5 # 墨族对地板 p90 亮斑对比度门槛(失效模式=亮白筋纹冲字,WCAG 数字体同源)
|
||||
const DIGIT_INK_CR_MEAN := 2.0 # 墨族对地板均值对比度门槛(次要防中调底线——引擎测光三关实测 2.4–5.8;选族主判据=p90)
|
||||
const DIGIT_INK_CR_MEAN_BRIGHT := 2.5 # 亮族对地板均值门槛(中调防吃字)
|
||||
const DIGIT_INK_CR_MEAN_DARK := 3.0 # 深族对地板均值门槛(大字 AA 级——2.4 的实测观感=隐形,v3.4 收紧)
|
||||
|
||||
# 归一后地板逐像素明度 → 选墨族。规则:家族最弱成员(亮族=金亮/深族=锈墨)对 p90 ≥ 4.5 且对均值
|
||||
# ≥ 2.5;亮族过选亮族,否则深族;两族皆不过取对 p90 较强者并告警(机检断言面=terrain_tile_sets_test)。
|
||||
# 实测(2026-10-01):dungeon p90=0.121 亮族 5.01/6.02 ✓ 维持;underdark p90=0.406 亮族 1.88/4.33 ✗
|
||||
# 深族 6.20/2.69 ✓;deep_underdark p90=0.395 亮族 1.93/4.29 ✗ 深族 6.05/2.72 ✓——L2/L3 切深墨族
|
||||
# 归一后地板逐像素明度 → 选数字呈现模式。三态:亮族直画(暗纹理板)/深族直画(中暗板)/
|
||||
# 色牌垫底(双峰纹理板——近黑斑与近白筋并存时任何墨族直画必融一峰,2026-10-01 渲染帧取证
|
||||
# 实证 underdark 系深墨隐形,牌上深墨 12:1 纹理免疫)。家族最弱成员(亮族=金亮/深族=锈墨)
|
||||
# 对 p90 与均值双门槛;亮族过选亮族,否则深族(均值门 3.0),两族皆不过落牌。
|
||||
# 实测(2026-10-01):dungeon p90=0.121 亮族 4.79/5.80 ✓ 直画;underdark p90=0.406 亮族 ✗、
|
||||
# 深族 5.34/**2.41**(均值 <3.0 ✗)→ 落牌;deep_underdark 同→落牌
|
||||
static func _digit_ink_mode(lumas: Array) -> Dictionary:
|
||||
var sorted := lumas.duplicate()
|
||||
sorted.sort()
|
||||
var n := sorted.size()
|
||||
if n == 0:
|
||||
return {"dark": false, "cr_p90_bright": 0.0, "cr_mean_bright": 0.0, "cr_p90_dark": 0.0, "cr_mean_dark": 0.0}
|
||||
return {"dark": false, "plate": false, "cr_p90_bright": 0.0, "cr_mean_bright": 0.0, "cr_p90_dark": 0.0, "cr_mean_dark": 0.0}
|
||||
var p90: float = sorted[int(n * 0.9)]
|
||||
var mean := 0.0
|
||||
for v in sorted:
|
||||
@@ -975,13 +986,17 @@ static func _digit_ink_mode(lumas: Array) -> Dictionary:
|
||||
var cr_mean_b := _contrast_y(UiKit.INK_L_GOLD, mean)
|
||||
var cr_p90_d := _contrast_y(UiKit.INK_RUST, p90)
|
||||
var cr_mean_d := _contrast_y(UiKit.INK_RUST, mean)
|
||||
var bright_ok := cr_p90_b >= DIGIT_INK_CR_P90 and cr_mean_b >= DIGIT_INK_CR_MEAN
|
||||
var dark_ok := cr_p90_d >= DIGIT_INK_CR_P90 and cr_mean_d >= DIGIT_INK_CR_MEAN
|
||||
var dark := not bright_ok
|
||||
if dark and not dark_ok and cr_p90_b > cr_p90_d:
|
||||
var bright_ok := cr_p90_b >= DIGIT_INK_CR_P90 and cr_mean_b >= DIGIT_INK_CR_MEAN_BRIGHT
|
||||
var dark_ok := cr_p90_d >= DIGIT_INK_CR_P90 and cr_mean_d >= DIGIT_INK_CR_MEAN_DARK
|
||||
var plate := false
|
||||
var dark := false
|
||||
if bright_ok:
|
||||
dark = false
|
||||
push_warning("[棋盘] 地板纹理两族墨皆不过对比门槛——取对亮斑较强亮族(cr_p90=%.2f)" % cr_p90_b)
|
||||
return {"dark": dark, "cr_p90_bright": cr_p90_b, "cr_mean_bright": cr_mean_b,
|
||||
elif dark_ok:
|
||||
dark = true
|
||||
else:
|
||||
plate = true # 双峰纹理:直画不可救,色牌兜底(素牌+深墨 12:1)
|
||||
return {"dark": dark, "plate": plate, "cr_p90_bright": cr_p90_b, "cr_mean_bright": cr_mean_b,
|
||||
"cr_p90_dark": cr_p90_d, "cr_mean_dark": cr_mean_d}
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user