128 lines
3.1 KiB
GDScript
128 lines
3.1 KiB
GDScript
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
|