water-shader/Scripts/ShaderController.gd

116 lines
4.7 KiB
GDScript

class_name ShaderController extends Control
@export var eSinShader: ShaderMaterial
@export var gerstnerShader: ShaderMaterial
@export var maxWaveCount: int = 100
var mode: int = 0
func _ready() -> void:
var dirs: Array[float]
for i: int in range(maxWaveCount * 2):
dirs.append(randf_range(-1, 1))
eSinShader.set_shader_parameter("dirs", dirs)
gerstnerShader.set_shader_parameter("dirs", dirs)
func _on_option_button_item_selected(index: int) -> void:
match index:
0:
$"../ESin".show()
$"../Gerstner".hide()
$PanelContainer/MarginContainer/VBoxContainer/ESin.show()
$PanelContainer/MarginContainer/VBoxContainer/Gerstner.hide()
mode = 0
1:
$"../ESin".hide()
$"../Gerstner".show()
$PanelContainer/MarginContainer/VBoxContainer/ESin.hide()
$PanelContainer/MarginContainer/VBoxContainer/Gerstner.show()
mode = 1
func _on_color_picker_button_color_changed(color: Color) -> void:
match mode:
0:
eSinShader.set_shader_parameter("color", Vector3(color.r, color.g, color.b))
eSinShader.set_shader_parameter("opacity", color.a)
1:
gerstnerShader.set_shader_parameter("color", Vector3(color.r, color.g, color.b))
gerstnerShader.set_shader_parameter("opacity", color.a)
func _on_wave_count_value_changed(value: float) -> void:
match mode:
0:
eSinShader.set_shader_parameter("waveCount", value)
1:
gerstnerShader.set_shader_parameter("waveCount", value)
func _on_speed_value_changed(value: float) -> void:
match mode:
0:
eSinShader.set_shader_parameter("speed", value)
1:
gerstnerShader.set_shader_parameter("speed", value)
func _on_amplitude_value_changed(value: float) -> void:
match mode:
0:
eSinShader.set_shader_parameter("amplitude", value)
1:
gerstnerShader.set_shader_parameter("amplitude", value)
func _on_amplitude_scale_value_changed(value: float) -> void:
match mode:
0:
eSinShader.set_shader_parameter("amplitudeScaleFactor", value)
1:
gerstnerShader.set_shader_parameter("amplitudeScaleFactor", value)
func _on_frequency_value_changed(value: float) -> void:
match mode:
0:
eSinShader.set_shader_parameter("frequency", value)
1:
gerstnerShader.set_shader_parameter("frequency", value)
func _on_frequency_scale_value_changed(value: float) -> void:
match mode:
0:
eSinShader.set_shader_parameter("frequencyScaleFactor", value)
1:
gerstnerShader.set_shader_parameter("frequencyScaleFactor", value)
func _on_button_pressed() -> void:
match mode:
0:
eSinShader.set_shader_parameter("color", Vector3(0.1, 0.4, 0.8))
eSinShader.set_shader_parameter("opacity", 0.95)
$PanelContainer/MarginContainer/VBoxContainer/ESin/HBoxContainer/ColorPickerButton.color = Color(0.1, 0.4, 0.8, 0.95)
eSinShader.set_shader_parameter("waveCount", 20)
$PanelContainer/MarginContainer/VBoxContainer/ESin/HBoxContainer7/HSlider.value = 20
eSinShader.set_shader_parameter("speed", 1.2)
$PanelContainer/MarginContainer/VBoxContainer/ESin/HBoxContainer2/HSlider.value = 1.2
eSinShader.set_shader_parameter("amplitude", 0.075)
$PanelContainer/MarginContainer/VBoxContainer/ESin/HBoxContainer3/HSlider.value = 0.075
eSinShader.set_shader_parameter("amplitudeScaleFactor", 0.72)
$PanelContainer/MarginContainer/VBoxContainer/ESin/HBoxContainer4/HSlider.value = 0.72
eSinShader.set_shader_parameter("frequency", 1.6)
$PanelContainer/MarginContainer/VBoxContainer/ESin/HBoxContainer6/HSlider.value = 1.6
eSinShader.set_shader_parameter("frequencyScaleFactor", 1.325)
$PanelContainer/MarginContainer/VBoxContainer/ESin/HBoxContainer5/HSlider.value = 1.325
1:
gerstnerShader.set_shader_parameter("color", Vector3(0.1, 0.4, 0.8))
gerstnerShader.set_shader_parameter("opacity", 0.95)
$PanelContainer/MarginContainer/VBoxContainer/Gerstner/HBoxContainer/ColorPickerButton.color = Color(0.1, 0.4, 0.8, 0.95)
gerstnerShader.set_shader_parameter("waveCount", 20)
$PanelContainer/MarginContainer/VBoxContainer/Gerstner/HBoxContainer7/HSlider.value = 20
gerstnerShader.set_shader_parameter("speed", 1.545)
$PanelContainer/MarginContainer/VBoxContainer/Gerstner/HBoxContainer2/HSlider.value = 1.545
gerstnerShader.set_shader_parameter("amplitude", 0.2)
$PanelContainer/MarginContainer/VBoxContainer/Gerstner/HBoxContainer3/HSlider.value = 0.2
gerstnerShader.set_shader_parameter("amplitudeScaleFactor", 0.77)
$PanelContainer/MarginContainer/VBoxContainer/Gerstner/HBoxContainer4/HSlider.value = 0.77
gerstnerShader.set_shader_parameter("frequency", 1.29)
$PanelContainer/MarginContainer/VBoxContainer/Gerstner/HBoxContainer6/HSlider.value = 1.29
gerstnerShader.set_shader_parameter("frequencyScaleFactor", 1.225)
$PanelContainer/MarginContainer/VBoxContainer/Gerstner/HBoxContainer5/HSlider.value = 1.225