Трассировка лучей (ray tracing) – один из самых мощных методов компьютерной графики для построения изображений. С его помощью можно получить множество эффектов, таких как преломление (refraction) и отражение (reflection), бамп-меппинг (bump-mapping), эффект размытия глубины (depth of field) и многие другие. Но построение изображения по одной точке, поиск пересечения со всеми объектами сильно замедляет работу. Существую гораздо более эффективные алгоритмы, такие как построчное сканирование (scan line), BSP-деревья, развертка с использованием z-буфера.
Рассмотрим наиболее общий алгоритм трассировки, также известный как метод фотонных карт (photon mapping).
Для получения эффектов вроде бликов лучей на поверхностях от зеркал (солнечный "зайчик") и фокусирования лучей при прохождении линзы, необходимо построения карт освещения. Для этого используется прямая трассировка. Испускаются (трассируются) лучи от источников света (чем больше тем лучше). При прохождении через полупрозрачный материал луч ослабляется и, возможно, преломляется. После пересечения с объектом мы знаем, что найденная точка освещена. В результате у каждого объекта строится карта освещения (например растр в памяти).
Следующим шагом является непосредственно построение изображения методом обратной трассировки. Выбирая очередную точку на экране, находим соответствующей вектор. Если луч в данном направлении пересекает объект, то ставим цвет точки пересечения. Для материала с отражением вызываем рекурсивно функцию определения цвета точки в направлении отраженного вектора. Аналогично для преломленного вектора в случае полупрозрачного материала.