[Перевод] Трассировка лучей на GPU в Unity — Часть 3
|
|
Четверг, 02 Мая 2019 г. 14:20
+ в цитатник
[
Первая и
вторая части.]
Сегодня мы совершим большой скачок. Мы отойдём от исключительно сферических конструкций и бесконечной плоскости, которые трассировали ранее, и добавим треугольники — всю суть современной компьютерной графики, элемент, из которого состоят все виртуальные миры. Если вы хотите продолжить с того, чем мы закончили в прошлый раз, то воспользуйтесь
кодом из части 2. Готовый код того, что мы будем делать сегодня, выложен
здесь. Давайте приступим!
Треугольники
Треугольник — это всего лишь список трёх соединённых
вершин, каждая из которых хранит свою позицию, а иногда и нормаль. Порядок обхода вершин с вашей точки обзора определяет, на что мы смотрим — на переднюю или заднюю грань треугольника. Традиционно «передом» считается порядок обхода против часовой стрелки.
Во-первых, нам нужно иметь возможность определять, пересекает ли луч треугольник, и если да, то в какой точке. Очень популярный (но совершенно точно
не единственный) алгоритм для определения пересечений луча с треугольником был предложен в 1997 году джентльменами
Томасом Акенин-Меллером и Беном Трембором. Подробно о нём можно прочитать в их статье «Fast, Minimum Storage Ray-Triangle Intersection»
здесь.
Читать дальше -> https://habr.com/ru/post/450308/?utm_source=habrahabr&utm_medium=rss&utm_campaign=450308
Метки:
Unity
Алгоритмы
Работа с 3D-графикой
Разработка игр
рендеринг
трассировка лучей
ray tracing
gpu programming
шейдеры
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-