В папке example_images находятся примеры изображений сцен в формате {название сцены}_{ширина}_{высота}_{количество пикселей для усреднения}.png
Также примеры изображений можно посмотреть в галерее
- --width - ширина (по умолчанию 555)
- --number_of_samples - количество пикселей для усреднения (по умолчанию 10)
- --output_file_name - имя выходного файла (по умолчанию output.png)
- --show_after_complete - показать изображение после рендеринга программой ImageMagick (по умолчанию 1)
- --number_of_workers - количество потоков для рендеринга (по умолчанию количество ядер процессора)
- --scene - сцена, которую рендерить (по умолчанию cornell_box)
Сущности трассировщика:
- Луч
- Интерфейс Hittable - то, во что может попасть лучь (сфера, прямоугольник, треугольник, октаэдр)
- Интерфейс Material - определяет поведение луча при попадании в объект
- Интерфейс Texture - определяет текстуру объекта
- Интерфейс PDF (Функция распределения вероятностей) для имплементации метода Монте-Карло
Тестировалось на 4 ядерном Intel Core I7-4770 в 4 потока
Cornell Box 555x555x10: 10.81 секунд
Cornell Box 555x555x25: 22.93 секунд
Cornell Box 555x555x100: 80.37 секунд
Cornell Box 555x555x1000: 768.13 секунд
Cornell Box with octahedrons 600x600x10: 14.54 секунд
Cornell Box with octahedrons 600x600x25: 30.56 секунд
Cornell Box with octahedrons 600x600x100: 111.88 секунд
Cornell Box with octahedrons 600x600x1000: 1059.41 секунд
Simple Random Scene 1920x1080x10: 717.84 секунд
Simple Random Scene 1920x1080x25: 1299.10 секунд
Simple Random Scene 1920x1080x100: 5348.86 секунд
Simple Scene (with octahedrons) 1920x1080x10: 1203.50 секунд
Simple Scene (with octahedrons) 1920x1080x25: 3170.42 секунд
Simple Scene (with octahedrons) 1920x1080x100: 10524.04 секунд
Simple Scene (spheres) 1920x1080x10: 300.26 секунд
Simple Scene (spheres) 1920x1080x25: 699.64 секунд
Simple Scene (spheres) 1920x1080x100: 2705.62 секунд
Simple Scene (spheres) 1920x1080x100: 22138.72 секунд
На основании результатов 2 последних сцен можно сделать вывод, что алгоритмом трассировки лучей сложнее рисовать фигуры, для которых сложнее считать попал ли луч в фигуру (для октаэдра используется алгоритм Моллера — Трумбора).
Разница в скорости сцены с октаэдрами и с сферами примерно в 4 раза.
Peter Shirley - Ray Tracing in One Weekend