Як працює RTX Real-Time Ray Tracing з Nvidia

Як працює RTX Real-Time Ray Tracing з Nvidia

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

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

Як Ray Casting перетворюється на трасування проміння

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

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

Генеральний директор Nvidia Джен Хсун Хуан пояснює, як легке випікання було використано як більш ефективну альтернативу деяким можливостям, доступним для проміння трасування променів.
Генеральний директор Nvidia Джен Хсун Хуан пояснює, як легке випікання було використано як більш ефективну альтернативу деяким можливостям, доступним для проміння трасування променів.

Ray Casting є масивним інтенсивним процесором

Загальна кількість променів світла, що падають на сцену, виходить за рамки того, що можна моделювати навіть потужні комп'ютери, що використовуються для трасування променів. Практично це означає, що промінювачі променів повинні вибрати рівень якості, який визначає, скільки променів відкидається з кожного пікселя сцени в різних напрямках. Потім, розраховуючи, де кожен промінь перетинає об'єкт на сцені, йому слід слідувати певній кількості променів з кожного перехрестя для моделювання відбитого світла. Обчислення цих перехресть є відносно дорогим. До недавнього часу він також обмежувався процесорами. Переміщення його на GPU, як і деякі сучасні проміжні маркери, здатне зробити це, забезпечило значне покращення швидкості, але для досягнення якісної якості в Голлівуді для роботи на міні-суперкомп'ютері з високопродуктивним мульти-GPU потрібні майже 10 годин на кадр.

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

Як Nvidia це зробив

Як працює RTX Real-Time Ray Tracing з Nvidia

Крім того, Nvidia випускає новий виразний модуль для вилучення. Деноуінг дуже важливий для трасування променів, тому що ви можете виставити обмежену кількість променів з кожного пікселя у віртуальній камері. Тому, якщо ви не залишатимете свій траєкторій променів достатньо довго, щоб заповнити сцену, у вас є багато неприємних вигляду "лисих плям" або "шум". Є кілька чудових дослідницьких проектів, які допомагають оптимізувати, які промені кидаються, але ви все ще вітру з великим шумом. Якщо цей шум може бути зменшений окремо, ви можете випускати якісний висновок набагато швидше, ніж якщо вам потрібно вирішити проблему, відправивши це набагато більше променів. Nvidia використовує цю техніку для швидшого створення кадрів. Цілком імовірно, що ця здатність спирається на роботу, яка працює на AI, Nvidia, представлену в SIGGRAPH минулого року.

RTX має об'єкти Acceleration, тому можуть бути й інші розумні трюки, які він використовує. Наприклад, деякі прискорювачі трасування трасування кешують поточні перехрестя та роблять відносно прості перетворення, щоб передбачити, де вони будуть відбуватися в наступному кадрі. Це швидко і часто невидимим для людського ока, але не технічно чітко. Демо-версія на сцені демонструє лише синтетичні об'єкти, тому ми не знаємо, чи дійсно RTX наразі вирішує проблему відображення в реальному часі людей. Таким чином, поки я впевнений, ми побачимо деякі дійсно класні програми для ігор, ті, хто хоче використовувати RTX для наукових досліджень, повинні переконатися, що він буде генерувати точний вихід, який їм потрібен.

Динамічна сцена з прототипу з використанням Microsoft DXR, Unreal Engine 4 та Nvidia RTX
Динамічна сцена з прототипу з використанням Microsoft DXR, Unreal Engine 4 та Nvidia RTX

Ні, ви не можете мати RTX, принаймні ще не

Як вражаючі, як ігрові демоверти, ви не можете скористатися ними. RTX вимагає GPU для сімейства Volta, і жоден з них ще не був представлений для споживчого ринку. Nvidia та ігрові компанії стверджують, що до кінця поточного року вони матимуть ігри з підтримкою RTX, однак немає ніякого слова про те, коли ви зможете їх запустити. Я міг бачити, як вони розміщені на потужному сервісі хмарних ігор, але ставки оренди для необхідних Вольтам для запуску гри, ймовірно, перевищують бюджет більшості геймерів. На початковому етапі також, ймовірно, проміньовані елементи з'являться як специфічні функції, змішані в ігри, як догляд для тих, хто їх бачить, а не для створення цілих ігор, оскільки переважна більшість геймерів не зможуть запустіть RTX досить довго.