Хмарне покоління - це весело! Я висвітлюю як офлайн, так і методи виконання.
Попередньо винесені хмари
Якщо ви хочете заздалегідь відредагувати свої хмарні текстури в режимі офлайн, не шукайте далі Photoshop (або Gimp , якщо вам зручніше). Обидві програми можуть легко генерувати хмарні структури. Елементи меню, як правило, переміщуються між випусками, але на Gimp 2.8.2 основна команда, яку ви шукаєте, це Filters -> Render -> Clouds -> Solid Noise
. Вам потрібно буде створити нове порожнє зображення до ввімкнення команди. Я рекомендую вам експериментувати з параметрами шуму, але як один із прикладів, ось що відбувається, якщо встановити "Випадкове насіння" на 1, "Деталі" на 4, "Розмір X" на 4,0, "Розмір Y" на 8,0, відключити "Randomize" та "Turbulent" та ввімкніть "Tilable":
Наступним кроком, який я обов'язково рекомендую, є редагування рівнів зображення ( Colors -> Levels...
у Gimp). Перетягуючи кінцеві точки навколо, ви можете ефективно змінити рівень хмарного покриву з "повністю хмарного" на "не хмара в небі".
Інші цікаві можливості:
- Використовуйте інструменти "Dodge" та "Burn", щоб вручну освітлити / затемнити ділянки зображення.
- Оберніть зображення хмари, щоб запропонувати схеми вітру. Спробуйте
Filters -> Distorts -> Whirl and Pinch...
команду Gimp , або для додаткового контролю використовуйте Filters -> Distorts -> IWarp...
режим "Деформація", встановлений на "Swirl". Але нехай це буде витонченим - занадто багато викривлення, як правило, розмиває деталі високої частоти із зображення.
- Додайте декілька незалежних хмарних шарів, щоб імітувати різні типи хмар, від тонких і муглистих до великих & кремезних (я впевнений, що вони мають належні наукові назви, але чорт Джим, я програміст, а не метеоролог!). У цьому випадку ви, ймовірно, захочете зберегти кожен шар як окреме зображення, щоб ви могли їх анімувати самостійно під час виконання.
Це дійсно залежить від вашого художнього бачення. Піди горіхи! Коли ви закінчите, не забудьте експортувати текстуру як одноканальне зображення сірого кольору, щоб ви могли використовувати ті самі дані хмари для вашого кольору та альфа-каналу під час виконання.
Генерація хмари часу виконання
Створення необмежених хмарних моделей під час виконання - дещо більше, але все-таки цілком можливо. Це величезна тема, і це охопить лише широкі штрихи.
В основному ви збираєтесь повторити команду Gimp "Solid Noise" у своєму шейдерному коді, використовуючи шумову функцію, подібну до канонічного Perlin Noise, для створення нескінченних, плавних, детермінованих (необов'язково) періодичних обсягів шуму. У вашому запитанні не вказано, на який API відтворення ви орієнтовані, тому я не можу отримати тут занадто конкретний характер; Глава 26 "GPU Gems 2" охоплює варіант шуму Перліна в (дещо датованому) HLSL та CgFX, або ви можете використовувати цю функцію, що випадає з шумом GLSL. Відібравши відбір 2D-фрагмента тривимірного шуму, ви отримаєте щось на зразок команди Gimp "Solid Noise" з деталізацією = 0. Чим менша відстань між вашими зразками шумового звуку, тим меншою буде частота ("плавніше") вашого шуму. Щоб підвищити рівень високочастотної деталізації, почніть з базової низькочастотної картини шуму і додайте додаткові «октави» шуму більш високої частоти, де кожна «октава» - це різний зріз тривимірного шуму з більшим відстанню вибірки і нижня амплітуда. Наочний приклад цього процесу (який я знайшов Гуглінг «багатооктавний перліновий шум») можна знайти тут .
Як величезний додатковий бонус, створені таким чином хмарні текстури можна дуже легко оживити! Додайте часове зміщення до зразків координат функції 3D шуму, і ви отримаєте надзвичайно переконливий хмарний рух (як це бачимо, наприклад, у цьому відео ). Це тому, що функція шуму є рівною у всіх трьох вимірах; прокручування текстури в напрямку U / V призводить до того, що хмари рухаються навколо планети, тоді як прокручування в напрямку W (перпендикуляр) призводить до того, що хмари повільно "розвиваються".
Можливі викривлення хмар під час виконання також для ураганоподібних наслідків. Результати насправді можуть бути набагато вищою якістю, ніж наївні фільтри основи Gimp, що (як було сказано раніше) може призвести до надто розмитої текстури. Один з методів, який ви, безумовно, хочете переглянути - це "карти потоку", як описано Алексом Влахосом з Valve ( слайди SIGGRAPH 2010 ) або Карлосом Гонсалесом з Naughty Dog ( слайди GDC 2012 ). Основна ідея полягає в тому, що ви малюєте векторне поле ("карта потоку") і використовуєте його для спотворення та прокручування текстури хмари під час виконання, при цьому періодично перехрещуючись між двома різними хмарними текстурами, коли відстань спотворення стає занадто великою.
Який метод використовувати?
Попереднє відтворення хмарних текстур у Gimp / Photoshop надзвичайно просто; ви можете створити нову текстуру за кілька секунд, як тільки ви отримаєте висіти її. Код виконання тривіальний і дуже швидкий. Однак більш унікальні хмарні текстури означають більш високі вимоги до місця на диску (також, більш велике / повільне завантаження) та більше використання VRAM під час виконання.
Зробити хмарне середовище виконання спочатку набагато складніше, але як тільки ви працюєте, у нього є кілька чітких переваг перед попередньо наданими хмарними текстурами. Ви можете генерувати нескінченну кількість реалістичних анімованих хмарних моделей, не використовуючи додаткового місця на диску чи VRAM. Однак витрати на виконання декількох 3D-шумових функцій на піксель можуть бути крутими; ваші хмарні піксельні шейдери будуть значно повільнішими, ніж у попередньо винесеному випадку.
TL; DR: обов'язково почніть з використання попередньо наданих хмар, і перейдіть на процедурні хмари часу виконання, якщо вам потрібна додаткова різноманітність (або ви хочете отримати додаткову проблему програмування).