Шаг 3
- Настройка SpatialMaterial
Когда вы кликните на иконку материала, то откроется его меню как на скриншёте ниже

На данный момент, нас интересует параметр Albedo
Как видно на скриншёте выше у него есть два свойства Color и Texture.
Нам нужен только параметр Color, так как именно в нём мы и выберем цвет и прозрачность воды как на скриншёте ниже, ну или по вашему усмотрению.

На данный момент, установите прозрачность (параметр А (нижний ползунок)) примерно так, как на скриншёте.
Позже можно отрегулировать и цвет и прозрачность так, как вам будет нужно.
Теперь нужно включить NormalMap
Только просто включить как на скриншёте, пока настраивать нечего не нужно в нём!

Теперь переходим к параметру Transmission
Включаем и добавляем в него первую текстуру, которую вы можете взять ниже скриншёта

Нажимаем на [пусто] и Загрузить
Далее, выбираем заранее помещённую (Импортированную) текстуру в папку проекта


И переходим к следующему параметру, Refraction
так же как и в предыдущем параметре, включаем его и добавляем вторую текстуру


Теперь, когда мы практически настроили материалы, сделаем нашу воду прозрачной и отбрасывающей блики.
Для этого нам нужно настроить параметр Roughness как на скриншёте ниже и установить его значение в 0.09 перемещая ползунок или введя цифрами над ползунком.

Теперь мы можем преобразовать наш материал в ShaderMaterial и продолжить настройку кода.
А потом завершить всё окончательной настройкой внешнего вида.

И так, после преобразования, нажимаем на Shader сразу под предпросмотром нашей текстуры

Так мы перейдём к редактированию скрипта Shader.

Здесь при желании вы можете посмотреть код, попытаться разобраться что к чему, если конечно же не пробовали раньше
что-то подобное настраивать, но я рекомендую для того, чтобы наша "Живая" вода работала и на ПК и в смартфонах Android,
просто выделить весь код, удалить а на его место вставить код, который вы видите ниже.
shader_type spatial;
render_mode blend_mix,depth_draw_alpha_prepass,cull_back,diffuse_burley,specular_schlick_ggx;
uniform vec4 albedo : hint_color;
uniform sampler2D texture_albedo : hint_albedo;
uniform float specular;
uniform float metallic;
uniform float proximity_fade_distance;
uniform float roughness : hint_range(0,1);
uniform float point_size : hint_range(0,128);
uniform sampler2D texture_refraction;
uniform float refraction : hint_range(-16,16);
uniform vec4 refraction_texture_channel;
uniform sampler2D texture_normal : hint_normal;
uniform float normal_scale : hint_range(-16,16);
uniform vec3 uv1_scale;
uniform vec3 uv1_offset;
uniform vec3 uv2_scale;
uniform vec3 uv2_offset;
void vertex() {
UV = UV * uv1_scale.xy + uv1_offset.xy;
}
void fragment() {
vec2 base_uv = UV;
vec4 albedo_tex = texture(texture_albedo, base_uv);
ALBEDO = albedo.rgb * albedo_tex.rgb;
METALLIC = metallic;
ROUGHNESS = roughness;
SPECULAR = specular;
vec3 normal_tex = texture(texture_normal, base_uv).rgb * 2.0 - 1.0;
NORMALMAP = texture(texture_normal, vec2(base_uv.x + TIME * 0.05, base_uv.y + TIME * 0.05)).rgb * 1.01 * texture(texture_normal, vec2(base_uv.x + TIME * 0.05, base_uv.y + TIME * 0.05 + TIME / 10.5)).rgb;
NORMALMAP_DEPTH = normal_scale;
vec2 ref_ofs = SCREEN_UV - normal_tex.xy * refraction * texture(texture_refraction, base_uv).r;
float ref_amount = 1.0 - albedo.a * albedo_tex.a;
EMISSION += texture(SCREEN_TEXTURE, ref_ofs).rgb * ref_amount;
ALPHA = albedo.a * albedo_tex.a;
}
Далее всё сохраняем и скорее всего, вы увидите что после того, как вы вставили и сохранили код,
то пропала одна из текстур и вы видите, что ваша вода выглядит примерно так как на этом скриншёте ниже.
То есть, не волн, не движения.
Это не проблема, так просто добавьте снова текстуру в поле Texture Normal и ваша "Живая" вода сразу же покроется движущимися волнами как на скриншёте ниже.