diff --git a/art/ui/buttons/button_disabled.png b/art/ui/buttons/button_disabled.png index 87f6404..8540ef3 100644 Binary files a/art/ui/buttons/button_disabled.png and b/art/ui/buttons/button_disabled.png differ diff --git a/art/ui/buttons/button_hover.png b/art/ui/buttons/button_hover.png index 116c563..b9951fc 100644 Binary files a/art/ui/buttons/button_hover.png and b/art/ui/buttons/button_hover.png differ diff --git a/art/ui/buttons/button_normal.png b/art/ui/buttons/button_normal.png index 404ac92..5f9e791 100644 Binary files a/art/ui/buttons/button_normal.png and b/art/ui/buttons/button_normal.png differ diff --git a/art/ui/buttons/button_pressed.png b/art/ui/buttons/button_pressed.png index 523e995..0a83d33 100644 Binary files a/art/ui/buttons/button_pressed.png and b/art/ui/buttons/button_pressed.png differ diff --git a/art/ui/panels/panel_command_seal.png b/art/ui/panels/panel_command_seal.png index 86a4bc8..2f8f8e5 100644 Binary files a/art/ui/panels/panel_command_seal.png and b/art/ui/panels/panel_command_seal.png differ diff --git a/art/ui/panels/panel_hud_jade.png b/art/ui/panels/panel_hud_jade.png index 20e270d..64dfcc3 100644 Binary files a/art/ui/panels/panel_hud_jade.png and b/art/ui/panels/panel_hud_jade.png differ diff --git a/art/ui/panels/panel_lacquer.png b/art/ui/panels/panel_lacquer.png index 9b1429b..977d13a 100644 Binary files a/art/ui/panels/panel_lacquer.png and b/art/ui/panels/panel_lacquer.png differ diff --git a/art/ui/panels/panel_paper_scroll.png b/art/ui/panels/panel_paper_scroll.png index 4316b62..2222807 100644 Binary files a/art/ui/panels/panel_paper_scroll.png and b/art/ui/panels/panel_paper_scroll.png differ diff --git a/tools/smoke_visual_assets.gd b/tools/smoke_visual_assets.gd index 42b934d..eff2742 100644 --- a/tools/smoke_visual_assets.gd +++ b/tools/smoke_visual_assets.gd @@ -5035,6 +5035,9 @@ func _check_panel_texture_path(failures: Array[String], path: String, context: S failures.append("%s should not keep chroma-key green pixels: %s (%d sampled)" % [context, path, green_fringe_samples]) if luma_max - luma_min < 0.10: failures.append("%s should contain visible material contrast: %s" % [context, path]) + var warm_bias := _image_visible_warm_bias(image, 8) + if warm_bias > 0.12: + failures.append("%s should avoid a dominant yellow UI cast: %s (warm bias %.3f)" % [context, path, warm_bias]) func _check_button_texture_path(failures: Array[String], path: String, context: String) -> void: @@ -5090,6 +5093,25 @@ func _check_button_texture_path(failures: Array[String], path: String, context: failures.append("%s should not keep chroma-key green pixels: %s (%d sampled)" % [context, path, green_fringe_samples]) if luma_max - luma_min < 0.08: failures.append("%s should contain visible material contrast: %s" % [context, path]) + var warm_bias := _image_visible_warm_bias(image, 8) + if warm_bias > 0.12: + failures.append("%s should avoid a dominant yellow UI cast: %s (warm bias %.3f)" % [context, path, warm_bias]) + + +func _image_visible_warm_bias(image: Image, sample_step: int) -> float: + var total_bias := 0.0 + var visible_samples := 0 + var step := maxi(1, sample_step) + for y in range(0, image.get_height(), step): + for x in range(0, image.get_width(), step): + var pixel := image.get_pixel(x, y) + if pixel.a <= 0.05: + continue + total_bias += maxf(0.0, ((pixel.r + pixel.g) * 0.5) - pixel.b) + visible_samples += 1 + if visible_samples <= 0: + return 0.0 + return total_bias / float(visible_samples) func _check_tile_marker_texture_path(failures: Array[String], path: String, context: String) -> void: