Işınlama ile zıtlıkla bunu anlamak muhtemelen en kolay olanıdır.
Raytracing ile ilkel hale getirmek için, ilkel ve giriş ışını verilirse, o ışının tam olarak nerede olduğunu ilkelde gösteren bir işleve ihtiyacınız vardır. Ardından, ışını ilgili tüm ilkel maddelere karşı test edebilir ve en yakın kavşağı seçebilirsiniz. İşlemciler bu konuda iyidir.
Işınlama ile, böyle basit bir ışın kavşak işlevi yok. Işın üzerinde bir nokta verildiğinde, noktanın yüzeye ne kadar yakın olduğunu tahmin edebilirsiniz, ancak yüzeye çarpmak için o ışını ne kadar uzatmanız gerektiğini tam olarak bilmiyorsunuz.
Yani, her seferinde bir adım "yürürsün":
Işının "başlangıcında" başlayın - sahne oluşturma için yakın düzlem veya sahnedeki tek bir nesne varsa sınırlama hacmiyle kesişme. (Aşağıdaki şemada P0)
Yüzeye ne kadar yakın olduğunuzu tahmin etmek için mesafe fonksiyonunuzu değerlendirin. (Şemadaki en büyük daire)
Tahmininize göre ışın boyunca ilerleyin. Hareket, muhafazakar bir şekilde kısa olmalıdır, bu yüzden hiçbir yerde yüzeyinde tünellemeyeceğinize eminiz.
Şimdi yeni bir noktaya sahipsiniz (aşağıda P1) - yeni bir tahmin alın ve tekrarlayın.
Yüzeye eşik mesafeye ulaşana veya maksimum adım sayınıza ulaşana kadar tahminler almaya ve adım atmaya devam edin. (Aşağıdaki P4)
Artık yüzeyin derinliğine sahipsiniz ve yakındaki örneklerden normal / ortam tıkanması gibi şeyleri çıkarabilir ve bu verileri pikseli aydınlatmak ve renklendirmek için kullanabilirsiniz.
GPU Gems 2, bölüm 8'den örnek şema
Her ışın bağımsız olduğundan ve (genellikle) her adımda yalnızca yerel bilgileri kullandığından, GPU'larda paralelleştirme için olgunlaşır. Genellikle ekranda sadece iki üçgen çizilir. Bunları rasterleştirdikten sonra, fragman gölgelendiricisine iletilen her piksel tek bir ışını temsil eder. Parça gölgelendirici, yüzeye ulaşana kadar bu ışını yürüterek sonucu döndürür (genellikle tek bir tam ekran geçişinde tekstüre ve gölgelendirme için derinlik değeri).
Kesin adımlar, elde etmeye çalıştığınız özel etkiye çok bağlıdır. Raymarching teknikleri ile kullanılır ...
- Geleneksel rasterleştirilmiş geometride yüzey yer değiştirmesini simüle etmek için yükseklik alanları (paralaks oklüzyon haritalaması)
- ekran yansıması gibi şeyler için sahne derinliği tamponları
- 3B örneklenmiş veri kümelerini görselleştirmek için hacimli dokular (genellikle bilimsel / tıbbi)
- fraktallar gibi şeyler yapmak için kapalı fonksiyonlar
- Iñigo Quilez'in çalışmasında olduğu gibi işlemsel mesafe alanları (yukarıdaki açıklamalarda msell'den büyük bağlantılar).
Raymarching, Wikipedia'dan bu örnekte olduğu gibi hacimsel yarı saydamlığı sağlamak için her adımda (genellikle her seferinde bir mesafe tahmin etmek yerine sabit adımlar kullanarak) harmanlamada da kullanılır .
Bu, ayrıntılı bulutları gerçek zamanlı olarak göstermenin popüler bir yolu haline geldi .
Binanın pencerelerinin arkasındaki iç oda detayını simüle etmenin bir yolu olan İç Haritalama bile , ışının pencereye girdiği noktadan en yakın duvara, zemine / tavana veya mobilya düzlemine adım attığı bir raymarching şekli olarak düşünülebilir.
İlgilendiğiniz belirli bir ışın izleme efekti varsa, belirli örneklerle yeni bir soru sorarak muhtemelen daha ayrıntılı yanıtlar alabilirsiniz. Bir aile olarak, teknik kısa bir cevapta her şeyi kapsayamayacak kadar çeşitlidir. ;) Umarım bu, bu gölgelendiricilerde kaputun altında neler olduğunu anlamanız için bir çerçeve sunar.