Skip to content

velvet-shell/path-tracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание лаборатории компьютерной графики ВМК. Трассировка путей.

В основе лежит алгоритм наивной трассировки путей с терминацией с помощью русской рулетки.

Первая сцена:

Alt text

Вторая сцена:

Alt text

Реализованные материалы:

  • Ламбертовская диффузная поверхность (выборка по значимости из косинуса)
  • Зеркало (вырожденная BRDF)
  • Стекло (русская рулетка и преломление на основе формул Френеля)
  • Исправленная модель Фонга (выборка по значимости из косинуса в степени, BRDF нормализована согласно оригинальной статье 1994, совмещена с диффузной моделью с помощью русской рулетки)
  • Модель отражающих микрограней Кука-Торренса (выборка по значимости из GGX)

Дополнительно:

  • Трассировка путей
  • Примитивы: сфера, треугольник, плоскость
  • Поддержка текстур (на сфере и замощение плоскости)
  • Сферическая карта окружения
  • SSAO анти-алиасинг из 4-х субпикселей с генерацией случайных отклонений на основе тент-фильтра
  • Гамма-коррекция
  • В качестве источников света выступают объекты с площадью
  • Многопоточность с помощью директив pragma

Изученные материалы:

Вдохновлено минималистичным трассировщиком https://www.kevinbeason.com/smallpt/

Производительность:

Сцены протестированы на Ryzen 7 2700 и укладываются в минуту на 12 потоках.

(В первой сцене используется достаточно тяжелое изображение для карты окружения, подгрузка которого ощутимо отнимает время)

About

Monte-Carlo path tracing image rendering

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published