Skip to main content

Формула вычисления преломляющего луча

2.2 Computing Caustics

Snell’s Law is not easy to code with this formulation, because it only imposes one restriction, making the computation of the refracted ray nontrivial. Assuming that the incident, transmitted, and surface normal rays are co-planar, a variety of coder-friendly formulas can be used, such as the one in Foley et al. 1996:

 \vec T = \vec N \left ( \frac{\eta_1}{\eta_2}\left( \vec E \cdot \vec N\right) \pm \sqrt {1+\left(\frac{\eta_1}{\eta_2}\right)^2\left(\left( \vec E \cdot \vec N \right )^2 -1 \right)}\right) + \frac{\eta_1}{\eta_2} \vec E

Here T is the transmitted ray, N is the surface normal, E is the incident ray, and \eta_1, \eta_2 are the indices of refraction.

Источник: GPU Gems — Chapter 2. Rendering Water Caustics.

Основы алгоритма трассировки лучей. Третья часть.

AA

При рендеринге методом трассировки лучей возникает проблема так называемых «лесенок» на границах объектов и текстур. Источник проблемы заключается в том, что мы пытаемся аналитическую функцию дискретизировать с некоторым постоянным шагом отчетов. Это ведет к неизбежной потере данных и, как следствие, к потере качества изображения. Процесс устранения таких лесенок называется Anti-Aliasing.

No AA
No AA

With AA
With AA

Читать дальше “Основы алгоритма трассировки лучей. Третья часть.” »

Основы алгоритма трассировки лучей. Вторая часть.

Продолжение первой части статьи про трассировку лучей.

Текстурирование

Что-то наскучило все одноцветное. Давайте сделаем мир прекрасней! Покроем наши объекты текстурами.

Пример использования текстур
Использование текстур

Читать дальше “Основы алгоритма трассировки лучей. Вторая часть.” »

Основы алгоритма трассировки лучей. Первая часть.

Практическая реализация алгоритма трассировки лучей

В этой статье я расскажу как в несколько нехитрых шагов достичь вот такого результата

желаемый результат
Ням-ням

Читать дальше “Основы алгоритма трассировки лучей. Первая часть.” »