HLSL Gölgelendiricilerini en iyi duruma getirme
Bu bölümde, gölgelendiricilerinizi iyileştirmek için kullanabileceğiniz genel amaçlı stratejiler açıklanmaktadır. Bu stratejileri herhangi bir dilde, herhangi bir platformda yazılmış gölgelendiricilere uygulayabilirsiniz.
- Gölgelendirici Hesaplamalarını Nerede Yapmalısınız
- Gereksiz Yönergeleri Atla
- Paketi Değişkenleri ve ara Değişkenleri
- Gölgelendirici Karmaşıklığını Azaltma
- İlgili Konular
- İlgili konular
Gölgelendirici Hesaplamalarının Nerede Gerçekleştirileceği Bilinmesi
Köşe gölgelendiricileri, köşeleri getirme ve köşe verilerinin matris dönüştürmesini içeren işlemler gerçekleştirir. Genellikle köşe gölgelendiricileri köşe başına bir kez yürütülür.
Piksel Gölgelendiricileri doku verilerini getirme ve aydınlatma hesaplamaları gerçekleştirme gibi işlemler gerçekleştirir. Piksel gölgelendiricileri genellikle belirli bir geometri parçası için piksel başına bir kez yürütülür.
Genellikle bir sahnedeki piksellerin sayısı köşelerin sayısından fazladır, bu nedenle piksel gölgelendiricileri köşe gölgelendiricilerine göre daha sık yürütülür.
Gölgelendirici algoritmaları tasarlarken aşağıdakileri göz önünde bulundurun:
- Mümkünse köşe gölgelendiricisinde hesaplamalar yapın. Piksel gölgelendiricisinde gerçekleştirilen bir hesaplama, köşe gölgelendiricisinde gerçekleştirilen bir hesaplamadan çok daha pahalıdır.
- Yoğun örgüler gibi durumlarda performansı artırmak için köşe başına hesaplamaları kullanmayı göz önünde bulundurun. Yoğun kafesler için köşe başına hesaplamalar, piksel başına hesaplamalarla üretilen sonuçlardan görsel olarak ayırt edilemeyen sonuçlar üretebilir.
Gereksiz Yönergeleri Atla
HLSL'de dinamik dallanma, yürütülen yönergelerin sayısını sınırlama olanağı sağlar. Bu nedenle, dinamik dallanma gölgelendirici yürütme süresini hızlandırmaya yardımcı olabilir. Geometri veya pikseller görüntülenmiyorsa, gölgelendiriciden çıkmak veya yönergeleri sınırlamak için dinamik dallanmayı kullanın. Örneğin, bir piksel yanmazsa, aydınlatma algoritmasını yürütmenin bir anlamı yoktur.
Aşağıdaki tabloda, gölgelendiricinizdeki koşulları test edip gereksiz yönergeleri atlamak için dinamik dallanmayı kullanabileceğiniz bazı durumlar listeleniyor. Tablo kapsamlı değil. Bunun yerine, kodunuzu iyileştirmeye yönelik fikirler vermek için tasarlanmıştır.
Kontrol Edilecek Koşul | Gölgelendiricide yanıt |
---|---|
Alfa denetimi bir pikselin görünmeyecek olduğunu belirler. | Shader'ın geri kalanını atlayın. |
Piksel veya geometri tamamen sisli. | Gölgelendiricinin geri kalanını atlayın. |
Deri ağırlıkları sıfırdır. | Kemikleri atla. |
Işık azaltma sıfırdır. | Aydınlatmayı atlayın. |
Pozitif olmayan Lambertian terimi. | Aydınlatmayı atlayın. |
Değişkenleri ve İnterpolantları Paketle
Gölgelendirici verileri için gereken alana dikkat edin. Mümkün olduğunca çok bilgiyi bir değişkene veya ara değere ekleyin. Bazen, iki değişkenden alınan bilgiler tek bir değişkenin bellek alanına paketlenebilir.
Gölgelendirici Karmaşıklığını Azaltma
Gölgelendiricilerinizi küçük ve basit tutun. Genel olarak, daha az yönerge içeren gölgelendiriciler, daha fazla yönerge içeren gölgelendiricilerden daha hızlı yürütülür. Daha küçük, daha az karmaşık gölgelendiricilerde hata ayıklamak ve iyileştirmek de daha kolaydır.
İlgili Konular
HLSL için Programlama Kılavuzu
İlgili konular
-
HLSL için Programlama Kılavuzu