Трасування променів і оптика — SDF ray marching, Френель і розсіювання Релея

Від простого перетину променя зі сферою до повноцінного трасувальника шляху: як трасування променів фізично симулює світло. Заломлення за законом Снелліуса, коефіцієнт відбиття Френеля, повне внутрішнє відбиття, SDF sphere tracing, атмосферне розсіювання Релея — кожне поняття з інтерактивними симуляціями у браузері.

Як працює трасування променів

Головна ідея трасування променів оманливо проста: для кожного пікселя випускається промінь із камери у сцену, знаходиться найближчий перетин, і ця точка затінюється шляхом випускання тіньових променів у напрямку джерел світла. Повторюючи процес із променями відбиття та заломлення, отримуємо фізично коректні зображення. Єдині вхідні дані з фізики — це закон відбиття (θ_r = θ_i) та закон Снелліуса (n₁ sin θ₁ = n₂ sin θ₂).

Сучасні GPU-трасувальники променів і трасувальники шляху (NVIDIA RTX, Apple Metal ray tracing) роблять саме це з швидкістю мільярдів променів за секунду. Симуляції на цій сторінці працюють повністю у браузері — частина на JavaScript, частина у фрагментних шейдерах GLSL, — тож ви можете змінювати сцену і в реальному часі спостерігати фізичну поведінку світла.

Ray Marching (SDF) Sphere tracing крізь сцену, задану полем знакової відстані (SDF). Промінь просувається вперед на значення SDF у кожній точці — ніколи не «проскакуючи» повз поверхню. М'які тіні, оточувальне затінення (ambient occlusion) і плавне змішування між об'єктами виникають природним чином. Sphere tracing · SDF-примітиви · м'які тіні · ambient occlusion 🔭 Дзеркала та лінзи (геометрична оптика) Трасуйте промені крізь угнуті та випуклі дзеркала, збиральні та розсіювальні лінзи. Спостерігайте фокусну відстань, головні площини, формування дійсного та уявного зображення. Рівняння тонкої лінзи 1/f = 1/d_o + 1/d_i перевіряється наживо. Закон Снелліуса · рівняння тонкої лінзи · матриця променевого переносу · формування зображення 🌟 Оптичне волокно та повне внутрішнє відбиття Промені поширюються у скляній серцевині волокна (n≈1.5), оточеній оболонкою (n≈1.46): повне внутрішнє відбиття утримує світло всередині, коли кут перевищує критичний кут θ_c = arcsin(n₂/n₁). Показано різницю багатомодової та одномодової дисперсії. Закон Снелліуса · критичний кут · рівняння Френеля · напрямні моди 🌈 Колір і змішування світла Адитивне змішування RGB, відображення довжини хвилі на колір, діаграма кольоровості CIE та дисперсія у призмі Ньютона. Дослідіть метамерію: два фізично різні спектри, що дають однаковий сприйнятий колір. Колірний простір CIE XYZ · метамерія · перетворення довжини хвилі у sRGB · адитивне змішування
Рівняння Френеля та закон Снелліуса

Закон Снелліуса:  n₁ sin θ₁ = n₂ sin θ₂
Критичний кут (ПВВ):  θ_c = arcsin(n₂/n₁)  (n₁ > n₂)

Коефіцієнт відбиття Френеля (s-поляризація):
  r_s = (n₁ cos θ₁ − n₂ cos θ₂) / (n₁ cos θ₁ + n₂ cos θ₂)

Коефіцієнт відбиття Френеля (p-поляризація):
  r_p = (n₂ cos θ₁ − n₁ cos θ₂) / (n₂ cos θ₁ + n₁ cos θ₂)

Відбиття R = |r|²,  пропускання T = 1 − R
Наближення Шліка: R(θ) ≈ R₀ + (1−R₀)(1−cos θ)⁵

Атмосферна оптика та розсіювання

Небо блакитне, а заходи сонця червоні через розсіювання Релея: інтенсивність розсіювання молекулами газу пропорційна λ⁻⁴, тому короткохвильові блакитні фотони розсіюються приблизно у 5.5 раза сильніше за червоні. На заході сонячне світло проходить крізь приблизно у 38 разів більший шар атмосфери, втрачаючи блакитну складову і залишаючи червоний та помаранчевий кольори. Це не спецефекти — вони прямо випливають з електромагнітного перерізу розсіювання молекул, набагато менших за довжину хвилі.

SDF ray marching проти класичного трасування променів: У класичному трасуванні променів для кожного примітива пишуться аналітичні функції перетину. SDF marching замінює все це однією функцією відстані: промінь просувається на мінімальну відстань до будь-якої поверхні, гарантовано не проскакуючи повз неї. Виграш — це безкоштовне плавне змішування (smooth-min), нескінченний рівень деталізації та тривіальні деформації, — але SDF повинна бути ліпшицевою (величина градієнта ≤ 1), щоб sphere tracing збігався.

Алгоритми одним поглядом

Sphere tracing SDF-примітиви М'які тіні та AO Закон Снелліуса Рівняння Френеля Наближення Шліка Повне внутрішнє відбиття Рівняння тонкої лінзи Розсіювання Релея λ⁻⁴ Дифракція Гюйгенса-Френеля Колірний простір CIE XYZ Дифракція Фраунгофера