Що таке трасування променів?

З моменту оголошення Nvidia у 2018 році про свою відеокарту 20-й серії RTX, її вбивча функція «трасування променів» стала популярним терміном у колах відеоігор. Але може бути важко зрозуміти, що таке трасування променів, як воно працює і чому виглядає краще, ніж попередні методи.

Що таке трасування променів і як воно працює?

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

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

Трасування променів — це графічна техніка, яка дотримується тих же принципів. Проектуються промені світла, обчислюються властивості відбитого та заломленого світла, наприклад колір, і промінь продовжує подорожувати.

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

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

Чому трасування променів виглядає набагато краще?

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

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

Трасування променів дає змогу створювати точні відображення та тіні як частину процесу візуалізації. у традиційних методах візуалізації обидва ці ефекти є абсолютно необов’язковими і можуть спричинити значне зниження продуктивності.

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