Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Соотношение энергий преломлённого и отражённого луча, path tracing (2 стр)

Соотношение энергий преломлённого и отражённого луча, path tracing (2 стр)

Поделиться

Страницы: 1 2

}:+()___ [Smile]Постоялецwww6 окт. 201721:59#15
FordPerfect
> При обращении времени у нас d сокращалась бы из-за правильных фаз.
Хм... действительно, про геометрическую оптику я нагнал.
Но тогда получается, что обращение направления лучей в трассировщиках тоже не является верным.
С другой стороны, BRDF постулируется симметричной, так что все должно быть нормально.
В общем, интересная проблема.
SuslikМодераторwww7 окт. 20171:32#16
}:+()___ [Smile]
> > При обращении времени у нас d сокращалась бы из-за правильных фаз.
> Хм... действительно, про геометрическую оптику я нагнал.
> Но тогда получается, что обращение направления лучей в трассировщиках тоже не
> является верным.
вот поэтому тред и создал, что, казалось бы, всё просто, а если копнуть, то нет.

}:+()___ [Smile]
> Причем честное моделирование поляризации, по идее, не должно дать существенную
> просадку производительности, да и новые ассеты не нужны, в отличие от честной
> хроматичности.
не скажи. просадка производительности будет примерно такая же, как при переходе от rgb к выпусканию одной длины волны на один луч для моделирования всяких дисперсий. то есть один луч со случайной поляризацией нужно будет представлять как пачку лучей с линейными поляризациями. а если ещё и фазу учитывать для моделирования эффектов круговых поляризаций, то вообще атас, долго сходиться будет. хотя эффекты, где поляризация роли не играет, будут сходиться с той же скоростью, вроде.

FROLПостоялецwww7 окт. 201714:33#17
Suslik
> ому же при разворачивании хода лучей, луч c тоже частично отражается и часть
> его энергии уходит с лучом d, а эту энергию мы вообще никак не учитываем

Это известная проблема - ассиметрия при расчёте преломлений.
Чтобы это пофиксить, вводят сопряжённый BTDF, который равен обычному, но умножить на отношение квадратов показателей преломлений.
На сколько это физично сказть не могу....

Вот например в SmallVCM:

            // only camera paths are multiplied by this factor, and etas
            // are swapped because radiance flows in the opposite direction
            if(!FixIsLight)
                return Vec3f(refractCoeff * Sqr(etaIncOverEtaTrans) / std::abs(cosT));
            else
                return Vec3f(refractCoeff / std::abs(cosT));

}:+()___ [Smile]Постоялецwww7 окт. 201717:20#18
Suslik
> вот поэтому тред и создал, что, казалось бы, всё просто, а если копнуть, то нет.
Короче, я, кажется, понял. Симметрия BRDF — это, действительно, следствие закона, только не обращения во времени, а второго начала термодинамики.
Если разместить под нужными углами к поверхности два образца одинаковой температуры, то потоки энергии туда и обратно обязаны быть равны.

> то есть один луч со случайной поляризацией нужно будет представлять как пачку лучей с линейными поляризациями.
Не не, для честного моделирования поляризации будет достаточно матрицы плотности 2×2, т. е. всего 3 независимые компоненты.
Сложность на уровне RGB vs. Grayscale.

Страницы: 1 2

/ Форум / Программирование игр / Физика

2001—2017 © GameDev.ru — Разработка игр