← 🎨 Рендеринг

🎛 Керування

Палітра
Пресети — змінити текстуру  ·  Масштаб / Швидкість / Октави — налаштувати шейдер  ·  Палітра — перефарбувати

Про процедурні текстури

Ця симуляція відтворює шість класичних процедурних текстур — мармур, дерево, хмари, вогонь, комірки Вороного та лаву — повністю на графічному процесорі за допомогою єдиного фрагментного шейдера GLSL. Жодні файли зображень не завантажуються; кожен піксель обчислюється з координатної математики. Базовий примітив — це шум значень, побудований на ґратчастому хеші на основі синуса, що підсумовується по октавах як фрактальний броунівський рух (fBm): кожна октава подвоює частоту й удвічі зменшує амплітуду, створюючи деталізацію в багатьох масштабах.

Повзунок Масштаб (0,5×–4×) наближає шумове поле, Швидкість (0×–3×) керує годинником анімації, а Октави (1–8) задають, скільки шарів fBm підсумовується, обмінюючи деталізацію на швидкодію. Вкладки пресетів перемикають гілку шейдера, тоді як чипи Палітри перефарбовують через яскравість у градації сірого або теплову шкалу. Ці самі техніки живлять кіно й ігрове мистецтво: кора, мармур, дим і лава зазвичай генеруються, а не фотографуються.

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

Що таке процедурні текстури?

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

Що таке fBm і чому його тут використовують?

Фрактальний броунівський рух підсумовує кілька шарів шуму, кожен із подвоєною частотою та вдвічі меншою амплітудою за попередній. Це дає як великі форми, так і дрібні деталі поверхні, завдяки чому виникають природні на вигляд хмари, мармур і вогонь. Повзунок Октави керує тим, скільки шарів — від 1 до 8 — додається.

Що роблять повзунки Масштаб, Швидкість і Октави?

Масштаб (від 0,5× до 4×) наближає вибірку шуму, тож низькі значення показують велику структуру, а високі розкривають дрібне зерно. Швидкість (від 0× до 3×) множить годинник анімації, а перетягування до 0 заморожує текстуру. Октави (від 1 до 8) задають кількість шарів fBm, додаючи насиченості ціною роботи шейдера.

Як насправді генерується базовий шум?

Хеш-функція перемішує кожну цілочислову точку ґратки, використовуючи fract від sin скалярного добутку, даючи псевдовипадкове значення для кожного кута сітки. Шум значень потім плавно інтерполює чотири навколишні кути за кривою smoothstep, а fBm складає кілька масштабованих копій цього шуму, щоб побудувати остаточне поле.

Чим пресет Вороного відрізняється від інших?

Режим Вороного використовує шум Ворлі, або комірковий, замість шуму значень. Він розкидає опорну точку в кожній комірці сітки й для кожного пікселя знаходить найближчу опорну точку, повертаючи цю відстань і хеш опорної точки. Кожна комірка потім фарбується за своєю опорною точкою та темнішає біля меж, утворюючи характерну мозаїку областей.

Що змінюють чипи Палітри?

Кожна текстура має власну вбудовану кольорову шкалу, яку чип Оригінал залишає незмінною. Градації сірого перетворюють результат на яскравість за стандартними вагами 0,299, 0,587, 0,114, оголюючи сире значення шуму. Тепло бере цю саму яскравість і пропускає її через вогняну шкалу чорний-червоний-помаранчевий-жовтий, перефарбовуючи будь-яку текстуру на теплову карту.

Чи є ці текстури фізично точними?

Ні — це художні наближення, а не фізичні симуляції. Вогонь і лава не розв'язують рівняння гідродинаміки; вони анімують поля fBm за допомогою масок і синусоїдальних викривлень, щоб імітувати рух. Мета — переконлива, керована візуальна деталізація на швидкості реального часу, і саме так процедурні текстури використовуються у виробничому рендерингу.

Чому фрагментний шейдер, а не попередньо обчислені зображення?

Робота у фрагментному шейдері означає, що графічний процесор обчислює текстуру незалежно для кожного пікселя паралельно, тож зображення не залежить від роздільності й ніколи не показує швів замощення чи розмиття при наближенні. Це також майже не споживає пам'яті, оскільки нічого не зберігається, а текстура може безперервно анімуватися завдяки подаванню часу в математику.

Що робить гамма-корекція наприкінці шейдера?

Після обчислення кольору його підносять до степеня 0,4545, що дорівнює одиниці, поділеній на 2,2. Це перетворює лінійно-світловий колір, у якому працює математика, на простір sRGB, який очікує ваш дисплей, тож середні тони виглядають правильно яскравими, а не надто темними. Це стандартний завершальний крок виводу шейдера.

Де процедурні текстури використовуються в реальному світі?

Вони всюди в 3D-фільмах та іграх: камінь, дерево, мармур, вода, хмари, шкіра й рельєф зазвичай генеруються, а не фотографуються. Ті самі функції шуму керують картами висот рельєфу, поверхнями планет і спецефектами. Шум Вороного зокрема трапляється в обчислювальній геометрії, моделях клітинної біології та картах областей ігрових світів.

Головна/ Рендеринг/ Процедурні Текстури

Що демонструє

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

Як користуватись

Натисніть пресет текстури, щоб змінити режим шейдера. Повзунок Масштаб наближає поле шуму — малий масштаб розкриває велику структуру, великий — показує дрібні деталі. Швидкість керує анімацією — встановіть 0, щоб зупинити. Режим Сірий показує необроблене значення шуму до накладання палітри. У режимі Вороний кожна кольорова область є територією випадкової «початкової точки» — концепція, що використовується в обчислювальній геометрії, біології та генерації ігрового рельєфу.

Чи знаєте ви?

Кен Перлін винайшов когерентний шум у 1983 році, працюючи над фільмом Трон — пізніше він отримав премію Академії за технічні досягнення. Стівен Ворлі винайшов стільниковий/Вороний шум у 1996 році. Сьогодні практично кожен 3D-фільм і відеогра використовують процедурні текстури: кора, камінь, вода та шкіра, які ви бачите, — переважно математичні функції, а не фотографії. Процедурні текстури у реальному часі стали практичними з появою програмованих GPU-шейдерів на початку 2000-х.