İleri ve ertelenmiş oluşturma arasındaki performans dengesi nedir?


9

İleri oluşturma, bir yüzey fragmanı için doğrudan giriş geometrisi ve aydınlatma bilgisinden bir parlaklık değeri hesaplama işlemidir. Ertelenmiş oluşturma işlemi iki adıma ayrılır: ilk olarak, giriş geometrisinin rasterleştirilmesiyle oluşturulan malzeme özelliklerini (bir geometri tamponu veya G-tamponu) içeren bir ekran alanı tamponu üretme ve ikincisi G- aydınlatma bilgileri ile tampon.

Ertelenmiş oluşturma genellikle ileri oluşturmanın optimizasyonu olarak sunulur. Bir açıklama, aydınlatmanın oldukça pahalı olduğu ve herhangi bir fazla çekmeniz varsa, ekranda asla görülmeyecek pikselleri aydınlatırken, malzeme özelliklerini bir G tamponuna ve daha sonra ışığa depolarsanız, yalnızca aslında ekranda görünür. Derinlik ön geçişi yapabileceğiniz ve daha sonra D3D11_COMPARISON_EQUALveya GL_EQUALveya eşdeğeri derinlik testi ayarlanmış bir ileri işleme geçişi yapabileceğiniz göz önüne alındığında, bu aslında ertelenmiş bir avantaj mıdır ?

Ertelenmiş oluşturma işleminin GPU'da daha iyi zamanlama potansiyeli de vardır. Bir büyük çözgü / dalga cephesini daha küçük bir geometri dalga cephesine bölmek ve daha sonra daha küçük aydınlatma dalga önleri daha sonra doluluk oranını artırır (aynı anda uçuşta daha fazla dalga önü). Ama aynı zamanda çok daha fazla bant genişliği kullanımı ile sonuçlanır (G tamponuna çok sayıda kanal yazıp aydınlatma sırasında bunları tekrar okursunuz). Açıkçası buradaki ayrıntılar GPU'nuza çok bağlıdır, ancak genel ilkeler nelerdir?

İleri ve ertelenmiş oluşturma arasında karar verirken başka pratik performans hususları var mı? (Gerekirse her tekniğin varyasyonlarını kullanabileceğimizi varsayalım: örn. Döşemeyi ileriye doğru döşenmiş ertelemeyle karşılaştırabiliriz.)

Yanıtlar:


11

Ön işleme geçerek ve gerçekte görünür olmayan herhangi bir pikseli reddetmek için bu bilgileri kullanarak ileri işleme ile bile opak nesnelerden fazla çekilmekten kaçınmak mümkündür. Ancak, sahnenizin tepe maliyetine bağlı olarak, derinlik ön geçişi kabul edilemez miktarda performans yükü ekleyebilir. Ek olarak, GPU'nun piksel gölgeleme boru hattını kullanarak oluşturma, oluşturulan piksel başına maliyet ödemediğiniz, oluşturulan 2x2 piksel dörtlü için maliyet ödediğiniz anlamına gelir . Bu yüzden derinlik ön geçişi yapmak bile üçgen kenarların atılacak iş gölgeleme piksellerini harcamasına neden olur.

GPU zamanlaması karmaşık bir konudur ve ileri ve ertelenmiş arasındaki ödünleşim basitçe "daha hızlı çalışır, ancak daha fazla bant genişliği kullanır". Sıralı olarak çalışan ve her biri aynı sayıda kaynağı kullanan eşit derecede ucuz iki işleminiz varsa, bunları ayrı gölgelendiricilere ayırmak için bir neden yoktur: her biri X kaynağını kullanan iki küçük dalga önü, X kaynaklarını da kullanır. Bununla birlikte, ucuz bir işleminiz ve sırayla çalıştırmak için pahalı bir işleminiz varsa, ayrı gölgelendiricilere bölmekten fayda görebilir: genel olarak gölgelendirici, herhangi bir noktada kullanabileceği maksimum kaynak miktarını ayıracaktır. O' ileri işleme özelliğinin GPU'nuzun tüm bant genişliğini kullanamayabileceği düşünülebilir çünkü uçuşta bant genişliğini doyurmak için yeterli işlem yapamayacak kadar az dalga önü vardır. Ama eğer senolan bant genişliği kısıtlı, (muhtemelen daha fazla bant genişliği kullanacak beri) ertelenmiş oluşturmaya yönelik bir avantaj olabilir.

Ek bir performans kaygısı, ileri işleme işleminin, yalnızca bu nesne için farklı bir gölgelendirici kullanarak farklı malzeme türlerini (farklı BRDF'ler) desteklemesidir. Basit bir ertelenmiş oluşturucu, farklı malzeme tiplerini farklı bir şekilde işlemek zorundadır (gölgelendiricideki bir dal), çünkü iş artık oluşturulan nesneye bağlı olarak tutarlı bir şekilde çözgü / dalga önlerine gruplandırılmaz. Bu, döşemeli bir oluşturucu ile hafifletilebilir - yalnızca ekranın belirli alanları alternatif bir malzeme türü kullanıyorsa (örneğin saçlar için), gölgelendirici varyasyonunu yalnızca bu malzemeyle herhangi bir piksel içeren fayanslar için bir malzeme türü dalıyla kullanabilirsiniz. .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.