Skip to main content

Трассировщик лучей. Qt, исходные коды.

Простой трассировщик лучей на C++ (Qt).

Пример визуализации
Пример визуализации

 

  • Текстурирование
  • Тени
    • Жесткие
  • Преломления ( Объекты с коэфициентом преломления 1.0 не участвуют в блокировке светового луча)
  • Отражения
  • Реализация микрорельефа
    • Bump mapping с помощью карт нормалей
  • GUI
    • управление камерой производится кнопками WASD, QE(zoom), R(reset zoom), Space — переключить режим Preview\Render.
    • Часть функционала продублирована на форме управления сценой.
    • разрешение меняется ресайзом окна (стандартное 1024*768)
    • U для сохранения картинки в файл output.png
    • GUI для настройек материалов, света, текстур и объектов
    • сохранение не работает (сериализацию еще не сделал). загрузка тоже
  • Виды объектов:
    • Плоскость
    • Шар (произвольный эллипсоид)
    • Цилиндр с эллиптическим основанием
    • Конус с эллиптическим основанием
    • Плоский диск
    • Плоский прямоугольник
  • Многопоточногсть на CPU (OpenMP)
  • Виды текстур
    • Solid Color
    • Image
    • Mask Mix (смешиваются две произвольные текстуры по маске, можно врубить рекурсию у убить все живое)
    • NormalMap (генерирует карту нормалей для картинки и кэширует на диск)

P.S. Так как я не нашел алгоритма построения карты нормалей лучше, чем по краям, то карты нормалей используемые в сцене сгенерированы сторонней программой.

    Скачать можно используя SVN:

    svn export svn://scaytrase.ru/raytrace/tags/release/

    или
    Zip архивом(50кб)
    (Текстуры(2.3 Мб))

    Исходники кроссплатформенные (протестировано на Ubuntu 10.10). Только дефолтная сцена сцена может отличатся(баги разного рандома в системах).

    Набор бинарников (Windows x86_64)