Made things configurable during runtime
This commit is contained in:
parent
4802c406e9
commit
5ebf9f2655
@ -1,7 +1,26 @@
|
||||
[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://doo0lbnv6560s"]
|
||||
[gd_resource type="ShaderMaterial" load_steps=4 format=3 uid="uid://doo0lbnv6560s"]
|
||||
|
||||
[ext_resource type="Shader" uid="uid://cs1j12437apag" path="res://Shaders/SinWater.gdshader" id="1_qkwc8"]
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_vr1qf"]
|
||||
frequency = 0.0388
|
||||
fractal_type = 3
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_af2ab"]
|
||||
seamless = true
|
||||
noise = SubResource("FastNoiseLite_vr1qf")
|
||||
|
||||
[resource]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_qkwc8")
|
||||
shader_parameter/color = Vector3(0.1, 0.4, 0.8)
|
||||
shader_parameter/opacity = 0.95
|
||||
shader_parameter/foamHeight = 0.36
|
||||
shader_parameter/speed = 1.2
|
||||
shader_parameter/foamTex = SubResource("NoiseTexture2D_af2ab")
|
||||
shader_parameter/amplitude = 0.075
|
||||
shader_parameter/frequency = 1.6
|
||||
shader_parameter/waveCount = 20
|
||||
shader_parameter/amplitudeScaleFactor = 0.72
|
||||
shader_parameter/frequencyScaleFactor = 1.325
|
||||
shader_parameter/dirs = PackedFloat32Array(0.981, -0.588, 0.035, -0.977, -0.809, -0.351, 0.989, -0.24, -0.192, 0.907, -0.479, 0.499, 0.388, -0.97, 0.882, -0.845, 0.246, -0.068, -0.41, -0.202, -0.914, 0.605, -0.618, 0.898, -0.615, -0.508, -0.223, -0.841, 0.396, -0.609, 0.746, 0.129, 0.724, 0.54, -0.936, 0.589, 0.874, -0.715, -0.353, 0.243)
|
||||
|
File diff suppressed because one or more lines are too long
115
Scripts/ShaderController.gd
Normal file
115
Scripts/ShaderController.gd
Normal file
@ -0,0 +1,115 @@
|
||||
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
|
1
Scripts/ShaderController.gd.uid
Normal file
1
Scripts/ShaderController.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://itd5mq4iclkk
|
@ -2,13 +2,14 @@ shader_type spatial;
|
||||
render_mode world_vertex_coords;
|
||||
|
||||
uniform vec3 color = vec3(0.1, 0.4, 0.8);
|
||||
uniform float opacity = 0.95;
|
||||
uniform float speed = 1.0;
|
||||
uniform float amplitude = 0.2;
|
||||
uniform float frequency = 1.0;
|
||||
uniform int waveCount = 5;
|
||||
uniform float amplitudeScaleFactor = 0.82;
|
||||
uniform float frequencyScaleFactor = 1.18;
|
||||
uniform float dirs[40];
|
||||
uniform float dirs[200];
|
||||
|
||||
uniform sampler2D depth: hint_depth_texture;
|
||||
|
||||
@ -47,7 +48,7 @@ void fragment() {
|
||||
//SPECULAR = 1.0;
|
||||
//float strength = baseHeight * texture(foamTex, UV).r;
|
||||
//if (strength >= foamHeight) ALBEDO = ALBEDO + vec3(1, 1, 1) * (strength + foamHeight);
|
||||
ALPHA = 0.9;
|
||||
ALPHA = opacity;
|
||||
float dep = texture(depth, SCREEN_UV).x;
|
||||
vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, dep);
|
||||
vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0);
|
||||
|
@ -2,6 +2,7 @@ shader_type spatial;
|
||||
render_mode world_vertex_coords;
|
||||
|
||||
uniform vec3 color = vec3(0.1, 0.4, 0.8);
|
||||
uniform float opacity = 0.95;
|
||||
uniform float foamHeight = 0.2;
|
||||
uniform float speed = 1.0;
|
||||
uniform sampler2D foamTex;
|
||||
@ -10,8 +11,8 @@ uniform float frequency = 1.0;
|
||||
uniform int waveCount = 5;
|
||||
uniform float amplitudeScaleFactor = 0.82;
|
||||
uniform float frequencyScaleFactor = 1.18;
|
||||
uniform float dirs[40];
|
||||
uniform sampler2D foam;
|
||||
uniform float dirs[200];
|
||||
//uniform sampler2D foam;
|
||||
|
||||
uniform sampler2D depth: hint_depth_texture;
|
||||
|
||||
@ -40,13 +41,13 @@ void vertex() {
|
||||
|
||||
void fragment() {
|
||||
ALBEDO = color * clamp(yOffset, 0.2, 11.0);
|
||||
vec4 foamLevel = texture(foam, UV);
|
||||
ALBEDO += vec3(foamLevel.r, foamLevel.r, foamLevel.r);
|
||||
//vec4 foamLevel = texture(foam, UV);
|
||||
//ALBEDO += vec3(foamLevel.r, foamLevel.r, foamLevel.r);
|
||||
//SPECULAR = 1.0;
|
||||
//float strength = yOffset * texture(foamTex, UV).r;
|
||||
//if (strength >= foamHeight) ALBEDO = ALBEDO + vec3(1, 1, 1) * (strength + foamHeight);
|
||||
float strength = yOffset * texture(foamTex, UV).r;
|
||||
if (strength >= foamHeight) ALBEDO = ALBEDO + vec3(1, 1, 1) * (strength + foamHeight - yOffset / 2.0);
|
||||
|
||||
ALPHA = 0.9;
|
||||
ALPHA = opacity;
|
||||
float dep = texture(depth, SCREEN_UV).x;
|
||||
vec3 ndc = vec3(SCREEN_UV * 2.0 - 1.0, dep);
|
||||
vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user