Ray Tracing i optyka — ray marching SDF, Fresnel i rozpraszanie Rayleigha

Od pojedynczego przecięcia promienia ze sferą do pełnego path tracera: jak ray tracing symuluje światło w sposób fizyczny. Prawo Snella przy załamaniu, współczynnik odbicia Fresnela, całkowite wewnętrzne odbicie, ray marching po polu odległości znakowanej (SDF), atmosferyczne rozpraszanie Rayleigha — każde pojęcie z interaktywną symulacją w przeglądarce.

Jak działa ray tracing

Podstawowa idea ray tracingu jest zwodniczo prosta: dla każdego piksela wypuść promień z kamery w scenę, znajdź najbliższe przecięcie i wycieniuj ten punkt, wysyłając promienie cienia w stronę źródeł światła. Powtórz to dla promieni odbicia i załamania, a otrzymasz fizycznie poprawne obrazy. Jedyne wejścia fizyczne to prawo odbicia (θ_r = θ_i) i prawo Snella (n₁ sin θ₁ = n₂ sin θ₂).

Nowoczesne ray tracery i path tracery na GPU (NVIDIA RTX, ray tracing w Apple Metal) robią dokładnie to samo z prędkością miliardów promieni na sekundę. Symulacje na tej stronie działają całkowicie w przeglądarce — część w JavaScript, część w shaderach fragmentów GLSL — dzięki czemu możesz modyfikować scenę i widzieć fizyczne zachowanie światła w czasie rzeczywistym.

Równania Fresnela i prawo Snella

Prawo Snella:  n₁ sin θ₁ = n₂ sin θ₂
Kąt krytyczny (TIR):  θ_c = arcsin(n₂/n₁)  (n₁ > n₂)

Współczynnik odbicia Fresnela (polaryzacja s):
  r_s = (n₁ cos θ₁ − n₂ cos θ₂) / (n₁ cos θ₁ + n₂ cos θ₂)

Współczynnik odbicia Fresnela (polaryzacja p):
  r_p = (n₂ cos θ₁ − n₁ cos θ₂) / (n₂ cos θ₁ + n₁ cos θ₂)

Odbicie R = |r|²,  transmisja T = 1 − R
Przybliżenie Schlicka: R(θ) ≈ R₀ + (1−R₀)(1−cos θ)⁵

Optyka atmosferyczna i rozpraszanie

Niebo jest niebieskie, a zachody słońca czerwone z powodu rozpraszania Rayleigha: natężenie światła rozpraszanego przez cząsteczki gazu jest proporcjonalne do λ⁻⁴, więc niebieskie fotony o krótkiej długości fali rozpraszają się ~5,5 razy silniej niż czerwone. O zachodzie słońca światło słoneczne przechodzi przez ~38 razy więcej atmosfery, tracąc barwę niebieską i pozostawiając czerwień i pomarańcz. To nie są efekty specjalne — wynikają bezpośrednio z przekroju czynnego rozpraszania elektromagnetycznego cząsteczek dużo mniejszych niż długość fali.

Ray marching SDF a klasyczny ray tracing: W klasycznym ray tracingu piszesz analityczne funkcje przecięcia dla każdego prymitywu. Ray marching SDF zastępuje to wszystko jedną funkcją odległości: promień posuwa się o minimalną odległość do dowolnej powierzchni, co gwarantuje brak przekroczenia. Zyskujesz darmowe płynne łączenie (smooth-min), nieskończony poziom detali i trywialne deformacje — ale SDF musi być ciągłe w sensie Lipschitza (moduł gradientu ≤ 1), aby sphere tracing był zbieżny.

Algorytmy w skrócie

Sphere tracing Prymitywy SDF Miękkie cienie i AO Prawo Snella Równania Fresnela Przybliżenie Schlicka Całkowite wewnętrzne odbicie Równanie soczewki cienkiej Rozpraszanie Rayleigha λ⁻⁴ Dyfrakcja Huygensa-Fresnela Przestrzeń barw CIE XYZ Dyfrakcja Fraunhofera