Домой Статьи и аналитика Технологии Система трассировки лучей, реализованная на языке SQL

Система трассировки лучей, реализованная на языке SQL

Алексей Миловидов создал полноценный графический движок внутри базы данных, используя лишь один запрос и функции SQL.

Необычный эксперимент: трассировка лучей на языке 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. Этот цикл выполняется независимо для каждой строки, что позволяет эффективно распараллеливать процесс рендеринга. Геометрическая база проекта включает цилиндры, сферы, торы и ориентированные параллелепипеды. Система поддерживает операции объединения и разности (вычитания пересечений), а ландшафт сцены генерируется математическим способом.

Система трассировки лучей, реализованная на языке SQL
Система трассировки лучей, реализованная на языке SQL — иллюстрация к материалу. Источник: opennet.ru

История экспериментов в ClickHouse

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

Источник: http://www.opennet.ru