- 22, Oct 2024
- #1
Начните с заранее рассчитанного «облака лучей» — отправной точки и направления большого количества лучей, большая часть которых не будет способствовать изображению. Затем задаются положение и ориентация плоскости изображения, и задача состоит в том, чтобы найти в облаке лучей лучи, которые пересекают плоскость изображения без перекрытия другими объектами, и вывести полученные значения пикселей. Никаких отражений лучей не потребуется, поскольку вся работа по созданию облака лучей уже проделана. Остался единственный шаг — преобразовать лучи в изображение. Это означает, что однолучевое облако можно использовать для создания изображений под произвольными углами обзора.
Как я могу ускорить этот процесс с помощью графического процессора? Решение для каждого луча о том, пересекает ли он плоскость изображения, можно распараллелить, поскольку эти решения независимы, но каждое требует доступа к объектам на сцене, поскольку некоторые лучи достигают одних потенциальных плоскостей изображения, но не других. Последний этап выборки соответствующих лучей по пикселям изображения требует, чтобы каждый луч вносил свой вклад в количество окружающих пикселей. Это также можно распараллелить с использованием графического процессора?
Чтобы уточнить, РичиСэмс' понимание верно:
- Начните с набора лучей, направленных в произвольных направлениях.
- Найдите, какой из этих лучей пересекается с плоскостью изображения с учетом окклюзии.
- Рассчитайте цвет каждого пикселя на основе лучей, попадающих на плоскость изображения.
В идеале мне хотелось бы иметь возможность достаточно ускорить этот процесс, чтобы перемещаться по сцене в реальном времени, учитывая заранее рассчитанное облако лучей по всей сцене.
#трассировка лучей #gpu