Аппаратное ускорение трассировки лучей: принципы и сравнение с растризацией.
Ray-tracing hardware
Ускорители трассировки лучей: аппаратное обеспечение для реалистичной 3D-графики. Отличие от GPU и алгоритма растеризации. Принцип работы и применение.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Тип 3D-графического ускорителя
Type of 3D graphics accelerator
Аппаратное обеспечение для трассировки лучей – это специализированное компьютерное оборудование, предназначенное для ускорения вычислений трассировки лучей.
Ray tracing hardware is special purpose computer hardware designed for accelerating ray tracing calculations.
Введение: Растеризация и трассирование лучей
Проблема рендеринга 3D-графики может быть концептуально представлена как нахождение всех пересечений между набором "примитивов" (обычно треугольников или многоугольников) и набором "лучей" (обычно один или несколько на пиксель). До 2010 года все типичные графические ускорительные платы, называемые графическими процессорами (GPU), использовали алгоритмы растеризации. Алгоритм трассировки лучей решает проблему рендеринга иным способом. На каждом шаге он находит все пересечения луча с набором релевантных примитивов сцены. Оба подхода имеют свои преимущества и недостатки. Растеризация может быть выполнена с использованием устройств, основанных на модели потоковых вычислений, по одному треугольнику за раз, и доступ к полной сцене требуется лишь однажды. Недостатком растеризации является сложность реализации нелокальных эффектов, необходимых для точного моделирования сцены, таких как отражения и тени, а также почти невозможность вычисления преломлений. Алгоритм трассировки лучей изначально хорошо подходит для масштабирования за счет параллелизации рендеринга отдельных лучей. Однако для чего-либо, кроме непосредственной трассировки лучей, требуется рекурсия алгоритма трассировки лучей (и произвольный доступ к графу сцены) для завершения их анализа, поскольку отраженные, преломленные и рассеянные лучи требуют повторного доступа к различным частям сцены непредсказуемым образом. Но он позволяет легко вычислять различные виды физически корректных эффектов, обеспечивая гораздо более реалистичное впечатление, чем растеризация. Сложность хорошо реализованного алгоритма трассировки лучей масштабируется логарифмически, что обусловлено размещением объектов (треугольников и групп треугольников) в BSP-деревья или подобные структуры и анализом только в случае пересечения луча с ограничивающим объемом бинарного пространственного разбиения.
The problem of rendering 3D graphics can be conceptually presented as finding all intersections between a set of "primitives" (typically triangles or polygons) and a set of "rays" (typically one or more per pixel). Up to 2010, all typical graphic acceleration boards, called graphics processing units (GPUs), used rasterization algorithms. The ray tracing algorithm solves the rendering problem in a different way. In each step, it finds all intersections of a ray with a set of relevant primitives of the scene. Both approaches have their own benefits and drawbacks. Rasterization can be performed using devices based on a stream computing model, one triangle at the time, and access to the complete scene is needed only once. The drawback of rasterization is that non local effects, required for an accurate simulation of a scene, such as reflections and shadows are difficult; and refractions nearly impossible to compute. The ray tracing algorithm is inherently suitable for scaling by parallelization of individual ray renders. However, anything other than ray casting requires recursion of the ray tracing algorithm (and random access to the scene graph) to complete their analysis, since reflected, refracted, and scattered rays require that various parts of the scene be re accessed in a way not easily predicted. But it can easily compute various kinds of physically correct effects, providing much more realistic impression than rasterization. The complexity of a well implemented ray tracing algorithm scales logarithmically; this is due to objects (triangles and collections of triangles) being placed into BSP trees or similar structures, and only being analyzed if a ray intersects with the bounding volume of the binary space partition.