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

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

Поделиться

Страницы: 1 2 Следующая

SuslikМодераторwww6 окт. 20176:25#0
рассмотрим стандартную картину падения луча света на границу раздела менее и более оптических плотных сред:
reflection | Соотношение энергий преломлённого и отражённого луча, path tracing
углы падения определяются из закона снелла, с ними всё ясно. инетерсует соотношение энергий между отражённым и преломлённым лучом. я обычно считаю, что энергия отражённого луча определяется через формулу френеля по типу такой:
[cht]f(\vec r, \vec n, r_0) = r_0 + (1 - r_0) (1 - \vec n \cdot \vec v)^5[/cht], где [cht]r_0[/cht] — коэф отражения при перпендикулярном падении, определяется из коэф. преломления сред, [cht]\vec n[/cht] — нормаль границы раздела, [cht]\vec v[/cht] — направление падения луча a.

тогда, приняв, что вся оставшаяся энергия уходит в преломлённый луч c, ему останется
[cht]1-f(...)[/cht]
то есть, интенсивность луча a будет равна сумме интенсивностей b и c:
[cht]I_a = I_b+I_c = f(...)I_a + (1 - f(...))I_a[/cht]
из курса физики помнятся углы брюстера, хитрые эффекты с поляризацией при отражении от диэлектриков, но пока что сделаем вид, что до этого момента всё понятно.

теперь же перейдём к математике, использующейся в рейтрейсерах, а именно к постоянно используемому трюку с обратным ходом лучей. то есть теперь мы разворачиваем падающий луч и считаем, что он попадает в камеру, а его интенсивность складывается из двух лучей: один из отражённого луча, второй из преломлённого. но с какими коэффициентами складываются интенсивности этих лучей? я как-то интуитивно складывал с теми самыми коэффициентами [cht]f()[/cht] и [cht]1-f()[/cht], то есть
[cht]I_a = f(...)I_b + (1-f(...))I_c[/cht]
, но правильно ли это? к тому же при разворачивании хода лучей, луч c тоже частично отражается и часть его энергии уходит с лучом d, а эту энергию мы вообще никак не учитываем:
reflection 2 | Соотношение энергий преломлённого и отражённого луча, path tracing

короче, я был бы благодарен, если бы кто-нибудь мне разжевал этот момент.

Правка: 6 окт. 2017 6:29

FordPerfectПостоялецwww6 окт. 20176:45#1
Suslik
Не знаток рейтрейсеров.
>теперь же перейдём к математике, использующейся в рейтрейсерах, а именно к постоянно используемому трюку с обратным ходом лучей. то есть теперь мы разворачиваем падающий луч и считаем, что он попадает в камеру
Так он же как раз прямой, а?
По физике луч падает таки в камеру.
А не мы "светим глазом" из камеры в окружающий мир.
Луча 2: один отражённый, другой преломлённый.
Для отражённого коэффициент тот же, что и в случае камерного глаза.
Для преломлённого - порядок сред обратный, и соответственно другое значение отношения коэффициентов преломления n.

Но т. к. формулы Френеля, в компьютерной графике, они как раз тоже для света попадающего в камеру, то возможно результаты у тебя будут правильные, в вот в "светим глазом из камеры" были бы неправильные.

Особо не задумывался над постом, возможно допустил какие-то дурацкие ошибки.

Доброе утро (или что там в твоём часовом поясе).

FordPerfectПостоялецwww6 окт. 20177:07#2
Для reality check:
Бывает полное внутреннее отражение: ни фотона от дна не попадает в глаз.
Внешнее отражение - всегда неполное, за исключением скользящего.

Правка: 6 окт. 2017 7:12

FordPerfectПостоялецwww6 окт. 20177:20#3
Ну т. е.
[cht]I_a=f_{ba} I_b + f_{ca} I_c[/cht]
сумма f не равна 1, в общем случае. Может быть меньше, может быть больше (например если смотрим из более оптически плотной среды).

Правка: 6 окт. 2017 7:20

SuslikМодераторwww6 окт. 20177:52#4
FordPerfect
> Бывает полное внутреннее отражение: ни фотона от дна не попадает в глаз.
этот эффект всплывает в другом месте, при расчёте направления преломлённого луча: при переходе из более плотной среды в менее плотную под углом меньше угла полного отражения, там получается просто арксинус величины больше 1, то есть действительного угла нет.

FordPerfect
> По физике луч падает таки в камеру.
> А не мы "светим глазом" из камеры в окружающий мир.
я к тому, что в первом случае, в котором, казалось бы, всё понятно, я пускаю лучи из камеры. но чтобы получить изображение, луч надо пустить в обратную сторону(в камеру) и тут начинаются вопросы. какой порядок называть прямым, а какой — обратным, меня не волнует совершенно, потому что это просто вопрос терминологии.

