Gölge haritası nedir? Gölge haritası, dokuları basit bir soruya cevap veren bir dokudır: ışıktan, texelin temsil ettiği doğrultuda, hangi mesafede ışık tıkanır? Doku koordinatları, belirli gölge haritalama algoritmasına bağlı olarak çeşitli projektif doku araçları kullanılarak üretilir.
Projektif tekstüre basitçe bir nesneyi doku alanına dönüştürmenin bir yoludur (ve evet, bunun geriye doğru geldiğini biliyorum. Ama işte böyle çalışır). Gölge eşleme algoritmaları birkaç farklı türde dönüşüm kullanır. Ama sonuçta, bunlar sadece bir uzaydan diğerine dönüşümlerdir.
Gölge haritasını oluştururken, geometrinizin köşelerini alırsınız ve bunları standart bir oluşturma hattı üzerinden dönüştürürsünüz. Ancak kamera ve projeksiyon matrisleri, görünüm konumu ve yönü için değil, ışık konumunuz ve yönünüz için tasarlanmıştır.
Bir gölge eşlemeyle ileriye doğru görüntü oluştururken, nesneleri normal olarak oluşturur, köşeleri görüntü kamera alanına ve görüntüleme projeksiyon matrisine dönüştürürsünüz. Bununla birlikte, köşeleri ışık kameranızdan ve projeksiyon matrislerinizden dönüştürerek, köşe verisi olarak parça gölgelendiricisine geçirirsiniz. Bunları, gölge dokusuna erişmek için projektif doku ile kullanır.
İşte önemli olan nokta. Projektif doku erişimi, doku üzerinde eriştiği konumun yüzeydeki nokta (parça gölgelendiricide oluşturduğunuz nokta) ve ışık arasındaki yönü temsil edeceği şekilde tasarlanmıştır. Bu nedenle, yaratılan parça için oklüzyonun meydana geldiği derinliği temsil eden texeli getirir.
Ancak bu boru hattı hakkında özel bir şey yok . Tepe konumlarını gölge dokusuna dönüştürmeniz ve bunları parça gölgelendiricisine geçirmeniz gerekmez. Dünya-uzay tepe konumlarını parça gölgelendiriciye geçirebilir ve daha sonra parça gölgelendiricinin onları gölge dokusunun projektif alanına dönüştürmesini sağlayabilirsiniz. Kesinlikle aynı doku koordinatlarını bulacağınız için çok fazla performans atıyorsunuz. Ancak matematiksel olarak uygulanabilir.
Gerçekten de, kamera boşluğu tepe konumlarını parça gölgelendiriciye geçirebilirsiniz. Daha sonra onları dünyaya, sonra ışık kamera alanına, sonra da projektif gölge doku alanına dönüştürebilir. Tüm bu dönüşümü tek bir matrise koyabilirsiniz (gölge projeksiyon algoritmanıza bağlı olarak). Yine, bu size daha önce sahip olduklarınızı tam olarak verir, bu nedenle ileri işleme sırasında bunu yapmak için bir neden yoktur.
Fakat ertelendi oluşturma işleminde, zaten kamera alanı tepe konumlarına sahip olursunuz . Yapmanız gerekiyor, aksi takdirde aydınlatma yapamazsınız. Bir ara belleğe yazarak çok fazla bellek ve bant genişliği harcadınız ya da akıllısınız ve derinlik arabelleğini ve çeşitli matematiği kullanarak yeniden hesapladınız (ki buraya girmeyeceğim, ancak çevrimiçi olarak ele alınacak).
Her iki durumda da kamera alanı konumlarını görüntüleyebilirsiniz. Ve yukarıda belirtildiği gibi, onları kamera kamera alanından gölge projektif doku uzayına dönüştürmek için bir matris uygulayabiliriz. Yani ... bunu yap. Ardından gölge haritanıza erişin.
Sorun çözüldü.