2016-06-12 4 views
2

В настоящее время я пишу фрагментарный шейдер, который (помимо прочего) имитирует эффект преломления на стеклянную сферу.Преломление после выхода из прозрачного (стеклянного) объекта

Итак, когда луч входит в сферу, луч меняет направление. Все идет нормально. Теперь, когда преломленный луч оставляет предмет стекла, он снова меняет направление? Я уверен, что так оно и есть, но я провожу по Интернету, и я нашел разные мнения (например, в нижней части сайта this четко указано, что изменений в направлении нет).

Заранее спасибо.

+0

Возможно, стоит попросить об этом на [Physics SE] (http://physics.stackexchange.com/). Не совсем уверен, что ваш вопрос здесь по теме, поскольку он больше связан с физикой луча, чем с любым фактическим кодом. – computerfreaker

ответ

1

Да, это меняет ... угол от преломления воздуха к стеклу одинаковый, от стекла до воздуха.

Вы можете реализовать его очень легко. Сначала вы должны сделать свою сцену в виде куба, который находится внутри сферы. второй рендеринг использует нормальный вектор и положение камеры для вектора точки, с ними вы можете использовать функцию refract() для вычисления вектора преломления. Вам нужно рассчитать, где луч выходит из сферы, и вы также можете снова использовать функцию refract funtion. вам нужно снова вычислить нормальный вектор выходного места. 3-й шаг - использовать функцию texture() в куб-карте и поместить выходной вектор в координату внутри функции.

+0

So. Когда я впервые преломляю луч (от воздуха к стеклу), коэффициент коэффициента преломления (третий параметр в функции преломления glsl) равен ** 1,0/1,5 **, и когда луч покидает объект (от стекла к воздуху), это * * 1,5/1,0 **? – Wanderer

+0

там вы должны вычислить нормальный вектор выходной точки, и вы также можете использовать рефлектор funtion. но это не то же значение, то внутреннее преломление. он рассчитывается точно так же. – Thomas