Я бы не советовал пробовать реальную трассировку лучей в OpenGL, потому что для этого нужно много хаков и хитростей, и, если вы спросите меня, больше нет смысла делать это вообще.
Если вы хотите выполнять трассировку лучей в графическом процессоре, вам следует использовать любой язык GPGPU, например CUDA или OpenCL, потому что он делает вещи намного проще (но все же далеко не тривиальными).
Чтобы проиллюстрировать проблему немного дальше:
Для трассировки лучей необходимо проследить вторичные лучи и проверить их на пересечение с геометрией. Следовательно, вам необходим доступ к геометрии каким-то хитрым способом внутри вашего шейдера, однако внутри фрагментного шейдера вы не сможете получить доступ к геометрии, если не сохраните ее «закодировано» в какой-либо текстуре. Вершинный шейдер также не предоставляет вам эту информацию о геометрии изначально, а геометрические шейдеры знают только соседей, поэтому проблема уже начинается.
Далее, вам нужны ускоряющие структуры данных, чтобы получить любую разумную частоту кадров. Однако, например, прохождение Kd-Tree внутри шейдера довольно сложен, и, если я правильно помню, есть несколько статей, посвященных исключительно этой проблеме.
Если вы действительно хотите пойти по этому пути, тем не менее, есть много статей на эту тему, их не должно быть слишком сложно найти.
Трассировщик лучей требует чрезвычайно хорошо спроектированных схем доступа и кэширования для достижения хорошей производительности. Тем не менее, у вас мало контроля над этим внутри GLSL, и оптимизация производительности может быть очень сложной.
Еще один момент, на который следует обратить внимание: по крайней мере, насколько мне известно, трассировка лучей в реальном времени на графических процессорах в основном ограничена статическими сценами, например kd-деревья работают (хорошо) только для статических сцен. Если вы хотите иметь динамические сцены, вам нужны другие структуры данных (например, BVHs, iirc?), Но вам необходимо постоянно поддерживать их. Если я ничего не пропустил, то сейчас еще много исследований по этому вопросу.