Added water shader

This commit is contained in:
2024-02-08 23:46:03 +01:00
parent d36de18b3c
commit 03d271e87c
6 changed files with 118 additions and 7 deletions

View File

@ -0,0 +1,36 @@
shader_type spatial;
render_mode cull_disabled;
render_mode specular_toon;
// render_mode wireframe;
uniform vec3 color : source_color = vec3(0.055, 0.286, 0.62);
uniform vec3 fresnel_color : source_color = vec3(0.141, 0.447, 0.902);
uniform float fresnel_reduction = 5.0;
uniform float roughness : hint_range(0.0, 1.0) = 0.02;
uniform sampler2D height_map;
uniform sampler2D normal_map;
uniform float height_scale = 0.0;
uniform float noise_scale = 0.5;
varying vec2 noise_position;
float get_fresnel(float power, vec3 normal, vec3 view) {
return pow((1.0 - clamp(dot(normalize(normal), normalize(view)), 0.0, 1.0)), power);
}
void vertex() {
noise_position = VERTEX.xz * noise_scale + 0.5;
float height = texture(height_map, noise_position).x - 0.5;
VERTEX.y += height * height_scale;
}
void fragment() {
// NORMAL_MAP = texture(normal_map, UV).rgb;
NORMAL_MAP = texture(normal_map, noise_position).xyz;
float fresnel = get_fresnel(fresnel_reduction, NORMAL, VIEW);
RIM = 0.2;
METALLIC = 0.0;
ROUGHNESS = roughness * fresnel;
ALBEDO = mix(color, fresnel_color, fresnel);
}

View File

@ -0,0 +1,30 @@
[gd_resource type="ShaderMaterial" load_steps=6 format=3 uid="uid://c6kk0k4jvuh4q"]
[ext_resource type="Shader" path="res://world/water/Water.gdshader" id="1_uj7oj"]
[sub_resource type="FastNoiseLite" id="FastNoiseLite_f06x4"]
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_7t3c8"]
noise = SubResource("FastNoiseLite_f06x4")
[sub_resource type="FastNoiseLite" id="FastNoiseLite_d0hd3"]
noise_type = 3
fractal_type = 2
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_rcc52"]
seamless = true
as_normal_map = true
bump_strength = 1.5
noise = SubResource("FastNoiseLite_d0hd3")
[resource]
render_priority = 0
shader = ExtResource("1_uj7oj")
shader_parameter/color = Color(0.054902, 0.286275, 0.619608, 1)
shader_parameter/fresnel_color = Color(0.141176, 0.447059, 0.901961, 1)
shader_parameter/fresnel_reduction = 5.0
shader_parameter/roughness = 0.02
shader_parameter/height_scale = 0.0
shader_parameter/noise_scale = 0.5
shader_parameter/height_map = SubResource("NoiseTexture2D_7t3c8")
shader_parameter/normal_map = SubResource("NoiseTexture2D_rcc52")

View File

@ -0,0 +1,11 @@
[gd_scene load_steps=3 format=3 uid="uid://cm0rho6adv2p7"]
[ext_resource type="Material" uid="uid://c6kk0k4jvuh4q" path="res://world/water/Water.tres" id="1_yiqgh"]
[sub_resource type="PlaneMesh" id="PlaneMesh_cybb0"]
material = ExtResource("1_yiqgh")
size = Vector2(25, 25)
[node name="Water" type="MeshInstance3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0)
mesh = SubResource("PlaneMesh_cybb0")