Işın izleme
Bir ışın izleyici, bir çizgiyi izleyerek örneği boyar. Çizgi kameradan, bir lambadan ya da önceki çarpmadan çıkar ve algoritma dur diyene kadar tek yönde gider. İlk soru geometriktir. Bu çizgi boyunca en yakın yüzey hangisidir? Arthur Appel, 1968'de IBM'de, katı cisimleri gölgelemek ve gölge bölgelerini işaretlemek için bu sınamayı kullandı. Turner Whitted'ın 1980 modeli orada durmadı. Çarpmadan yansıma ışını, kırılma ışını ve her lambaya bir gölge ışını gönderebiliyordu. Üç boyutlu bilgisayar grafiği çizgiyi Kajiya'nın 1986 işleme denklemine ve Whitted'ın sabit ışın ağacının yerini rastgele örneklere bırakan yol izlemeye kadar götürür. Işık, malzeme ve hesaplanan görüntü, bu örneklerin neye mal olduğunu ve geride bıraktığı gürültüyü anlatır.
Pahalı olan aramadır. Sahnedeki üçgen sayısı tek tek denemeye değmeyecek kadar artınca, her üçgeni her ışına sürmek vaktin çoğunu, bir kutunun eleyeceği ıskalamalara harcar. Hızlandırma yapısı, çok sık sınırlayıcı hacim hiyerarşisi, ilkelleri iç içe kutulara dizer. Işın, gerçekten değdiği kutuları yürür. Kamera modeli, malzeme ve sonraki ışının seçimi algoritmayla değişir. Yürüyüş ortak kalır.
Steven G. Parker, James Bigler, Andreas Dietrich, Heiko Friedrich, Jared Hoberock, David Luebke, David McAllister, Morgan McGuire, Keith Morley, Austin Robison ve Martin Stich bu yürüyüşün nasıl paylaşıldığını OptiX: a general purpose ray tracing engine yazısında anlattı. Yazı ACM Transactions on Graphics, cilt 29 (2010), 13 sayfa, DOI 10.1145/1778765.1778803. McGuire hem Williams College'da hem NVIDIA'daydı. Diğer yazarlar NVIDIA'daydı. 2010 uygulaması şirketin Quadro, GeForce ve Tesla GPU'larında, CUDA üzerinden çalıştı. OpenRT, Manta, Razor ve Arauna gibi daha eski etkileşimli izleyiciler bir işleyiciye ya da bir makineye göre kurulmuştu. Işın izlemeyi GPU'ya daha önce koymuş çalışmalar hızın peşindeydi. OptiX bir programlama modelinin peşindeydi.
Motor, lambanın ne olduğunu bilmez. Gölge ve yansıtma da onda yoktur. İkisi de onu çağıran programın işidir. OptiX, her biri tek bir ışın için yazılmış bir avuç küçük program verir ve bunları bir çekirdekte birleştiren, çalışma anında derleyen bir derleyici verir. Özyinelemeyi hâlâ programcı yazar, Whitted gölgelendiricisinin yaptığı gibi. Demetleme, yeniden sıralama ve hızlandırma yapısının kuruluşu motorun içinde kalır. En yakın çarpma programı GPU'ya iş dağıtmaz.
Programlar
Yedi program türü bir seferde tek ışınla uğraşır. Sınırlayıcı kutu programı onların yanında durur ve ışında değil geometride çalışır, hızlandırma yapısının içine koyacak bir kutusu olsun diye. Yazı kutu programını yedinin dışında sayar. Tablo tam takımdır.
| Program | Ne zaman çalışır |
|---|---|
| Işın üretimi | Giriş. Çoğu zaman piksel başına bir kopya. |
| Kesişim | Yürüyüş sırasında. Bu ilkel ışına değer mi, nerede? |
| Sınırlayıcı kutu | Yapı kurulurken. İlkelin kesin olarak içinde kaldığı bir kutu. |
| En yakın çarpma | Bir kez, en yakın çarpmada. Yüzey gölgelendiricisi. |
| Herhangi çarpma | Bildirilen her çarpmada, herhangi bir sırada. Işını bitirebilir ya da çarpmayı atlayabilir. |
| Iskalama | Işın sahneyi terk etti. Bir zemin rengi ya da ortam haritası. |
| İstisna | Işın bozuldu, ya da kullanıcının kodu hata fırlattı. |
| Seçici ziyareti | Bir seçici düğümde. Işının gireceği çocuğu seçer. |
Işın üretimi, bir çalıştırmanın girişidir. Tek çağrı çok kopya başlatır. Alışılmış kamerada her kopya bir piksel için bir ışın kurar, izler ve bir renk yazar. Aynı tür program foton saçabilir, aydınlatmayı önceden hesaplayabilir ya da bir OpenGL geçidinin sıraya koymuş olduğu ışın isteklerini alabilir. Kesişim, geometrik sınamadır. Üçgen, küre, silindir, ya da ağı hiç olmayan bir şekil. Yazının 1. şeklinde işlemsel bir Julia kümesi vardır. İşlemsel bir ilkelin kutusu bazen kaba bir tahmindir. Tahmin, ilkelin kendisini içermelidir. Bol gelen kutu yürüyüşü uzatır. Resim değişmez.
En yakın çarpma, en yakın kesişim bilinince bir kez çalışır. Yüzey gölgelendiricisidir. Renk hesaplayabilir, yeni ışınlar atabilir ve sonucu ışının yüküne yazar. Herhangi çarpma yolda çalışır, yürüyüşün bildirdiği her kesişimde bir kez, ve bildirimler sırasız gelebilir. Oradan ışın hemen bitebilir. Engel bulmuş bir gölge ışını için doğru davranış budur. Çarpma yok da sayılabilir. Alfa dokusu, aramayı baştan kurmadan delik açmayı böyle yapar. Iskalama, aralıkta hiçbir şey vurulmamışsa çalışır. Düz bir zemin rengi ya da ortam haritası orada durur. İstisna, ışın bozulunca çalışır: özyineleme yığını o iş parçacığına ayrılan belleği aşmıştır, ya da tampon indisi sınırın dışındadır. Kullanıcının kodu kendi istisnasını da fırlatabilir. Seçici ziyareti kaba bir düğümde çalışır ve bir çocuk seçer. Ayrıntı düzeyi düz kullanımdır. Uzak ışın kaba modeli alır.
Yük, kullanıcının tanımlayıp ışına bağladığı bir kayıttır. Gölgeleme sonucu ve gölge zayıflaması onun içinde gider. Yazılacak sabit bir aydınlatma yapısı yoktur. Yazının ilk şeklinde çizilen uygulamalar yol izleme, Julia kümesi, foton haritası, büyük ölçekte görüş hattı ve çarpışma sınamaları, hareketli geometride Whitted gölgelemesi ve ortam örtmesidir. Özet, çarpışma saptamayı, yapay zekâ sorgularını ve ses yayılımı gibi bilimsel işi de sayar. Bu tasarımda ışın bir sorgudur. Resim, cevaplardan biridir.
Sahne çizgesi
Geometri bir bağlamda, yönlü bir çizge olarak durur. Grup düğümünün çocukları ve bir hızlandırma yapısı vardır. İki katlı bir yürüyüşün tepesi olabilir. Katı cisimleri, ağacı baştan kurmadan oynatmanın alışılmış yolu budur. Geometri grubu bir yapraktır. İlkelleri ve malzemeleri tutar, kendi hızlandırma yapısı da vardır. Dönüşüm düğümünün bir çocuğu ve 4'e 3 bir matrisi vardır. Afin bir eşleme için yeter. Seçici düğümün çocukları ve bir ziyaret programı vardır. Her düğüm kök olabilir, bu yüzden kamera ışını ile gölge ışını ayrı çizgelerden başlayabilir. Bir düğümün birden çok ebeveyni olabilir. Bu örneklemedir: bir ağ birçok yerde, kesişim sınaması farklı şekillerin paylaştığı bir malzeme.
Geometri örneği ek yeridir. Bir geometri nesnesini bir malzeme takımına bağlar. Kesişim ve kutu programları geometriye asılıdır. En yakın çarpma ve herhangi çarpma programları malzemeye asılıdır. Ayrım bilerek yapılmıştır. Bir rasterleştiricinin kullandığı üçgen biçimi o biçimde kalabilir, çünkü kesişim programı onu durduğu yerde okur. İzleyiciye özgü bir ağa kopya, içeri girmenin bedeli olmaktan çıktı.
2010'da yansıma formülü eskidi bile. Açık kalan, paralel bir makinede programlanabilir aramaydı: yeni bir algoritmanın her seferinde baştan yazmayacağı bir arama. Bilgisayar resmi sıradanlaşınca, bir kare hâlâ ekrandayken ışın izlemeyle hesaplanabiliyordu.
