Сооснователь системы управления базами данных ClickHouse Алексей Миловидов совместно с искусственным интеллектом Claude представил открытый проект RayTracer. Это система 3D-трассировки лучей, реализованная в виде 1 поискового SQL-запроса без использования стороннего кода или внешних библиотек.
Проект RayTracer использует специфические возможности системы ClickHouse, позволяющие сохранять результаты выполнения запросов напрямую в графическом формате PNG. Вся сцена просчитывается в рамках 1 запроса типа SELECT. Система способна генерировать изображения со сложным освещением, тенями, процедурным ландшафтом и зеркальными отражениями.
С технической точки зрения каждый пиксель финального кадра обрабатывается как отдельная строка в базе данных. Таблица содержит координаты по осям X и Y, а также цветовые каналы красного, зеленого и синего. Для проведения математических расчетов в 3D-пространстве авторы применили кортежи, в которых векторы кодируются специальным типом данных. Расчет многократных отражений света от объектов реализован с помощью встроенной функции arrayFold, что позволяет распределять вычислительную нагрузку на все ядра центрального процессора параллельно.
Геометрические объекты в сцене строятся из базовых примитивов, среди которых представлены сферы, цилиндры, торы и ориентированные параллелепипеды. Разработчики реализовали поддержку конструктивной сплошной геометрии, что позволяет объединять фигуры или вычитать их друг из друга для создания сложных объектов вроде полых букв или планет. Ландшафт генерируется процедурно при помощи алгоритма шума Перлина на основе фрактального броуновского движения.
Полноценная производительность проекта достигается при запуске в оригинальной СУБД ClickHouse. Разработчики также