|
Алексей Миловидов, сооснователь СУБД ClickHouse, при содействии AI-ассистента Claude опубликовал систему трассировки лучей, реализованную целиком на языке SQL. Рендеринг с симуляцией освещения на базе трассировки путей реализован в виде одного SQL-запроса без пользовательских функций (UDF) и без подключения внешнего кода. Для вывода графики используется возможность СУБД ClickHouse, сохранять результат запросов в формате PNG. Полноценно проект работоспособен при запуске в СУБД ClickHouse, но с отдельными ошибками и в 33 раза медленнее может работать в СУБД CedarDB. Проект распространяется под лицензией Creative Commons BY-NC-SA.
Каждый пиксель представляет собой строку в таблице, в которой имеются столбцы с координатами (X, Y) и представлением цвета (R, G, B). Необходимые для 3D-вычислений математические операции построены на кортежах - вектор кодируется как Tuple(Float64, Float64, Float64).
Цикл для моделирования многократных отражений света от поверхностей реализован через SQL-функцию arrayFold и выполняется внутри каждой строки для распараллеливания рендеринга. Из геометрических примитивов поддерживаются цилиндры, торы, сферы и ориентированные параллелепипеды, над которыми выполняются операции объединения и разности (удаления пересечений). Ландшафт генерируется математически.
Ранее разработчики СУБД ClickHouse подготовили написанные на SQL Doom-подобную игру, эмулятор RISC-V и синтезатор музыки.
|