Фізично-заснована візуалізація
Ти на правильному шляху, коли ти кажеш, що "воно намагається імітувати, як світло відображається в реальному житті. Це, як правило, воно розбивається на два компоненти, блискучі та дифузні, залежно від типу матеріалу".
Але ми вже давно моделюємо матеріали зі світлими та розсіяними в іграх та комп’ютерній графіці. Хитрість полягає в тому, що ми використовували ці речі як абсолютно незалежні - зміна зеркальності не змінило дифузного:
Це приклад затінення Phong з вікі Blender . Ви можете бачити, що він пропонує два параметри окулярної інтенсивності та напруженості, а ці параметри лише змінюють білясту частину відбиття. Синє розсіяне відображення зовсім не змінюється.
Те, як ігри будуть використовувати це, виконавцеві було б доручено налаштувати ці значення для кожного матеріалу, поки "це не виглядало правильно". Оскільки "очна твердість" не є реальною фізичною властивістю матеріалів, які ми можемо точно виміряти, це потрібно було робити очей.
Цей метод трохи крихкий. Під час зміни освітленості (скажімо, динамічного об’єкта, що рухається по різних областях, або в оточенні з часом доби та погодою), він може виглядати настільки неправильно - занадто яскравим або занадто темним - оскільки умови перегляду не такі, як ті, на які були налаштовані його окулярні параметри.
Введіть фізико-орієнтовану візуалізацію, яка є спробою ґрунтувати наші описи матеріалів на об'єктивніших, вимірюваних властивостях реальних поверхонь. Однією з найбільш очевидних властивостей є збереження енергії - більш жорстка поверхня буде розсіяно світло дифузно, а більш гладка / більш металева поверхня буде відображати світло безпосередньо, але це той самий пул світла, з якого вони обидва черпають. Отже, при рівності, коли ми робимо матеріал блискучим, дифузна складова повинна темніти:
Цей приклад зі статті Marmoset, що пояснює PBR, який спільно використовувався Syntac_
Існує більше для фізичного базування, ніж для енергозбереження, але це, мабуть, найголовніший знак того, що ви працюєте з фізично заснованою системою.
Зберігаючи моделі відображення, подібні до того, як матеріали працюють у реальному житті, ми зменшуємо потребу у факторах витіснення та суб’єктивності художника, щоб отримати матеріал у реальному світі, як дерево, бетон чи шкіру, щоб виглядати реальним у різних умовах освітлення.
Зауважте, що інша відповідь описала це в умовах непрямого освітлення від світла, що відскакує від інших предметів на сцені. Хоча багато систем освітлення, які використовують моделі, засновані на фізичній основі, також включатимуть інструменти для моделювання цього, зазвичай це відомо під окремою назвою Global Illumination . Це ефект, завдяки якому одна сторона розсіяної головки на цьому зображенні виглядає зеленою, освітленою світлом, що відскакує від зеленої стіни:
Зображення з цієї статті про глобальне освітлення
Відображення екрана
У той час як PBR намагається моделювати, як матеріал відбиває світло, відбиток екрану просто намагається зафіксувати те, що відбивається - конкретно, для блискучої дзеркальної поверхні, що я повинен бачити у відображенні?
Знову ж таки, це порівняно недавня техніка візуалізації, яку, мабуть, найясніше зрозуміти на відміну від того, як це робили ігри раніше:
Перевернута візуалізація - звичайна для водних літаків або плоских дзеркал, ми буквально відображаємо всю відображену геометрію вдруге дзеркально по площині відбивної поверхні. Це дає якісні відображення (повна деталізація, об’єкти, що контактують з поверхневою лінією, та їх відображення), але правильно працює лише на плоских поверхнях. Чим хвилястіша або курганиста поверхня, тим менше вона поводиться як реальні відбиття, які повинні спотворювати або розмивати складні способи.
Карти кубів - збережемо колір, який бачив би будь-який промінь огляду, що випромінюється від їх центральної точки. Динамічно візуалізуючи карти куба з вибраних точок сцени, ми можемо оцінити, який колір повинен відображатися від будь-якої довільно вигнутої поверхні. Проблема тут полягає в тому, що карта куба є абсолютно коректною лише в її центральній точці - оскільки точка, де ми імітуємо віддзеркалення, рухається по сцені, вона повинна бачити деякий паралакс, якого немає на карті куба. Це означає, що об’єкти не мають тенденції вирівнюватися зі своїми відображеннями.
Відображення простору екрану намагається вирішити ці обмеження, використовуючи саму відображену сцену як джерело інформації для відображення. Він промальовує відбитий промінь виду, використовуючи глибину сцени, поки не перетне щось у відтвореній сцені.
Ось слайд з презентації EA DICE про їх підхід до роздумів у двигуні Frostbite .
Це означає (за допомогою розумної алгоритмічної роботи) ми можемо отримувати відбиття з досить випромінювальною точністю відключення довільних поверхонь в іграх, маючи правильне вирівнювання поверхонь у контакті, спотвореннях та розмиванні, до тих пір, поки відбита частина поверхні видно на -екранний (тобто не за межами екрана чи закритий чимось іншим). Там, де відображення не може бути точно визначене ремаршируванням, зазвичай воно наближається за допомогою зразків поблизу або резервної кубічної карти, що представляє сцену біля / позаду камери.
Ви можете бачити на цьому прикладі відображення екранного простору , враження може бути дуже переконливим, хоча помітні невеликі помилки (див. Відображення нижньої сторони кубів, які не видно у візуалізованому кадрі, і так просто мазати та повторювати сусідні пікселі, або отвори у відбитті правої зеленої завіси поруч з квітковим горщиком та внизу екрана, де реймаршинг не зміг знайти правильні відбиті пікселі). Зазвичай використовується ця техніка для помірно блискучих / злегка шорстких поверхонь, щоб зробити випадкові помилки менш помітними.