HDR Color Picker
Візуалізація HDR (розширений динамічний діапазон) в Unity
При стандартній візуалізації, червона, зелена і синя компоненти пікселя представлені дробовим числом в діапазоні 0..1, де 0 вказує на нульову інтенсивність, а одиниця представляє максимальну інтенсивність на дисплеї. Хоча це просто у використанні, воно не відображає того, як освітлення працює в сцені з реального життя. Людське око, як правило, пристосовується до умов освітлення, так що об'єкт, який виглядає білим в тьмяно освітленій кімнаті, в дійсності може бути менш яскравим, ніж сірий об'єкт при денному освітленні. Крім того, очей більш чутливий до відмінностей яскравості на нижньому краю діапазону, ніж на верхньому.
Можна отримати більш переконливі візуальні ефекти, якщо рендеринг адаптований так, щоб діапазони значень пікселів більш точно відображали рівні освітлення, які могли б бути присутніми в реальному сцені. Хоч ці значення і будуть дуже потребувати зворотного прив'язці до діапазону, доступному на пристрої відображення, будь-які проміжні розрахунки (такі, як ефекти пост-обробки Unity) дадуть більш реалістичні результати. Можливість внутрішнього представлення графіки використовувати значення в межах дії 0..1 є сутністю High Dynamic Range (HDR) рендеринга.
HDR включається для кожної камери окремо при за допомогою властивостей компонента Camera: -
Коли HDR активний, сцена отрісовивается в буфер зображення HDR, який може розміщувати значення пікселів в межах дії 0..1. Потім цей буфер піддається пост-обробці за допомогою ефектів пост-обробки, таких як HDR bloom. Ефект пост-обробки tonemapping конвертує HDR зображення в стандартне low dynamic range (LDR) зображення для відправки на екран. Перетворення в LDR має відбуватися в якийсь момент процесу роботи ефекту пост-обробки, але воно не повинно відбуватися на останньому етапі, якщо після цього повинні бути застосовані використовують тільки LDR ефекти пост обробки. Для зручності, деякі ефекти пост-обробки можуть автоматично конвертуватися в LDR після застосування HDR ефекту (див. Розділ скриптинга, представлений нижче).
Tonemapping (тональна компресія)
Tonemapping - це процес упаковування HDR значень назад в LDR діапазон. Існує безліч різних методів, і те, що добре для одного проекту, може не бути кращим вибором для іншого. У Unity включений набір різних tonemapping ефектів пост-обробки. Для того, щоб їх використовувати, виберіть Assets -> Import Package -> Image Effects (Pro Only). потім виберіть камеру в сцені і виберіть Component -> Image Effects -> ToneMapping. Детальний опис tonemapping типів можна знайти в документації по ефектах пост-обробки.
![Unity - керівництво візуалізація hdr (розширений динамічний діапазон) в unity (розширений) Unity - керівництво візуалізація hdr (розширений динамічний діапазон) в unity](https://images-on-off.com/images/151/unityrukovodstvovizualizatsiyahdrrasshir-f954fd91.png)
![Unity - керівництво візуалізація hdr (розширений динамічний діапазон) в unity (динамічний) Unity - керівництво візуалізація hdr (розширений динамічний діапазон) в unity](https://images-on-off.com/images/151/unityrukovodstvovizualizatsiyahdrrasshir-79f32a34.png)
HDR Bloom і Glow
Використання HDR дозволяє отримати набагато більше контролю в пост-обробці. У LDR блума (bloom) є невдалий побічний ефект розмиття багатьох областей екрану, навіть якщо інтенсивність їх пікселів менше 1.0. За допомогою HDR можна застосовувати блум тільки до тих областей, де інтенсивність вище одиниці. Це призводить до більш бажаного результату, коли по сусіднім пікселям "розтікаються" тільки дуже яскраві елементи сцени. Вбудований ефект пост-обробки 'Bloom and Lens Flares' тепер теж підтримує HDR. Щоб додати його до камери, виберіть Assets -> Import Package -> Image Effects (Pro Only). потім виберіть камеру в сцені, і виберіть Component -> Image Effects -> Bloom. Більш докладний опис ефекту 'Bloom' можна знайти в документації по ефектах пост-обробки.
![Unity - керівництво візуалізація hdr (розширений динамічний діапазон) в unity (візуалізація) Unity - керівництво візуалізація hdr (розширений динамічний діапазон) в unity](https://images-on-off.com/images/151/unityrukovodstvovizualizatsiyahdrrasshir-51c575a7.png)
![Unity - керівництво візуалізація hdr (розширений динамічний діапазон) в unity (динамічний) Unity - керівництво візуалізація hdr (розширений динамічний діапазон) в unity](https://images-on-off.com/images/151/unityrukovodstvovizualizatsiyahdrrasshir-fee0ec0d.png)
- Кольори в зонах високої інтенсивності НЕ будуть втрачені
- Краща підтримка блума і світіння (glow).
- Зниження banding-артефактів в областях з низькочастотних освітленням
Нотатки з використання
Forward Rendering (попереджуючий рендеринг)
У режимі попереднього рендеринга, HDR підтримується тільки якщо у вас є ефект пост-обробки. Це пов'язано з питаннями продуктивності. Якщо у вас не присутній ефект пост-обробки, тоді не існуватиме tone mapping і буде відбуватися відсікання інтенсивності. У такій ситуації сцена буде отрисовать прямо в бекбуфер, в якому не підтримується HDR.
Deferred Rendering (відкладений рендеринг)
У режимі HDR пам'ять під буфер light prepass buffer буде також виділятися як під буфер з плаваючою комою. Це знижує зв'язаність в буфері освітлення. HDR підтримується при відкладеному рендеринге, навіть якщо не використовуються ефекти пост-обробки.
До скрипту з ефектом пост-обробки можна додати атрибут ImageEffectTransformsToLDR для вказівки того, що цільової буфер повинен бути в LDR, а не в HDR. По суті, це означає, що скрипт може автоматично конвертувати в LDR після застосування свого HDR ефекту пост-обробки.