🌿 Шум Перліна

Шум Перліна (Кен Перлін, 1983 — премія Академії) — це функція градієнтного шуму: у вузли решітки призначаються псевдовипадкові градієнтні вектори, а значення в будь-якій точці визначається плавно інтерпольованим скалярним добутком з навколишніми градієнтами. На відміну від білого шуму, шум Перліна плавний і неперервний, тому ідеально підходить для природних текстур. Додавання кількох октав (дробовий броунівський рух, fBm) з послідовно подвоєними частотами та вдвічі меншими амплітудами утворює рельєф, хмари, вогонь та деревну текстуру. 🇬🇧 English

Режим рендерингу

Параметри fBm

Відтворення

РежимВідтінки сірого
Октави6
Z зміщення0.000
СтанВідтворення

Як працює шум Перліна

Кожна клітинка решітки має чотири кутові вузли з псевдовипадковими одиничними градієнтними векторами. Для точки запиту (x,y) обчислюється вектор зміщення до кожного кута, береться скалярний добуток з градієнтом, а результати змішуються за допомогою плавної кривої загасання t³(6t²−15t+10). Значення завжди у [−1,+1] і неперервне. fBm підсумовує noct шарів: noise(x·fi, y·fi) · pi, де f=лакунарність (2), p=персистентність (0.5). Більше октав — більше деталей; більша персистентність — грубіший рельєф.

Про цю симуляцію

Цей візуалізатор обчислює класичний 3D градієнтний (Перліна) шум повністю на GPU за допомогою фрагментного шейдера Three.js, призначаючи псевдовипадкові градієнти вузлам решітки та плавно інтерполюючи між ними за допомогою квінтичної кривої загасання. Кілька частотних шарів підсумовуються як дробовий броунівський рух (fBm) — кожна октава подвоює частоту (лакунарність), а її амплітуда зменшується за коефіцієнтом підсилення/персистентності — щоб побудувати детальні, природні на вигляд поля шуму. Третій вимір шуму прокручується часом, створюючи неперервну анімацію без видимих швів. Опційне викривлення простору та режим хребтів/турбулентності дозволяють тому самому базовому шуму створювати плинні, димоподібні спотворення або гострі гірські силуети.

🔬 Що показує

Живе поле fBm на GLSL, що рендериться щокадру: до 8 октав класичного градієнтного шуму Перліна підсумовуються з налаштовуваними лакунарністю та підсиленням, а потім відображаються у п'ять різних кольорових схем — прості відтінки сірого за висотою, колірна шкала рельєфу вода/пісок/трава/скеля/сніг, топографічні ізолінії, забарвлений викривлений потік та вигляд хребтів/турбулентності за модулем.

🎮 Як користуватися

Оберіть режим рендерингу (відтінки сірого, рельєф, контури, викривлення/потік, хребти), потім налаштуйте масштаб/частоту, октави (1–8), лакунарність, підсилення/персистентність і викривлення простору, щоб змінити форму поля шуму. Повзунок швидкості анімації прокручує шум крізь третій вимір із часом, кнопки «Пауза»/«Скинути» заморожують або відновлюють типові значення, а кнопка «Про симуляцію та довідка» відкриває модальне вікно з таким самим поясненням.

💡 Чи знали ви?

Кен Перлін винайшов цю функцію шуму 1983 року, працюючи над візуальними ефектами для фільму Трон, щоб замінити різкий, механічний вигляд ранніх процедурних текстур чимось органічним. Техніка була настільки впливовою, що він отримав за неї технічну премію Академії 1997 року, а fBm на основі шуму Перліна досі лежить в основі більшості процедурних ефектів рельєфу, хмар та вогню в іграх і кіно.

Поширені запитання

Що таке шум Перліна насправді?

Шум Перліна — це тип градієнтного шуму: псевдовипадкові одиничні градієнтні вектори призначаються кутам решітки, а значення шуму в будь-якій точці знаходиться взяттям скалярного добутку між кожним сусіднім градієнтом і вектором зміщення до цієї точки, а потім змішуванням результатів плавною кривою загасання. На відміну від чистого білого шуму, це створює неперервну, природну на вигляд варіацію замість різких перешкод, тому це стандартний будівельний блок для процедурного рельєфу та текстур.

Що означає fBm і як ця симуляція його використовує?

fBm означає дробовий броунівський рух — техніку підсумовування кількох «октав» однієї й тієї самої функції шуму з наростаючими частотами й спадними амплітудами. У цій симуляції частота кожної октави множиться на повзунок лакунарності (за замовчуванням 2, тобто подвоюється), а її амплітуда множиться на повзунок підсилення/персистентності (за замовчуванням 0,5), і до 8 октав поєднуються так, щоб додати дрібні деталі поверх широких форм.

Що насправді змінюють різні режими рендерингу?

Усі п'ять режимів поділяють те саме базове поле fBm, але забарвлюють або постобробляють його по-різному. Відтінки сірого показують необроблене значення висоти напряму; рельєф відображає висоту через колірну шкалу вода-пісок-трава-скеля-сніг; контури малюють ізолінії, як на топографічній карті; викривлення/потік подає шум назад у власні координати (доменне викривлення) для завихрених, димоподібних форм; а хребти беруть абсолютне значення кожної октави перед підсумовуванням, що вирізьблює гострі гірські хребти замість плавних пагорбів.

Як генерується анімація без видимих циклів чи швів?

Функція шуму, що використовується тут, справді тривимірна (x, y та z, керований часом), а не 2D-текстура, що прокручується. Щокадру значення швидкості анімації просуває годинник «зміщення Z», який стає третьою координатою, що подається у функцію шуму, тож увесь 2D-зріз плавно й неперервно перетворюється крізь базовий 3D-об'єм шуму, без повторюваного патерну чи видимого шва.

Цей шум Перліна обчислюється на CPU чи GPU?

Повністю на GPU. Шум, крива загасання, підсумовування fBm, доменне викривлення й колірні шкали — усе реалізовано як GLSL-код усередині фрагментного шейдера Three.js, тож кожен піксель на екрані обчислює власне значення шуму паралельно щокадру. Саме це дозволяє довести октави, масштаб і викривлення до максимальних значень, поки візуалізація продовжує плавно перемальовуватися в реальному часі.