Правка: 6 окт. 2017 7:53

FordPerfectПостоялецwww6 окт. 20177:55#5
>ни фотона от дна не попадает в глаз
Это я хрень сказал.
Наоборот. Рыба не видит (под некоторым углом), того что в воздухе.

>при переходе из более плотной среды в менее плотную под углом меньше угла полного отражения
больше

FordPerfectПостоялецwww6 окт. 20178:30#6
И опять гоню.
Коэффициенты в обе стороны одинаковые: [cht]C_{ca}=C_{ac}=1-C_{ab}[/cht]
MrShoorУчастникwww6 окт. 201710:29#7
Suslik
> короче, я был бы благодарен, если бы кто-нибудь мне разжевал этот момент.
Насколько я понимаю разворачивать лучи нужно только для того, чтобы однозначно определять направления, а все эти коэффициенты френеля считать от нормальных лучей. Например луч b ты пускаешь из камеры, и определяешь луч a. А потом уже по лучу а ты и считаешь все эти коэффициенты френеля, находишь луч с и т.п. Ну и луча d у тебя попросту нет в этом случае.
FordPerfectПостоялецwww6 окт. 201714:51#8
Сорри за тормоза, попробую сделать нормально.

1. Смотрим формулы Френеля:
Изображение
Изображение
Где Изображение.
Видим что они не меняются при замене Изображение
Это коэффициенты отражения. Для преломлённого света T=1-R.
Это формулировка из Ландсберга, кстати. Компактнее, чем более распространённые формулы.

2. Соответственно, для света попадающего в камеру Изображение.
И
>я как-то интуитивно складывал с теми самыми коэффициентами
коэффициенты действительно те же самые.

3. Логично, что
>к тому же при разворачивании хода лучей, луч c тоже частично отражается и часть его энергии уходит с лучом d, а эту энергию мы вообще никак не учитываем
Более того, у тебя ещё часть луча b преломляется, и тоже идёт на d.
Ведь для луча из камеры:
Изображение
Для луча в камеру:
Изображение

SuslikМодераторwww6 окт. 201716:56#9
FordPerfect
> Более того, у тебя ещё часть луча b преломляется, и тоже идёт на d.
гмм, интересное наблюдение.

FordPerfect
> Видим что они не меняются при замене
да, действительно формулы соотношения энергий преломлённого и отражённого луча получаются инвариантными относительно направления, интересная симметрия выходит. думаю, вопрос из нульпоста можно считать закрытым.

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

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

более житейский пример, когда будет существенное расхождение рейтрейса с реальностью — это отражение солнца в воде(горизонтальная поверхность), переотражённое в вертикальной поверхности вроде окна или автомобильной краски.

FordPerfectПостоялецwww6 окт. 201717:13#10
Suslik
Да, поляризацию учитывают редко, а уж всякий кавай вроде двойного лучепреломления - и того реже. Хотя если погуглить - статьи найдутся, практически уверен.

Причём я бы не сказал что они прямо особо близки:
Изображение

SuslikМодераторwww6 окт. 201717:16#11
FordPerfect
двулучепреломление — это относительно редкое для стандартных материалов явление. оно наблюдается в достаточно специфичных кристаллах. а вот поляризационные эффекты вполне можно наблюдать именно на самых обыкновенных диэлектриках, любых, если их правильным образом расположить. мне это всегда интересным казалось.
FordPerfectПостоялецwww6 окт. 201717:33#12
Suslik
>поляризационные эффекты вполне можно наблюдать именно на самых обыкновенных диэлектриках
Но эти примеры - про кратное отражение. Можешь придумать с одинарным?
Если у нас "Солнце-вода-глаз": стандартная аппроксимация даёт приличную точность. Исходный свет неполяризован, а поляризацию приходящего глаз почти не различает.
Этим видимо и объясняется популярность этих формул в компьютерной графике. Для рейтрейсеров - это менее оправдано.
}:+()___ [Smile]Постоялецwww6 окт. 201720:29#13
Suslik
> интересная симметрия выходит.
Это, вообще-то, закон. Геометрическая оптика (а также волновая, вплоть до КЭД) симметрична к обращению времени.

> предлагаю задуматься о том, как на них всегда кладут болт в коммерческих рендерах.
А еще забивают на честную длину волны и моделируют 3-вектором.
Причем честное моделирование поляризации, по идее, не должно дать существенную просадку производительности, да и новые ассеты не нужны, в отличие от честной хроматичности.

FordPerfectПостоялецwww6 окт. 201721:27#14
}:+()___ [Smile]
Оно не совсем настолько очевидно.
Вчистую обращением времени данная ситуация не является, например.
a -> b,c.
против
b,c -> a,d.
При обращении времени у нас d сокращалась бы из-за правильных фаз.

Требует некоторого дополнительного обоснования.

Страницы: 1 2 Следующая

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

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