c-ray — это компактный и понятный CPU-рендерер, реализующий алгоритм трассировки лучей (ray tracing) на языке программирования C99. Он был разработан для обучения и экспериментов, с акцентом на простоту кода и минимальные зависимости. Изначально c-ray был создан как одностраничный фильтр, принимающий описание сцены через стандартный ввод и выводящий изображение в формате PPM. Со временем проект эволюционировал, добавив поддержку более сложных сцен и расширенную функциональность.
Проект активно используется в образовательных целях, служа эталонным бенчмарком для оценки производительности CPU-рендереров. Он также находит применение в качестве основы для создания рендереров в других языках программирования. Несмотря на свою компактность, c-ray поддерживает такие функции, как глобальное освещение, отражения и простое управление камерой, что делает его полезным инструментом для изучения основ рендеринга и трассировки лучей.
- Реализация на языке C99 с минимальными зависимостями
- Поддержка глобального освещения с использованием простого Монте-Карло интегратора
- Реализация камеры с глубиной резкости и тонкой линзой
- Поддержка многопоточности для ускорения рендеринга
- Встроенная система материалов с более чем 30 типами узлов, включая приближенную модель Principled BSDF
- Поддержка рендеринга по сети с использованием TCP/IP
- Наличие Python-обёртки и API на C для интеграции с другими приложениями
- Поддержка плагина для Blender, позволяющего использовать c-ray в качестве рендерера
- Простая система описания сцены с использованием текстовых файлов
- Поддержка формата PPM для вывода изображений
- Возможность использования c-ray в качестве бенчмарка для оценки производительности CPU-рендереров