Можно ли использовать GPU для трассировки лучей без CUDA / OpenCL и т. Д.? - PullRequest
0 голосов
/ 03 марта 2011

Я работаю на Windows Phone 7, которая не поддерживает такие функции, как CUDA или OpenCL.Я новичок в области GPU. Есть ли что-нибудь на GPU, что я могу использовать для ускорения трассировки лучей?Как тесты пересечения треугольника?Или выбрать правильный цвет из текстуры?

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

CUDA и тому подобное на самом деле являются просто языками высокого уровня для программирования шейдеров, поэтому любая платформа, которая поддерживает программируемые шейдеры, дает вам возможность выполнять вычисления общего назначения на графическом процессоре.

К сожалению, похоже, что Windows Phone 7 не поддерживает настраиваемые программируемые шейдеры , поэтому ускорение графического процессора для трассировщика лучей в настоящее время не представляется возможным. Даже если бы это было так, очень сложно эффективно использовать GPU для трассировки лучей из-за нескольких очень анти-GPU характеристик:

  1. Плохая когерентность памяти (каждый луч может легко взаимодействовать с совершенно другой геометрией)
  2. Высокий коэффициент ветвления (шейдеры лучше всего работают с кодом, который последовательно следует по одному пути)
  3. Большой рабочий набор (в любой момент времени в памяти должно быть доступно много геометрии, чтобы вычислить результат даже одного луча)

Если ваша цель - написать raytracer, вероятно, было бы гораздо проще полностью выполнить работу с ЦП, и только тогда следует рассмотреть более эзотерические оптимизации.

0 голосов
/ 03 марта 2011

Raytracing все еще немного медленный, даже на современном среднем настольном ПК.Вы можете ускорить его, стреляя только первичными лучами, но тогда методы растеризации будут на самом деле лучше и быстрее.

Вы уверены, что хотите выполнять трассировку лучей на телефоне, который имеет даже меньшую вычислительную мощность, чемПК?Они не предназначены для такой работы.

...