TGViewer
GameDev Pickle GameDev Pickle @gamedev_pickle · 101 subscribers
Post #49 329
🌊 Мини-гайд: лёгкий процедурный океан-шейдер в URP

Как получить волны без текстур и тяжёлых симуляций.
Вся анимация считается математикой прямо в вершинном шейдере.
Плоскость воды деформируется по высоте. Движение из нескольких синусных волн с разной частотой и фазой:

float t = _Time.y * waveSpeed;
float k = TWO_PI / max(0.001, waveLength);
float wave = sin(pos.x * k + t) + cos(pos.z * (k * 1.17) - t * 1.23) + sin((pos.x + pos.z) * (k * 0.73) + t * 0.81);
wave *= 0.333;
pos.y += wave * waveAmplitude;

✨ Цвет и блик (пиксели)

float ndv = saturate(dot(normalWS, viewDirWS));
float fresnel = pow(1.0 - ndv, fresnelPower);
float ripple = sin(_Time.y + worldPos.x * 0.35 + worldPos.z * 0.28) * surfaceRipple;
half3 color = baseColor + specColor * fresnel + ripple;

🧩 Как использовать в сцене
Создать материал на основе шейдера
Назначить его на обычную плоскость
Отмасштабировать плоскость под размер водной поверхности
  • 🔥 9
More from @gamedev_pickle
  1. Jul 13, 2026🛠 Решил попробовать batching для обработки игровых событий Продолжаю понемногу оптимизиро…
  2. Jul 5, 2026Очередной геймджем подошел к концу, спешу поделиться результатами! Решили с командой копну…
  3. Jun 16, 2026Сейчас работаю над ИИ юнитов и решил добавить тех отображение зоны атаки для удобной отлад…
  4. May 22, 2026Siberian Game Jam Май 2026 окончен, пришли результаты. Из 231 игр мы заняли 31ое место!) К…
  5. May 19, 2026В перерывах между разработкой отвлекаюсь на инди-игры. Запустил игру «Размена не будет» и…
  6. May 14, 2026Подъехала постджемная версия игры BeanUP 🎮 Пофиксили большинство багов, улучшили физику и…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →