Added water shader
This commit is contained in:
36
client/world/water/Water.gdshader
Normal file
36
client/world/water/Water.gdshader
Normal 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);
|
||||
}
|
30
client/world/water/Water.tres
Normal file
30
client/world/water/Water.tres
Normal 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")
|
11
client/world/water/Water.tscn
Normal file
11
client/world/water/Water.tscn
Normal 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")
|
Reference in New Issue
Block a user