Найти тему
ТехноЗуй

Как работает трассировка лучей // ray tracing// trx

Оглавление

Итак, для начала нужно понять что такое ray tracing. Трассиро́вка луче́й (англ. Ray tracing; рейтре́йсинг) — один из методов геометрической оптики — исследование оптических систем путём отслеживания взаимодействия отдельных лучей с поверхностями. В узком смысле — технология построения изображения трёхмерных моделей в компьютерных программах, при которых отслеживается обратная траектория распространения луча (от экрана к источнику).

А если для чайников

Это когда не солнышко излучает лучи света, из тебя исходят лучи, которые отражаются от стен и отправляется в солнце.

Надо сразу сказать, что ray tracing это не про красивые тени и отражения в лужицах.

Впервые трасеровку лучей затронул один из сотрудник IBM Артур Апель в 1968 году. Он описал метод обратной трассеровки лучей, когда свет исходит от камеры и отражается на объектах. Первой реализацией этого алгоритма был ray casting. Из камеры отправлялись тучи, затем при столкновении луча с геометрией мы получали данные о расстоянии, форме и цвете объекта. Данная технология применялась в первых псевдо 3д играх наподобие вольфинштейн 3д и первых частей дума. То есть можно сказать что в думе 2 была троссировка лучей.

-2

Данная технология используется и сейчас для обработки звука.

В 1979 году Turner Whitted вывел троссировка лучей на новый уровень, там уже использовались уже привычные нам отражения и тени.

Как оно работает

Прежде чем рассчитать освещение нужно понять в каком пространстве находятся объекты и камера. Тут при расстеризаути создавалась карта глубины (Z буфер). Он нужен для дальнейшего создания теней и отражений.

Чтобы отрисовать тени нужно понять где находятся отрисованные объекты, для этого используются первичные лучи как в ray casting'е.

Первичные лучи измеряют расстояние до объекта, цвет, материал. Только после этого выпускаются вторичные лучи, которые делятся на три вида

  • Лучи для обработки освещения
  • Для обработки теней
  • Для обработки отражений

В играх обычно используются не все виды лучей, например только освещение, только тени или только отражения. Все три типа лучей верный в играх применили в киберпанке 2077. Единственно что мешает объединению всех типов вторичных лучей это производительность видеокарт.

Аппаратная поддержка ray tracing'а

Сразу хочу сказать что поддержка троссировки не начались с линейки rtx 2000, она началась внедряться постепенно с 90-ых годов прошлого века и ещё будет совершенствоваться. Например если у вас видеокарта gtx 1060 на 6 гигов, то вы стокойно можите включить технологию DXR - это вторичный ray tracing рендерящийся не на rt ядрах, а на cuda. Либо если у вас видеокарта красных уровня rx 470, то вы тоже можите включить у себя похожую технологию.

-3