суббота, 24 февраля 2018 г.

bidirectional path tracing. особенности

  • multiple importance sampling, хорошо для связывания вершин 2х путей посчитанного с учетом силы каждой вершины
  • eye visibility test, помогает для записи в изображение силы лампы, если она попала в камеру
  • можно делать path reuse и достаточно недорого получать больше эффектов освещения
отличный пример со всеми этими штуками - edubpt https://github.com/githole/edubpt

четверг, 22 февраля 2018 г.

grids, bounding spheres и простые центероиды

читал и думал сегодня о разных grids, bounding spheres и их иерархии. каждый хвалит мол очень быстро и удобно.
но много где просто больше памяти требуется и время построения ощущаемое.
мои grids без построения-раскладывания по массивам куда какой объект попадает, а простые массивы центероидов и индексом сортированные по значениям координат центероидов.
руки уже чешутся писать.
и будет быстро и просто.
попробую на своей версии smallvcm

пятница, 16 февраля 2018 г.

ускорение просчета сцен без построения bvh и прочих ускоряющих структур

  • этап инициализации. делается 1 раз на CPU.
    переделывается для каждого изменения сцены.
    шагов инициализации мало и они выполняются быстро-быстро
    1. для каждого bounding box находится центральная точка(ЦЕНТЕРОИД) и сохраняется
    2. для каждого ЦЕНТЕРОИДА строится массив индексов по x, y, z
    3. отсортировать 3 массива индексов по значениям x, y, z
  • этап нахождения пересечения луча с объектами на GPU.
    похоже на прохождение структуры grid, но без построения структуры.
    1. при прохождении ячейки куба найти по большей разнице среди x, y, z приоритетную ось, по которой найти объекты, ЦЕНТЕРОИДы которых в пределах ячейки куба
    2. для каждой ячейки создать второй уровень "виртуальной grid" и проходить детальнее таким же образом, как описано в предыдущем шаге
поиск по сортированному массиву происходит с помощью модификации бинарного поиска и потому происходит очень быстро. мне нужно будет только знать список ЦЕНТЕРОИДОВ и сортированные 3 массива индексов.

path regularization. кривая моя реализация

вышло не очень, по крайней мере, в связке с path tracing.
лучше новые вершины на лампах запоминать и потом просчитывать bidirectional path tracing.
очень хороший bidirectional path tracer, запоминающий только position, normal, pdf и маты - в примерах к nanort.
надо как можно скорее реализовать bidirectional path tracer

вторник, 13 февраля 2018 г.

path regularization и mvnee. читаю исходники и нахожу параллели

читаю исходники mvnee и сравниваю со своей реализацией path tracer и path regularization и нахожу параллели в том, как изменяют исходники, чтобы добиться ускорений.
в mvnee тоже есть "ох и мне бы так" и читаю pdf по path regularization и, о чудо! там отлично находятся фразы next event и пишут дословно "сделали мы его офигенно и директ считаем, но продуманно, с молификацией". мне этот блок напомнил старые-престарые исходники обычных ray tracers, когда просчитывается вклад каждого источника света - последовательно, не вразброс, как во многих path tracer/photon mapper/mlt и остальные методы, некоторые даже придумывают, как бы выбрать лампы, для которых просчитывать вес силы воздействия и которые СЛУЧАЙНО выбирать из построенной таблицы. можно будет проверить потом и этот волшебный метод выбора ламп