Проблеми трасування променів - з майбутнього в даний час

Передмова

Але насправді, закони, прийняті депутатами, уподобання виборців, тобто користувачів, та науково-технічні досягнення у далеких областях вплинуть на перспективи трасування променів значно більшою мірою.

Вступ

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

У методі зворотного трасування променів побудова зображення, навпаки, йде від пікселів екрану, а чи не від об'єктів. Через кожну точку екрана у напрямку від спостерігача проводиться уявний промінь. Він імітує промінь світла, який прийшов до спостерігача з цього напряму. І для кожного променя виглядає, з яким об'єктом він першим перетинається. І колір області об'єкта, що відповідає точці перетину, задасть колір цього пікселя. Але далі починається найцікавіше. Після перетину з об'єктом, промінь починає свою подорож сценою. Проводяться промені у напрямі джерел світла, щоб перевірити, чи дана точка цього об'єкта затінюється, можна провести відбитий промінь, якщо об'єкт має дзеркальні властивості, можна провести заломлений промінь, якщо об'єкт напіврозмальований.

трасування

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

Отже, відбувається деяка симуляція поширення світла. Метод має безліч складних модифікацій, але в нихНа основі лежить «трасування променя», тобто знаходження перетину променя (світла) з об'єктами сцени.

Нехай метод трасування і дозволяє відмалювати сцену з ефектами освітлення, прозорістю та відображеннями, він обчислювально вкрай затратний. Операція перебування перетину довільного променя з об'єктами складної сцени дуже нетривіальна. І вона може бути так само легко прискорена спеціальними (досить простими) «прискорювачами», як математично проста операція розтеризації трикутників. Тому в ігровій графіці використовується растеризаційний метод, який дозволяє швидко намалювати геометрію, тобто фігури об'єктів і текстури з усілякими шейдерами. А висвітлення майже всієї сцени статичне. Тільки окремих рухомих моделей використовуються приватні методи малювання тіней. Вони також ґрунтуються на растеризації: тіні, по суті, просто малюються.

Найпростіший приклад: малюється в окремий буфер силует об'єкта, з погляду джерела світла і далі, вміст цього буфера, як текстура, накладається поверхню під об'єктом. Виходять такі динамічні тіні, що бігають. Їх можна побачити у багатьох комп'ютерних іграх вже давно. Метод припускає удосконалення, можна проектувати цей силует на стіни, на криві поверхні. Текстуру цього силуету можна розмити, отримавши таким чином малюнок з відтінками сірого, а не чорно-білий чіткий силует. І тоді при накладенні вийде м'який перехід від темряви до світла, так звана м'яка тінь. Це буде не зовсім коректна фізично тінь, але виглядає схоже.

Побудована за допомогою трасування променів м'яка тінь буде реалістичнішою, але її малювати набагато обчислювально витратніше. І найперше питання, чи помітить геймер в азарті, наприклад, комп'ютерної стрілялки, різницю між сильноприблизно намальованою тінню і більш фізично коректною? Тут ми підходимо до суб'єктивного сприйняття людьми, тобто, геймерами, графіки. Адже картинка на екрані монітора лише грубо наближає реальність. І якщо користуватися різними критеріями, міра цього наближення змінюватиметься.

Виявилося, і це очевидно, що для більшості вирішальний критерій наближення це геометрична деталізація. Далі, із деяким відривом, якісне текстурування. У частині текстурування у методу трасування променів зразковий паритет із растеризационным, ми особливо розглядатимемо питання текстурування і шейдерів матеріалів.

Але геометрію сцени трасуванням променів малювати не вигідно, хоч це залежить від сцени. Сцени певного плану ефективніше малювати трасуванням, але сцени із сучасних ігор далекі від цього класу.

Далі у статті ми предметно розглянемо різні проекти в галузі трасування, але, наприклад, свого часу Intel демонструвала рендеринг рівнів із Quake III за допомогою трасування. Низькополігональні рівні в низькій роздільній здатності повільно малювалися на дуже дорогій і просунутій системі, далекій від споживчого ринку. Фішка була в тому, що можна малювати динамічні тіні та складні відображення.

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

Інший момент полягає в тому, що реальне освітлення однієї сцени може бути неймовірно різноманітне, в залежності від властивостей поверхонь і властивостей середовища, повітря, що відображають.зокрема, а також від властивостей джерела світла. Маються на увазі не дзеркальні відбиття, а розсіювання світла об'єктами. Як ми бачимо, у самому кутку темніше, ніж ближче до вікна, тому що в самий кут темний потрапляє врешті-решт менша кількість фотонів світла, що подорожують кімнатою. Саме повітря теж може по-різному розсіювати світло. І для наближеної спрощеної моделі освітлення, що використовується в багатьох іграх, можна підібрати реалістичні параметри властивостей поверхонь, що відображають властивості повітря, джерела світла, щоб в реальності приблизно відтворити освітлення ігрових сцен.

В іграх часто також використовується пререндренне освітлення для сцени, яке заздалегідь розраховується тим же методом трасування променів і записується в текстури об'єктів. Добре, здебільшого ми у реальному житті спостерігаємо статичне світло. Сонце повільно йде по небу, коли ж ми входимо у приміщення, то вмикаємо світло, якщо воно там ще не горить. Потім беремо автомат і розстрілюємо лампочки, світло вимикається. Все це можна заздалегідь розрахувати та помістити в спеціальні текстури, які називаються lightmap (для економії місця, вони меншого дозволу, ніж текстури матеріалів, тому що освітлення змінюється плавно і його можна якісно інтерполювати для кожної точки, використовуючи малорозмірні текстури). Або розрахувати освітлення для кожної вершини трикутників високо деталізованої сцени, а тіні від моделей, що рухаються, малювати приблизно одним з приватних методів.