Ertelenmiş render nedir?


54

Ertelenmiş renderlemeyi ve bunun bir sahnede "çok" ışık için büyük bir performans darbesi olmadan nasıl kullanılabileceğini duydum, peki nedir ve (yüksek seviyede) nasıl uygulanır?

Yanıtlar:


55

Ertelenmiş görüntü oluşturma işleminin tanımlayıcı özelliği, temel olarak sahne görüntülemenin karmaşıklığını O (geometri * ışıklar) ila O (geometri + ışıklar) olarak değiştirmesidir.

Bu, sahneyi ilk önce (minimum) konum *, normal ve dağınık renk gibi temel özniteliklerin çıktısını almak için tasarlanmış gölgelendiriciler kullanarak gerçekleştirilir. Diğer özellikler piksel başına speküler değerler ve diğer malzeme özelliklerini içerebilir. Bunlar, toplu olarak G-tamponu olarak bilinen tam ekran oluşturma hedeflerinde saklanır.

(*: Geliştiricilerin daha fazla derinlik depolamayı ve pozisyonu yeniden yapılandırmak için kullanmayı tercih edeceğini, çünkü derinliği mevcut birçok başka etki için kullanışlıdır. )

G-tamponu oluşturulduktan sonra, BRDF'yi ışık başına piksel başına tam olarak bir kez çözerek ekrandaki herhangi bir piksel için tamamen aydınlatılmış bir sonuç hesaplamak mümkündür. Başka bir deyişle, her biri 20 ışıktan etkilenen 20 kafesiniz varsa, geleneksel ("ileri") görüntü oluşturma, etkileyen her ışığın sonucunu biriktirmek için her bir ağı birkaç kez yeniden oluşturmanızı ister. En kötü durumda, bu ışık başına mesh başına bir beraberlik çağrısı veya toplam 400 beraberlik çağrısı olabilir! Bu çağrı çağrılarının her biri için fazladan ağın köşelerini yeniden dönüştürüyorsunuz. Işıktan etkilenmeyen veya nihai sonuçta görünmeyecek olan pikselleri gölgelendirmeniz veya sahnedeki diğer geometriler tarafından tıkanacak olmaları nedeniyle de gölgelenme olasılığınız oldukça yüksektir. Bunların her biri boşa harcanan GPU kaynaklarıyla sonuçlanır.

Ertelenen görüntü oluşturma ile karşılaştırın: G arabelleğini doldurmak için kafesleri yalnızca bir kez görüntülemeniz gerekir. Ondan sonra, her bir ışık için ışığın etkisinin kapsamını temsil eden bir sınırlama şekli oluşturursunuz. Bir nokta ışığı için, bu, tüm sahne etkilendiğinden, bu, küçük bir küre veya yönlü bir ışık için tam ekran dörtlü olabilir.

Ardından, o ışığın sınırlayıcı hacmi için piksel / fragman gölgelendiricisini çalıştırırken, geometri niteliklerini G-tampon dokularındaki uygun konumdan okuyup aydınlatma sonucunu belirlemek için bu değerleri kullanırsınız. Yalnızca nihai sonuçta görülebilen sahne pikselleri gölgelendirilir ve ışık başına tam olarak bir kez gölgelendirilirler. Bu potansiyel olarak büyük tasarrufları temsil eder.

Ancak, sakıncaları olmadan değil. Şeffaf geometriyi işlemek için uzatılması çok zor olan bir paradigmadır (bakınız: derinlik soyma). Aslında, ertelenen tüm oluşturma uygulamalarının, sahnenin saydam bölümleri için ileriye dönük işleme geri dönmesi gerçekte çok zor. Ertelenmiş renderleme aynı zamanda, büyük miktarda VRAM ve kare tampon bant genişliği tüketir; bu da geliştiricilerin G-buffer niteliklerini mümkün olan en küçük / en az bileşenlere akıllıca paketleyip sıkıştırabilmesi için büyük uzunluklara gitmesine neden olur.


8

Ertelenmiş Gölgeleme olarak da adlandırılan Ertelenmiş Rendering, ara sonuçları dokulara depolayan ve ardından oluşturma verilerini örnekleyerek oluşturma denklemini tamamlayan geniş bir olası oluşturma yolları kümesini ifade eder.

Geometri tamponları, sahnenin, örneğin opak geometrinin konumunu, normal ve taban dokusunu içeren bir dizi tampon haline getirildiği erken bir örnektir. Aydınlatma uygulanmadı ve son renk bilinmiyor. Müteakip geçitlerde ışıklar oluşturulur ve geometri tamponları örneklenir. Bu, çok sayıda ışığın, ekran pikselinde görülebilen sabit bir ışık sayısı maliyetiyle üretilebileceği anlamına gelir. Geleneksel render, tıkanmış ve ekranda hiç görülmemiş yüzeyler için tüm ışık kaynaklarını değerlendirirdi.

Örneğin, ilk önce hafif bilgilerin gösterilmesi de dahil olmak üzere birçok varyasyon mevcuttur.

Daha fazla bilgi için bakınız: http://en.wikipedia.org/wiki/Deferred_shading http://delicious.com/aancsiid/deferred-shading


-3

Ertelenen renderleme, geomtry'nin her şeyi gölgelendirmek için ikinci bir geçiş yapmadan önce olduğu yerde işlemektedir. Kullanışlılığı, kopyalamayı O (piksel * ışık kaynakları) olarak değiştirerek karmaşık sahneleri performansa yalnızca küçük bir vuruşla kullanmanıza olanak tanır.

Uygulanması oldukça basittir. İlk geçiş, en azından normal, normal ve renkli mesafeleri oluşturmayı gerektirir. Hafıza pahasına spekülatif ve konumlu hale getirmek için daha fazla doku ekleyebilirsiniz.

Oluşturulanları elde ettikten sonra, her birinin merkezinde benzersiz bir ışık kaynağının bulunduğu bazı küreler yaratırsınız, ışığı bir araya ekler, hepsini sahnenizdeki geometriye göre kırpın ve son olarak düşüşü uygulayın.


Bunun cevaplara yeni bir şey eklediğini sanmıyorum. Sadece Neverender'ın cevabının yeniden yazılmış kısımlarına benziyor.
HolyBlackCat

@HolyBlackCat Birkaç önemli fark var. Birincisi, doğru karmaşıklık denklemi var ve ikincisi, gerçekte nasıl uygulanacağını açıklarken, çok daha özlü.
hellol11

there's the correct complexity equationDoğru. Ama bunun küçük bir detay olduğunu söyleyebilirim. Diğer cevabın bir düzenlemesi olarak önerebilir veya yeterli üne sahip olduğunuzda bu konuda bir yorum bırakabilirsiniz. Bu yüzden yeni bir cevap vermek biraz fazla. it's much more conciseŞahsen bunun iyi olduğunu sanmıyorum. Bir cevabın ne kadar yararlı detayı varsa, o kadar iyidir, değil mi?
HolyBlackCat

1
@HolyBlackCat Bir noktaya, evet. Şahsen, basit bir sorunun yanıtlanması için bir metin duvarından geçmek zorunda kalmaktan hoşlanmıyorum.
hellol11
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.