From 9ddb571d87c084298bbbe5e5de2e116a05d2789f Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Wed, 14 Oct 2026 05:15:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=BF=AD=E4=BB=A326=20T2):=20=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E7=BA=B9=E7=90=86=E8=BF=87=E6=BB=A4=E8=AE=BE=E9=82=BB?= =?UTF-8?q?=E8=BF=91=E9=87=87=E6=A0=B7+=E5=B9=B3=E6=BB=91=E6=B8=90?= =?UTF-8?q?=E5=8F=98=E4=BB=B6=20LINEAR=20=E7=99=BD=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - project.godot [rendering] 增 textures/canvas_textures/default_texture_filter=0(Nearest—— 翻转面=立绘/瓦片/格面/图标/九宫格 UI 皮 crisp,即本批意图;T0 枚举闭合无漏枚举面) - ui_kit.gd 白名单三件显式 LINEAR:vignette_rect 暗角/beams_rect 光柱(Q7 裁,连续 alpha 同血统)/ gradient_base 地图渐变;既有脚影/状态图标 LINEAR 不动 - 冒烟新增 _smoke_texture_filter() 6 断言(V3:工程设置=0+白名单三件在位+既有两处不丢); 冒烟 1022→1028/0;probe --click 全绿残留 0 --- game/presentation/views/ui_kit.gd | 3 +++ game/project.godot | 1 + game/smoke/smoke_all.gd | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/game/presentation/views/ui_kit.gd b/game/presentation/views/ui_kit.gd index f6e30950..425dd9d1 100644 --- a/game/presentation/views/ui_kit.gd +++ b/game/presentation/views/ui_kit.gd @@ -253,6 +253,7 @@ static func vignette_rect() -> TextureRect: var tr := TextureRect.new() tr.texture = t tr.stretch_mode = TextureRect.STRETCH_SCALE + tr.texture_filter = CanvasItem.TEXTURE_FILTER_LINEAR # 平滑渐变件白名单(迭代 26 T2——全局 Nearest 下显式豁免) tr.set_anchors_preset(Control.PRESET_FULL_RECT) tr.mouse_filter = Control.MOUSE_FILTER_IGNORE return tr @@ -272,6 +273,7 @@ static func beams_rect() -> TextureRect: var tr := TextureRect.new() tr.texture = ImageTexture.create_from_image(img) tr.stretch_mode = TextureRect.STRETCH_TILE + tr.texture_filter = CanvasItem.TEXTURE_FILTER_LINEAR # 平滑渐变件白名单(迭代 26 T2 Q7 裁——连续 alpha 与暗角/地图渐变同血统) tr.set_anchors_preset(Control.PRESET_FULL_RECT) tr.mouse_filter = Control.MOUSE_FILTER_IGNORE return tr @@ -291,6 +293,7 @@ static func gradient_base(top: Color, low: Color, stop := 0.4) -> TextureRect: var tr := TextureRect.new() tr.texture = t tr.stretch_mode = TextureRect.STRETCH_SCALE + tr.texture_filter = CanvasItem.TEXTURE_FILTER_LINEAR # 平滑渐变件白名单(迭代 26 T2——全局 Nearest 下显式豁免) tr.set_anchors_preset(Control.PRESET_FULL_RECT) tr.mouse_filter = Control.MOUSE_FILTER_IGNORE return tr diff --git a/game/project.godot b/game/project.godot index c3d1b8bc..e4637fe2 100644 --- a/game/project.godot +++ b/game/project.godot @@ -34,3 +34,4 @@ theme/custom="res://assets/theme/main_theme.tres" renderer/rendering_method="gl_compatibility" renderer/rendering_method.mobile="gl_compatibility" +textures/canvas_textures/default_texture_filter=0 diff --git a/game/smoke/smoke_all.gd b/game/smoke/smoke_all.gd index e11c861d..5e5daa67 100644 --- a/game/smoke/smoke_all.gd +++ b/game/smoke/smoke_all.gd @@ -108,6 +108,7 @@ func _run_core_smoke(db, rng) -> void: _smoke_battle_log_view() _smoke_global_theme() _smoke_button_five_states() + _smoke_texture_filter() _smoke_encounter_roll() _smoke_attack_chain_fresh_pool() _smoke_clear_reward_chain() @@ -5531,6 +5532,30 @@ func _smoke_button_five_states() -> void: check(focus_hits == "", "V2 红线维持 focus 族词条零定义%s" % ("" if focus_hits == "" else "(违例:" + focus_hits + ")")) +# ---- 全局纹理过滤冒烟(迭代 26 T2——工程设置 Nearest+平滑渐变件 LINEAR 白名单;V3)---- +func _smoke_texture_filter() -> void: + print("--- UI 全局纹理过滤(Nearest+白名单三件)---") + var v = ProjectSettings.get_setting("rendering/textures/canvas_textures/default_texture_filter") + check(v != null and int(v) == 0, "V3 工程设置 default_texture_filter=0(Nearest,翻转面=立绘/瓦片/九宫格 crisp)") + var uikit_s = load("res://presentation/views/ui_kit.gd") + var vg = uikit_s.vignette_rect() + check(vg.texture_filter == CanvasItem.TEXTURE_FILTER_LINEAR, "V3 白名单在位:暗角 vignette 显式 LINEAR") + vg.free() + var bm = uikit_s.beams_rect() + check(bm.texture_filter == CanvasItem.TEXTURE_FILTER_LINEAR, "V3 白名单在位:光柱 beams 显式 LINEAR") + bm.free() + var gb = uikit_s.gradient_base(Color.BLACK, Color.WHITE) + check(gb.texture_filter == CanvasItem.TEXTURE_FILTER_LINEAR, "V3 白名单在位:地图渐变 gradient_base 显式 LINEAR") + gb.free() + # 既有显式 LINEAR 两处不丢(源码锚定——脚影/状态图标) + var bw_src: String = FileAccess.get_file_as_string("res://presentation/views/board_world.gd") + check(bw_src.contains("shadow.texture_filter = CanvasItem.TEXTURE_FILTER_LINEAR"), + "V3 脚影显式 LINEAR 不丢(board_world.gd)") + var ss_src: String = FileAccess.get_file_as_string("res://presentation/views/status_slot_row.gd") + check(ss_src.contains("icon.texture_filter = CanvasItem.TEXTURE_FILTER_LINEAR"), + "V3 状态图标显式 LINEAR 不丢(status_slot_row.gd)") + + # ---- 存档序列化冒烟(SaveManager——读写往返/新档合法/余额拒花/锻造出域拒/高版本拒读禁写/ # 损坏兜底/迁移链/域界干净/摘要 cap/摘要集成/生涯终身计数域 v6)。测试文件统一 user://smoke_save_*.json 隔离, # 段首清场+段尾清理——绝不碰 user://save.json(红线)。