Представлен открытый проект RayTracer — система трассировки лучей, реализованная на языке SQL

от автора

Сооснователь СУБД ClickHouse Алексей Миловидов с помощью ИИ-ассистента Claude представил систему трассировки лучей RayTracer, реализованную целиком на языке SQL. Рендеринг с симуляцией освещения на базе трассировки путей в решении реализован в виде одного SQL-запроса без пользовательских функций (UDF) и без подключения внешнего кода.

Для вывода графики в RayTracer используются возможности СУБД ClickHouse, например, сохранять результат запросов в формате PNG. Полноценно проект работоспособен при запуске в СУБД ClickHouse, но с отдельными ошибками и в 33 раза медленнее может работать в СУБД CedarDB. Исходный код проекта написан на Python и PLpgSQL и опубликован под лицензией Creative Commons BY-NC-SA.

По информации OpenNET, каждый пиксель в проекте представляет собой строку в таблице, в которой имеются столбцы с координатами (X, Y) и представлением цвета (R, G, B). Необходимые для 3D‑вычислений математические операции построены на кортежах — вектор кодируется как Tuple(Float64, Float64, Float64).

Цикл для моделирования многократных отражений света от поверхностей в RayTracer реализован через SQL-функцию arrayFold и выполняется внутри каждой строки для распараллеливания рендеринга. Из геометрических примитивов поддерживаются цилиндры, торы, сферы и ориентированные параллелепипеды, над которыми выполняются операции объединения и разности (удаления пересечений). Ландшафт в проекте генерируется математически.

ссылка на оригинал статьи https://habr.com/ru/articles/1054596/