Середовище та пост-обробка

Godot 3 надає перероблений ресурс навколишнього середовища, а також нову систему пост-обробки з багатьма доступними ефектами прямо з коробки.

Середовище

Ресурс Environment (Середовище) містить всю інформацію необхідну для керування середовищем рендерингу. Він включає в себе небо, навколишнє освітлення, карту тонів, ефекти та коригування. Сам по собі він нічого не робить, але стає активним після використання в одному з наступних місць в порядку пріоритету:

Вузол камери

Середовище Environment можна встановити на камеру. Він буде мати пріоритет над будь-якою іншим налаштуванням.

../../_images/environment_camera.png

В основному це корисно, коли ви хочете перевизначити існуюче середовище, але в цілому краща ідея полягає у використанні наступної можливості.

Вузол WorldEnvironment (Середовище світу)

Вузол WorldEnvironment можна додати до будь-якої сцени, але тільки один може існувати на активному дереві сцени. Додавання більш ніж одного призведе до попередження.

../../_images/environment_world.png

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

Середовище за замовчуванням

Можна встановити середовище за замовчуванням, яке діє як запасний варіант, коли на камеру, або WorldEnvironment, не встановлено жодного середовища. Просто перейдіть до Параметри проекту -> Rendering -> Environment:

../../_images/environment_default.png

Нові проекти, створені з Керівника проектів, будуть з середовищем за замовчуванням (default_env.tres). Якщо потрібне інше, збережіть його на диску, перш ніж посилатися на нього тут.

Параметри середовища

Нижче наведено детальний опис усіх параметрів середовища та способу їх використання.

Тло

