raytracing bi efekt değil de bi çizim metodu.
vektör çizimlerde objeleri üçgenler olarak tutup ekrana (2dye) projeksiyon yapıp gerekli yerleri dolduruyoruz. hız kazanmak için büyük üçgenler kullanırsın, ama haliyle daha düşük kalitede bir görüntü elde edersin.
raytracingde ise vektörler yerine analitik ifadeler kullanıyoruz. yani bi uzay olsun (x,y,z eksenleriyle), burda 1/(x*x+y*y+z*z) diye bi şey tanımladım. bu uzayın ağırlığı oluyor (skalar field). yani her bir x, y, z noktası için 1/(x*x+y*y+z*z) değerinde bir ağırlığım oluyor. bu da uzayın merkezinde sonsuz, merkezden uzaklaştıkça azalan bir alan ifade ediyor.
eğer uzayda ağırlığı atıyorum 100 olan noktaları birleştirirsem bir küre elde ederim. ama bu küre vektör çizimdeki gibi üçgenlere ayrılmış değil, matematiksel olarak sonsuz noktadan oluşan bildiğin küre.
bunu çizdirmek için de ekranın tüm x ve y noktalarını tek tek tararım. her piksel için minz ve maxz arasında z değerimi yürütürüm ve ağırlığın 100 olduğu noktaları bulmaya çalışırım.
yani her pikselden monitörün içine doğru
rayler atarım. ama bu rayler bir bakıma kör olduğu için onları yavaş yavaş (yerine göre hızlı hızlı)
trace ederek küreyi el yordamıyla bulmaya çalışırım. küreyi bulduğum yere de (bir takım ışık hesaplarından sonra) istediğim pikseli koyarım.
ama şöyle bir şey oluşur, minzden maxzye ufak aralıklarla ilerlersem küreyi daha precise bulurum ama daha yavaş olur. büyük aralıklarla gidersem tam küre yüzeyini atlama ihtimalim yükselir (ağırlık 100 değil de 110 da bulurum mesela). çizim hızlanır ama görüntü kalitesi düşer bu yüzden (yanlış ışıklandırma vs.)
raytracing de böyle bir metottur. esasen son rendering işlerinde kullanılır. yani sonuçta rendered bir sabit görüntü almak için kullanılır. ama algoritma iyileştirilerek daha hızlı hale getirilebilir. örneğin raytrace yapılır x değerlerini 1,2,3 diye değil de 1, 5, 10 diye artırabilirim. 1 ve 5 te küreyi bulamazsam arasında bulma ihtimalim düşüktür diyip direk 10'a atlayabilirim. (eğer orda da bulamazsam 15e atlarım, bulursam 10 15 arasını tararım gibi)
opengl ve direct3d'nin bilgisayar grafik sektörünü ele geçirmesinden sonra realtime raytracing kasanlar azalmıştır. ama yeni nesil görüntü teknolojilerinde (shaderlar) piksel çizime bi ölçüye kadar izin verildiğinden ve bilgisayarlarımız artık 2000'lere göre kat kat hızlandığından demolarda raytracingle çizilmiş efektlerle karşılaşmak mümkündür. (ama aynı efektin vektörlerle meshlerle çizilmesi de sağlanabilir bi çok durumda.)
ayak üstü anlattım beklediğimden uzun sürdü
, umarım açıklayıcı olmuştur.