add testing module; integrate holographic effects into vial_fill shader with noise texture, sum-of-sines water surface, top-down lighting, foam line, and font outlines for readability

This commit is contained in:
Eric Smith 2026-05-20 15:41:26 -04:00
parent 308cf26a77
commit 7cfbf72ca5
10 changed files with 250 additions and 28 deletions

0
panels/.gitkeep Normal file
View file

View file

@ -46,6 +46,7 @@ func _setup_shader() -> void:
mat.shader = preload("res://shaders/vial_fill.gdshader")
mat.set_shader_parameter("liquid_color", Color(0.2, 0.5, 0.8, 1.0))
mat.set_shader_parameter("fill", 0.0)
mat.set_shader_parameter("noise_tex", load("res://assets/textures/noise_100.png"))
vial_fill.material = mat
@ -61,5 +62,9 @@ func _style() -> void:
add_theme_stylebox_override("panel_focused", panel)
title_label.add_theme_color_override("font_color", Color(0.7, 0.7, 0.8, 1.0))
title_label.add_theme_constant_override("outline_size", 2)
title_label.add_theme_color_override("font_outline_color", Color(0.0, 0.0, 0.0, 0.5))
label.add_theme_color_override("font_color", Color(0.9, 0.9, 1.0, 1.0))
label.add_theme_font_size_override("font_size", 48)
label.add_theme_constant_override("outline_size", 3)
label.add_theme_color_override("font_outline_color", Color(0.0, 0.0, 0.0, 0.7))

View file

@ -46,6 +46,7 @@ func _setup_shader() -> void:
mat.shader = preload("res://shaders/vial_fill.gdshader")
mat.set_shader_parameter("liquid_color", Color(0.2, 0.7, 0.4, 1.0))
mat.set_shader_parameter("fill", 0.0)
mat.set_shader_parameter("noise_tex", load("res://assets/textures/noise_100.png"))
vial_fill.material = mat
@ -61,5 +62,9 @@ func _style() -> void:
add_theme_stylebox_override("panel_focused", panel)
title_label.add_theme_color_override("font_color", Color(0.7, 0.7, 0.8, 1.0))
title_label.add_theme_constant_override("outline_size", 2)
title_label.add_theme_color_override("font_outline_color", Color(0.0, 0.0, 0.0, 0.5))
label.add_theme_color_override("font_color", Color(0.9, 0.9, 1.0, 1.0))
label.add_theme_font_size_override("font_size", 48)
label.add_theme_constant_override("outline_size", 3)
label.add_theme_color_override("font_outline_color", Color(0.0, 0.0, 0.0, 0.7))

View file

@ -0,0 +1,65 @@
extends ModuleBase
class_name TestingModule
@onready var title_label: Label = %Title
@onready var label: Label = %Label
@onready var vial_fill: ColorRect = %VialFill
var _displayed_fill: float = 0.0
var _fill_tween: Tween
var _cycle: int = 0
var _levels: Array[float] = [0.0, 0.25, 0.50, 0.75, 1.0]
func initialize() -> void:
module_title = "Testing"
_setup_shader()
_style()
func refresh(data: Dictionary) -> void:
_cycle = (_cycle + 1) % _levels.size()
var target: float = _levels[_cycle]
label.text = "%d%%" % roundi(target * 100.0)
if _fill_tween and _fill_tween.is_valid():
_fill_tween.kill()
_fill_tween = create_tween()
_fill_tween.tween_method(_set_fill, _displayed_fill, target, 0.6).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_CUBIC)
func _set_fill(value: float) -> void:
_displayed_fill = value
var mat := vial_fill.material as ShaderMaterial
if mat:
mat.set_shader_parameter("fill", value)
func _setup_shader() -> void:
var mat := ShaderMaterial.new()
mat.shader = preload("res://shaders/vial_fill.gdshader")
mat.set_shader_parameter("liquid_color", Color(0.6, 0.3, 0.8, 1.0))
mat.set_shader_parameter("fill", 0.0)
mat.set_shader_parameter("noise_tex", load("res://assets/textures/noise_100.png"))
vial_fill.material = mat
func _style() -> void:
var panel := StyleBoxFlat.new()
panel.bg_color = Color.TRANSPARENT
panel.corner_radius_top_left = 12
panel.corner_radius_top_right = 12
panel.corner_radius_bottom_right = 12
panel.corner_radius_bottom_left = 12
add_theme_stylebox_override("panel", panel)
add_theme_stylebox_override("panel_focused", panel)
title_label.add_theme_color_override("font_color", Color(0.7, 0.7, 0.8, 1.0))
title_label.add_theme_constant_override("outline_size", 2)
title_label.add_theme_color_override("font_outline_color", Color(0.0, 0.0, 0.0, 0.5))
label.add_theme_color_override("font_color", Color(0.9, 0.9, 1.0, 1.0))
label.add_theme_font_size_override("font_size", 48)
label.add_theme_constant_override("outline_size", 3)
label.add_theme_color_override("font_outline_color", Color(0.0, 0.0, 0.0, 0.7))

View file

@ -0,0 +1,41 @@
[gd_scene format=3]
[ext_resource type="Script" path="res://panels/testing/testing_module.gd" id="1"]
[ext_resource type="Shader" path="res://shaders/vial_fill.gdshader" id="2"]
[node name="TestingModule" type="PanelContainer"]
anchors_preset = 0
script = ExtResource("1")
[node name="VialFill" type="ColorRect" parent="."]
unique_name_in_owner = true
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 2
[node name="MarginContainer" type="MarginContainer" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
theme_constant_overrides/margin_left = 12
theme_constant_overrides/margin_top = 12
theme_constant_overrides/margin_right = 12
theme_constant_overrides/margin_bottom = 12
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
[node name="Title" type="Label" parent="MarginContainer/VBoxContainer"]
unique_name_in_owner = true
text = "Testing"
[node name="Spacer" type="Control" parent="MarginContainer/VBoxContainer"]
size_flags_vertical = 3
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
unique_name_in_owner = true
horizontal_alignment = 1
size_flags_horizontal = 4