Программирование игр, создание игрового движка, 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.

werasaimonПостоялецwww29 дек. 201722:11#19
}:+()___ [Smile]
>Не не, для честного моделирования поляризации >будет достаточно матрицы плотности 2×2,
Нет для честного моделирования поляризации надо матрицу 4x4, потому что эта матрица должна учитивать матрицы Дирака , и должна  быть геоморфна  биспинорам (4-волновым  функциям пси ) ,
Иначе это уже , не совсем честная полиризация , видь честная полиризации, это поляризация частиц!
Эрмитова матрица 2×2 тоже может описать полиризацию , но только для фотона или для частиц со спином 1 , но для частиц со спином 1/2 например электрона, нужна уже матрица 4×4 !

Правка: 29 дек. 2017 22:55

FROLПостоялецwww30 дек. 201711:50#20
}:+()___ [Smile]
> потоки энергии туда и обратно обязаны быть равны.

Поток -- это величина интегральная, а BRDF - подинтегральная. Так что из того что потоки равны вовсе не следует что BRDF равны. Как раз наоборот.
Я так понимаю что поскольку потоки должны быть равны, а телесный угол через который проходит свет в обратном направлении (из воды в воздух) уменьшается (из-за полного внутреннего переотражения), то и получается что BRDF обратный больше чем BRDF прямой. Поскольку чтобы через меньший угол прошёл такой же поток -- придётся увеличить плотность потока и никак иначе.

Правка: 30 дек. 2017 11:52

daveПостоялецwww31 дек. 201713:57#21
Suslik

В теме перемешаны амплитуды и энергии. Энергия будет пропорциональна квадрату амплитуды волны для электромагнитной волны.

> но правильно ли это? к тому же при разворачивании хода лучей, луч c тоже
> частично отражается и часть его энергии уходит с лучом d

Тут надо учитывать навеpное интерферецию этой волны с падающий волной с другой стороны при обратном ходе, тем самым отражения не будет, так наверное можно понять инверсию во времени.

Правка: 31 дек. 2017 14:02

werasaimonПостоялецwww9 янв. 201819:58#22
Suslik
> более житейский пример, когда будет существенное расхождение рейтрейса с
> реальностью — это отражение солнца в воде(горизонтальная поверхность),
> переотражённое в вертикальной поверхности вроде окна или автомобильной краски.
Не весгда! Например если линейная полиризация света (s)  будет придепикулярна к направлению лучам солнца, то расхождение рейтрейса с
реальностью будет очень мало !
P.S: Болшинство соврименых ретрейсов роботают  на  pBRDF , то бишь учитивать любую полирезацию!

Правка: 9 янв. 2018 20:30

werasaimonПостоялецwww16 янв. 20182:19#23
Страницы: 1 2

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

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