V-Panel/scripts/shader_presets.gd

129 lines
3.1 KiB
GDScript3
Raw Normal View History

class_name ShaderPresets
# Collection of vial_fill shader presets.
# Each preset is a Dictionary with a "name" key and shader-parameter key/value pairs.
# Use apply_preset(module, preset_name) to set parameters on a module's ShaderMaterial.
static var presets: Array[Dictionary] = [
{
"name": "Vivid Vial",
"liquid_color": Color(0.2, 0.5, 0.8, 1.0),
"wave_amp": 0.012,
"wave_freq": 4.0,
"wave_strength": 0.05,
"ripple_speed": 1.0,
"edge_color": Color(0.3, 0.6, 1.0, 1.0),
"glow_intensity": 1.5,
"edge_pulse": 1.0,
"noise_scale": 1.0,
"swirl_strength": 0.5,
"hue_shift_speed": 0.0,
},
{
"name": "Emerald Deep",
"liquid_color": Color(0.1, 0.6, 0.3, 1.0),
"wave_amp": 0.015,
"wave_freq": 5.0,
"wave_strength": 0.08,
"ripple_speed": 0.8,
"edge_color": Color(0.2, 0.8, 0.5, 1.0),
"glow_intensity": 1.2,
"edge_pulse": 0.8,
"noise_scale": 1.2,
"swirl_strength": 0.3,
"hue_shift_speed": 0.0,
},
{
"name": "Lava Flow",
"liquid_color": Color(0.8, 0.2, 0.05, 1.0),
"wave_amp": 0.025,
"wave_freq": 3.0,
"wave_strength": 0.15,
"ripple_speed": 0.5,
"edge_color": Color(1.0, 0.5, 0.1, 1.0),
"glow_intensity": 2.0,
"edge_pulse": 1.5,
"noise_scale": 0.8,
"swirl_strength": 1.0,
"hue_shift_speed": 0.0,
},
{
"name": "Neon Dream",
"liquid_color": Color(0.6, 0.2, 0.9, 1.0),
"wave_amp": 0.01,
"wave_freq": 6.0,
"wave_strength": 0.06,
"ripple_speed": 2.0,
"edge_color": Color(0.7, 0.3, 1.0, 1.0),
"glow_intensity": 2.5,
"edge_pulse": 1.2,
"noise_scale": 1.5,
"swirl_strength": 0.8,
"hue_shift_speed": 0.0,
},
{
"name": "Deep Purple",
"liquid_color": Color(0.3, 0.1, 0.5, 1.0),
"wave_amp": 0.008,
"wave_freq": 3.5,
"wave_strength": 0.04,
"ripple_speed": 0.6,
"edge_color": Color(0.5, 0.2, 0.8, 1.0),
"glow_intensity": 1.0,
"edge_pulse": 0.7,
"noise_scale": 1.0,
"swirl_strength": 0.4,
"hue_shift_speed": 0.0,
},
{
"name": "Rainbow Swirl",
"liquid_color": Color(0.3, 0.5, 0.8, 1.0),
"wave_amp": 0.012,
"wave_freq": 4.0,
"wave_strength": 0.1,
"ripple_speed": 1.5,
"edge_color": Color(0.5, 0.7, 1.0, 1.0),
"glow_intensity": 1.5,
"edge_pulse": 1.0,
"noise_scale": 1.5,
"swirl_strength": 1.2,
"hue_shift_speed": 1.5,
},
{
"name": "Frostbite",
"liquid_color": Color(0.5, 0.8, 1.0, 1.0),
"wave_amp": 0.006,
"wave_freq": 7.0,
"wave_strength": 0.03,
"ripple_speed": 2.5,
"edge_color": Color(0.7, 0.9, 1.0, 1.0),
"glow_intensity": 0.8,
"edge_pulse": 0.5,
"noise_scale": 2.0,
"swirl_strength": 0.2,
"hue_shift_speed": 0.0,
},
]
static func get_preset_names() -> PackedStringArray:
var names: PackedStringArray = []
for p in presets:
names.append(p["name"])
return names
static func apply_preset(module: Control, preset_name: String) -> void:
var vial_fill: ColorRect = module.find_child("VialFill", true, false)
if vial_fill == null:
return
var mat := vial_fill.material as ShaderMaterial
if mat == null:
return
for p in presets:
if p["name"] == preset_name:
for key in p:
if key == "name":
continue
mat.set_shader_parameter(key, p[key])
return