116 lines
4.7 KiB
GDScript
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
|