Розділ Background (Тло) містить параметри заповнення фону (частини екрана, де об'єкти не малюються). У Godot 3.0 фон може не тільки відображати зображення, або колір, він також може змінювати те, як об'єкти впливають на навколишнє середовище та відбите світло.

../../_images/environment_background1.png

Існує багато способів встановити тло:

  • Clear Color (Очистити колір) використовує чіткий колір за замовчуванням, визначений проектом. Тло буде постійного кольору.

  • Custom Color (Власний колір) схожий на Clear Color, але з власним значенням кольору.

  • Sky (Небо) дозволяє визначити панорамне небо (текстура сфери на 360 градусів), або процедурне небо (просте небо з градієнтом і необов'язковим сонцем). Об'єкти будуть віддзеркалювати його і поглинати навколишнє світло від нього.

  • Color+Sky дозволяє визначити небо (як показано вище), але використовує постійне значення кольору для малювання фону. Небо буде використовуватися тільки для віддзеркалення і навколишнього світла.

Навколишнє світло

Навколишнє світло (як визначене тут) - це тип світла, яке впливає на кожну частину геометрії з однаковою інтенсивністю. Воно глобальне і незалежне від іншого, доданого на сцену, світла.

Існує два типи навколишнього світла: Навколишній колір (який є постійним кольором, помноженим на альбедо матеріалу), і Небо (як описано раніше, але небо має бути встановлене як тло, для того, щоб бути включеним).

../../_images/environment_ambient.png

Коли Небо встановлюється як тло, можна змішувати між собою навколишній колір і небо за допомогою параметра Sky Contribution (для зручності значення за замовчуванням 1,0, тому тільки небо впливає на об'єкти).

Ось порівняння того, як різне навколишнє світло впливає на сцену:

../../_images/environment_ambient2.png

Нарешті параметр Energy, який є множником. Корисний при роботі з HDR.

Загалом, навколишнє світло слід використовувати тільки для простих сцен, великих екстер'єрів, або з міркувань продуктивності (навколишнє світло легше), бо воно не забезпечує хорошої якості освітлення. Краще генерувати навколишнє світло від ReflectionProbe, або GIProbe, які будуть правильніше імітувати поширення непрямого світло. Нижче наведено порівняння, з точки зору якості, між використанням плоского навколишнього кольору та GIProbe:

../../_images/environment_ambient_comparison.png

При використанні одного з методів, описаних вище, об'єкти отримають постійне навколишнє освітлення, замінене навколишнім світлом від зондів.

Туман

Туман, як і в реальному житті, змушує віддалені об'єкти зникати в однорідному кольорі. Фізичний ефект насправді досить складний, але Godot забезпечує хорошу схожість. Туман Godot має два важливі параметри:

  • Depth: (Глибина) Застосовується опираючись на відстань до камери.

  • Height: (Висота) Застосовується до будь-яких об'єктів нижче (або вище) певної висоти, незалежно від відстані до камери.

../../_images/environment_fog_depth_height.png

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

Два параметри можна налаштувати, щоб зробити ефект туману цікавішим:

Sun Amount (Насиченість сонця), який використовує властивість туману Sun Color (Колір сонця). Під спрямованим світлом (зазвичай це сонце) колір туману буде змінюватися, імітуючи сонячне світло, що проходить через туман.

Transmit Enabled, який імітує реалістичнішу передачу світла. На практиці світло більше виділяється в тумані.

../../_images/environment_fog_transmission.png

Переспрямування

Ця функція доступна лише при використанні обробника GLES3.

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

Параметри тонування:

  • Mode: Режим тонування.

    • Linear: Режим тонування за замовчуванням. Це найшвидший і найпростіший оператор тонування, але він змушує яскраве освітлення виглядати схожим на плями, з помітним відсіканням вихідних кольорів.

    • Reinhardt: Виконує варіацію вимальованих кольорів пікселів за цією формулою: color = color / (1 + color). Це дозволяє уникнути відсікання яскравих світлих тонів, але отримане зображення може виглядати трохи тусклим.

    • Filmic: Дозволяє уникнути відсікання яскравих світлих тонів. Отримані зображення, зазвичай, виглядають яскравішими, ніж при Reinhardt.

    • ACES Fitted: Тонування Academy Color Encoding System. ACES Fitted важче за інші режими, але обробляє яскраве освітлення реалістичнішим способом, знебарвлюючи його, оскільки воно стає яскравішим. ACES зазвичай дає більш контрастний результат у порівнянні з Reinhardt і Filmic. ACES є рекомендується при прагненні отримати фото-реалістичні візуальні ефекти.

    • ACES: Застарілий (буде видалений в Godot 4.0). Поводиться як ACES, але не знебарвлює освітлення, і воно стає яскравішим (що менш реалістично). Рекомендується використовувати ACES Fitted, замість ACES.

  • Exposure: Експозиція тонування, яка імітує кількість світла, отриманого з плином часу (за замовчуванням: 1.0). Вищі значення призводять до загального яскравішого вигляду. Якщо сцена здається занадто темною в результаті оператора тонування, або зміни білої точки, спробуйте трохи збільшити це значення.

  • White: Тонування білої точки, яка імітує, де в масштабі знаходиться білий колір (за замовчуванням: 1.0). Для фото-реалістичного освітлення рекомендовані значення знаходяться між 6.0 і 8.0. Вищі значення призводять до менших плям світла, але роблять сцену трохи темнішою в цілому.

Автоматична експозиція (HDR)

Ця функція доступна лише при використанні обробника GLES3.

Незважаючи на те, що в більшості випадків освітлення та текстурування контролюються художником, Godot підтримує просту реалізацію високого динамічного діапазону з механізмом автоматичного впливу. Це, як правило, використовується заради реалізму при поєднанні внутрішніх зон з низьким освітленням і зон на відкритому повітрі. Автоматична експозиція імітує камеру (або око) в спробі адаптуватися між світлими і темними місцями і їх різною кількістю світла.

../../_images/environment_hdr_autoexp.gif

Найпростіший спосіб використовувати автоматичну експозицію - переконатися, що зовнішнє світло (або інше сильне світло) має енергію понад 1,0. Це робиться шляхом налаштування їх множника Energy (на самому Світлі). Щоб зробити все послідовним, Небо Sky, як правило, також має використовувати множник енергії, щоб підходити спрямованому світлу. Як правило, значень від 3,0 до 6,0 достатньо, щоб імітувати умови внутрішнього та зовнішнього виду.

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

../../_images/environment_hdr_bloom.png

Керовані користувачем значення в розділі Автоматична експозиція Auto Exposure поставляються з розумними параметрами за замовчуванням, але ви все одно можете налаштувати їх:

../../_images/environment_hdr.png
  • Scale: Значення для масштабування освітлення. Яскравіші значення виробляють яскравіші зображення, менші виробляють більш темні.

  • Min Luma: Мінімальна яскравість, яку буде прагнути налаштувати автоматична експозиція. Яскравість - це середнє значення світла у всіх пікселях екрана.

  • Max Luma: Максимальна яскравість, яку буде прагнути налаштувати автоматична експозиція.

  • Speed: Швидкість, з якою яскравість виправляється. Чим вище значення, тим швидше відбувається корекція.

Ефекти проміжної та пост-обробки

Велика кількість широко використовуваних ефектів проміжної та пост-обробки підтримується в навколишньому середовищі.

Відбивання в просторі екрана (Screen-Space Reflections (SSR))

Ця функція доступна лише при використанні обробника GLES3.

Хоча Godot підтримує три джерела даних відбивання (Sky, ReflectionProbe та GIProbe), вони можуть не надавати достатньо деталей для всіх ситуацій. Відбивання в просторі екрана найбільш ефективні в ситуаціях, коли об'єкти контактують один з одним (об'єкт над підлогою, над столом, плаваючий на воді тощо).

../../_images/environment_ssr.png

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

Користувачам доступні кілька параметрів для налаштування цієї техніки:

  • Max Steps визначає довжину відображення. Чим більше це число, тим важче воно для обчислення.

  • Fade In дозволяє регулювати криву згасання, що корисно для того, щоб зробити контактну область м'якшою.

  • Fade Out дозволяє регулювати криву згасання, тому межа кроку м'яко зникає.

  • Depth Tolerance може бути використана для допустимого ігнорування пропусків екранно-просторово-променевого промацування. Чим більше це значення, тим більше пропусків буде проігноровано.

  • Roughness буде застосовувати розмиття екранного простору для імітації шорсткості об'єктів з матеріалами з цією характеристикою.

Майте на увазі, що екран-простір-відбивання відбивають тільки непрозору геометрію. Прозорі матеріали не відбиваються оскільки вони не записуються у буфер глибини. Це також стосується шейдерів, які використовують SCREEN_TEXTURE, або DEPTH_TEXTURE.

Екранно-просторова навколишня оклюзія (Screen-Space Ambient Occlusion (SSAO))

Ця функція доступна лише при використанні обробника GLES3.

Як згадувалося в розділі Навколишнє світло, області, де світло від вузлів світла не досягає (або знаходиться за радіусом дії, або затінене), освітлюються навколишнім світлом. Godot може імітувати це за допомогою GIProbe, ReflectionProbe, Sky або постійного кольору навколишнього середовища. Проблема, однак, полягає в тому, що всі ці методи діють краще на більшому масштабі (на великих областях), ніж на меншому рівні геометрії.

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

Ось тут і приходить на допомогу Навколишня Оклюзія в Екранному Просторі. Як ви можете бачити на зображенні нижче, мета полягає в тому, щоб переконатися, що увігнуті області темніші, імітуючи більш вузький шлях для входу світла:

../../_images/environment_ssao.png

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

Саме тому на зображенні вище ефект менш помітний під прямим світлом (зліва). Якщо ви хочете, щоб SSAO працювало і під прямим світлом, використовуйте параметр Light Affect (навіть якщо це неправильно, деяким художникам подобається, як це виглядає).

SSAO найкраще виглядає в поєднанні з реальним джерелом непрямого світла, як GIProbe:

../../_images/environment_ssao2.png

SSAO має кілька параметрів для налаштування:

../../_images/environment_ssao_parameters.png
  • Radius/Intensity: Для управління радіусом, або інтенсивністю, оклюзії доступні ці два параметри. Радіус вимірюється у світових (метричних) одиницях.

  • Radius2/Intensity2: Можна використовувати вторинні радіус/інтенсивність. Поєднання великого і малого радіуса навколишньої оклюзії, як правило, працює добре.

  • Bias: Тут можна підлагодити само-оклюзію, хоча, як правило, підходить значення за замовчуванням.

  • Light Affect: SSAO впливає тільки на навколишнє світло, але збільшення цього повзунка може дозволити вплив на пряме світло. Деякі художники віддають перевагу цьому ефекту.

  • Ao Channel Affect: Якщо використовується нульове значення, для оклюзії навколишнього середовища буде використовуватися тільки текстура навколишньої оклюзії матеріалу; SSAO не застосовуватиметься. Значення, що перевищують 0, множать текстуру навколишньої оклюзії на ефект SSAO в тій, чи іншій, мірі. Це не впливає на матеріали без текстури навколишньої оклюзії.

  • Quality: Якість. Залежно від значення, SSAO буде приймати більше зразків над сферою для кожного пікселя. Висока якість добре працює тільки на сучасних графічних процесорах.

  • Blur: Тип використовуваного ядра розмиття. Ядро 1x1 - це просте розмиття, яке краще зберігає локальні деталі, але не дуже ефективне (як правило, краще працює з високою якістю вище), тоді як 3x3 краще пом'якшить зображення (з ефектом, трохи схожим на тремтіння), але також не зберігає локальні деталі.

  • Edge Sharpness: Це може бути використано для збереження різкості країв (дозволяє уникнути ділянок без навколишньої оклюзії на складках).

Глибина різкості / Далеке розмиття

Цей ефект імітує фокусну відстань на камерах високого класу. Він розмиває об'єкти за заданим діапазоном. Він має початкову відстань Distance з перехідним регіоном Transition (у світових одиницях):

../../_images/environment_dof_far.png

Параметр Сума Amount контролює кількість розмиття. В більшості випадків може знадобитися налаштування якості Quality, щоб уникнути артефактів.

Глибина різкості / Близьке розмиття

Цей ефект імітує фокусну відстань на камерах високого класу. Він розмиває об'єкти близько до камери (на противагу розмиття). Він має початкову відстань Distance з перехідним регіоном Transition (у світових одиницях):

../../_images/environment_dof_near.png

Параметр Сума Amount контролює кількість розмиття. В більшості випадків може знадобитися налаштування якості Quality, щоб уникнути артефактів.

Зазвичай використовують обидва типи розмиття разом, щоб зосередити увагу глядача на конкретному об'єкті:

../../_images/environment_mixed_blur.png

Сяйво

У фотографії та фільмах, коли кількість світла перевищує максимальну підтримку засобів масової інформації (будь то аналогові, або цифрові), світло, як правило, витікає назовні на темні області зображення. Це імітується в Godot ефектом світіння Glow.

../../_images/environment_glow1.png

За замовчуванням, навіть якщо ефект увімкнено, він буде слабким, або невидимим. Одна з двох умов потрібна для його відображення:

    1. Світло в пікселі перевищує поріг HDR Threshold (де 0 - його перевищує все світло, а 1,0 - світло над значенням тонування White (Біле)). Як правило, це значення очікується на рівні 1,0, але його можна знизити, щоб дозволити більшій кількості світла розтікатися. Існує також додатковий параметр, HDR Scale, що дозволяє масштабувати (роблячи його яскравішим, або темнішим) світло, що перевищує поріг.

../../_images/environment_glow_threshold.png
    1. Ефект Bloom має значення більше 0. У міру збільшення він збільшує ефект світіння.

../../_images/environment_glow_bloom.png

Обидва змусять світло почати розтікатися з яскравіших областей.

Як тільки світіння видно, його можна контролювати за допомогою декількох додаткових параметрів:

  • Intensity - це загальна шкала ефекту, його можна посилити, або послабити (0,0 видаляє його).

  • Strength полягає в тому, наскільки сильно обробляється ядро фільтра світіння. Більші значення змушують фільтр посилитися і розширитися назовні. Загалом, змінювати це не потрібно, так як розмір можна ефективніше регулювати за допомогою Levels.

В режимі накладання ефекту (Blend Mode) також можна змінити:

  • Additive є найсильнішим, оскільки лише додає ефект світіння до зображення без змішування. Загалом, він занадто сильний, щоб його можна було використовувати, але може добре виглядати з низькою інтенсивністю Bloom (виробляє ефект, схожий на сон).

  • Screen гарантує, що світіння ніколи не буде світліше за себе, і він чудово працює на всьому.

  • Softlight є типовим і найслабшим, опрацьовуючи лише тонкі порушення кольору навколо об'єктів. Цей режим найкраще працює на темних сценах.

  • Replace може бути використаний для розмиття всього екрана, або налагодження ефекту. Він показує лише ефект світіння, без зображення під ним.

Щоб змінити розмір і форму ефекту світіння, Godot надає рівні Levels. Менші рівні - це сильні світіння, які з'являються навколо об'єктів, тоді як великі рівні туманні світіння, що охоплюють весь екран:

../../_images/environment_glow_layers.png

Справжня сила цієї системи, однак, полягає в об'єднанні рівнів для створення цікавіших моделей світіння:

../../_images/environment_glow_layers2.png

Нарешті, оскільки найвищі шари створюються шляхом розтягування невеликих розмитих зображень, цілком можливо, що може бути видно деяку квадратність. Увімкнення Bicubic Upscaling позбавляє цього при мінімальних витратах на продуктивність. Запримітьте, що це ефективно тільки при використанні сервера GLES3.

../../_images/environment_glow_bicubic.png

Коригування

Наприкінці обробки Godot пропонує можливість зробити деякі стандартні коригування зображення.

../../_images/environment_adjustments.png

Перший з них здатний змінити типову яскравість, контрастність і насиченість:

../../_images/environment_adjustments_bcs.png

Другий надає градієнт корекції кольору. Звичайний градієнт від чорного до білого, подібний до наступного, не дасть ніякого ефекту:

../../_images/environment_adjusments_default_gradient.png

Але створення користувацьких дозволить зіставити кожен канал з іншим кольором:

../../_images/environment_adjusments_custom_gradient.png