Плутати з реалізаціями PBR


14

Я відкриваю чудовий світ математики, і я потрапляю на величезну стіну з PBR і називаю, тому у мене є кілька запитань: Наскільки я розумію, BRDF описує, як матеріал реагує на світло (пряме світло і відбиття). Але в "Cook-Torrance" я нічого не бачу про відбиття, я не розумію, як я його інтегрую, тому я отримую лише розсіяне світло і відбиття.

Я багато читав про різні "дифузні терміни" на зразок "Орен-Наяр", це частина Кука-Торранса, як інше "D" у номінаторі DFG? це замінює його без дзеркальних розрахунків?

Я багато читав про "GGX" з мого фону художника блендера, я думав, що це щось, що робить розмитим відображення, але, здається, я помилявся, і тепер я знаходжу цей термін GGX у багатьох різних ситуаціях, як, наприклад, у мікрогранях поширення в цьому навчальному посібнику

Отже, коротко, питання: як "Орен-Наяр" і "GGX" і "Кук-Торранс" пов'язані один з одним (якщо вони є) і як я інтегрую "відображення vec3" в цей алгоритм?

Як я вже говорив, перш ніж я новачок з математики, тому якщо ваша відповідь "математика важка", будь ласка, напишіть glsl / hlsl версію ваших рівнянь, для мене це набагато простіше зрозуміти, тому еквівалент допоможе мені багато

PS: Я розумію, що моє питання розмито, але воно також таке ж розмите, як і моє розуміння теми.


1
Щось, що може вам допомогти, - це те, що «дзеркальний» означає «як дзеркальне». Отже, коли ми говоримо про дзеркальні та дифузні відбиття, то дзеркальне означає дзеркальне відображення, те, що люди зазвичай називають рефлексією. Дифуз - це просто "речі, що запалюються". Вони також відбивають світло, але вони відбиваються в різних напрямках, тому результат - це не те, за чим можна впізнати зображення. Існує шкала між дзеркальним і дифузним відображенням у реальних об'єктах, і це частина того, що Параметр "шорсткості" контролів PBR.
Алан Вулф

Ви можете спробувати прочитати оригінальний папір Cook-Torrance: inst.cs.berkeley.edu/~cs294-13/fa09/lectures/cookpaper.pdf - обов’язково перевіряйте посилання, перелічені в кінці кінців, коли це можливо (більшість з них є доступні в Інтернеті). Мине певний час, але це вірний спосіб зрозуміти "глибоко" те, що відбувається.
витирайте

Відповіді:


12

DFG з'являється в сім'ї BRDF на базі мікрофайлів. Це просто твір трьох термінів:

  • Д: Розподіл мікрофайлів.
  • F: Коефіцієнт френеля.
  • G: Геометричне ослаблення між мікросхемами.

Коли хтось каже, що Cook-Torrance, вони зазвичай мають на увазі мікросхема BRDF, де розподіл (D) - це Бекман, що, на мою думку, стосується оригінальної папери Cook-Torrance.

GGX насправді просто інший розподіл (D термін). GTR - ще один. Імена часто використовуються як ярлик для позначення BRDF, що використовує цей розподіл.

Тепер усі вони припускають дзеркальне відображення (або заломлення) на мікроповерхні, звідси і термін френеля. Якщо ви скористаєтеся подібною ідеєю, але використовуєте дифузні (ламбертійські) мікрофайли, ви отримаєте BRDF Oren-Nayar. Я думаю, що це базується на гауссовому розподілі мікрофайлів, але я не знайомий з деталями.


Гаразд, це трохи зрозуміліше, але це все ще не пояснює, що я роблю зі своїм "vec3 reflectionColour", який я отримую від повторного запуску променя в трафіку / маршируванні або за допомогою SSR / cubemap. Це як рівняння тільки з урахуванням прожектора / прожектора, але не має уявлення про зону освітлення чи відбиття. Також здається, що "окулярний" пов'язаний лише з "білою крапкою" замість рефлексії через те, що не має сенсу = /
newin

@newin У моделі PBR окуляри та рефлексія - це різні назви однієї речі. Це дзеркальна родзинка, коли промінь потрапляє на світло, відбиток, коли він потрапляє на інший предмет (або навколишнє середовище). Що стосується вашого відображенняКолор, це залежить від того, як утворюється промінь. Ви пробите пряме освітлення? Обласні ліхтарі? Інтеграція BRDF проти та оточуючої карти? Спробуйте прочитати прогресивне трасування шляху з явним відбором світла , є довга відповідь, яка може зрозуміти кілька речей щодо цього процесу.
Олів'є

Отже, якщо я правильно розумію, що до "vec3 reflectionColour" слід ставитися як до світла, і якщо я хочу зробити сітку, що випромінює світло, я повинен просто поставити значення> 1 в альбедо, і це все? (Я намагаюся інтегрувати PBR в різний сценарій першим є raymarcher , де я хочу Сітки випромінює світла, інше ігровий движок , що використання SSR і , ймовірно , буде використовувати cubemaps)
Newin

@newin випромінюване світло просто додається поверх всього іншого. Це не пов'язано з BRDF. Якщо ваша сітка не робить нічого, окрім як випромінює світло, вам навіть не потрібно відстежувати від неї подальші промені. Великий альбедо буде посилювати світло (фізично неправильно), а не створювати його.
Олів'є
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.