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

История экспериментов в ClickHouse
Разработчики ClickHouse уже не в первый раз используют возможности своей системы для нетривиальных задач. Ранее на языке SQL уже были реализованы синтезатор музыки, эмулятор архитектуры RISC-V и даже полноценная Doom-подобная игра.






