Çoklu geçiş efekti için iyi bir örnek?


9

XNA'da (ve genel olarak Direct3D'de), tek köşe ve parça gölgelendiricileri oluşturmak yerine, potansiyel olarak birçok gölgelendiriciyi 'Efektler' olarak paketlersiniz. Bir efekt kullanmaya geldiğinizde bir 'teknik' seçersiniz (veya hepsinden tekrarlarsınız) ve sonra her bir 'teknik' bir dizi 'geçişe' sahiptir. Her geçişte döngü yaparak ilgili köşe ve parça gölgelendiriciyi seçer ve geometriyi çizersiniz.

Merak ettiğim şey, birden fazla geçişe ihtiyaç duyacağınız şey mi? 3D'nin ilk günlerinde sadece bir doku biriminiz olduğunu anladım ve sonra 2'niz vardı ve çevre eşlemesi yapmak istiyorsanız da hala yeterli değildi. Ancak modern cihazlarda, mobil sınıfta bile, 8 veya daha fazla doku örnekleyebilir ve tek bir gölgelendiricide istediğiniz kadar aydınlatma hesaplaması yapabilirsiniz.

Burada daha deneyimli olan, çok geçişli oluşturmanın hala gerekli olduğuna dair pratik örnekler sunabilir mi, yoksa bu sadece XNA / Direct3d tarafında fazla mühendislik mi?

Yanıtlar:


5

Bir dizi yakalanan arabellek üzerinde işlem sonrası efektler yaptığınız her zaman, çoklu geçiş efekti, yani çizgi anahatları, hareket bulanıklığı, SSAO, çiçeklenme için makul bir zaman olacaktır. Fikir, ilk geçişin her şeyi uygun arabelleklere dönüştüreceğiniz yer olması ve sonraki her geçişin her işlem sonrası efekti ele alacağı fikridir.

Ranieri'nin XNACC örneğinden bahsettiği gibi, çok sayıda ışık oluşturmak için birden fazla geçiş kullanıyorlar. Bu örnekte, aynı geçişi yapıyorlar, her ışık için sadece bir kez.

Shader Model 2 ve önceki sürümlerin, her gölgelendiricideki Shader Model 3 veya 4 gibi çok sayıda talimatın yakınında herhangi bir yere sahip olamayacağını, ancak bir efekti birden çok geçişe bölmenin başka bir nedeninin - eski donanımı desteklemek için olduğunu unutmayın.


EffectPasses üzerinden döngü yaptığınız bir XNA Effect nesnesinin farklı efektler kullanmak yerine birden fazla geçişi olduğu ve bunun neden olduğu bir örnek verebilir misiniz?
Jason Goemaat

4

Diğer yanıtlarda belirtildiği gibi, diğer yanıtlarda önerildiği gibi, çok geçişli renderleme (farklı gölgelendiriciler / parametrelerle birden fazla kez tek bir kafes çizme), kesinlikle aydınlatma ve özel efektler için hala kullanılmaktadır.

D3DX Efekt geçişleri bu tür şeyler için kullanılabilir. Ancak, birden fazla gölgelendirici / efektle de uygulanabilir.

Geçişlerin asıl amacı, geçiş başına doku aşamalarının sayısı ve gölgelendirici talimatları üzerindeki kısıtlamaların oldukça sınırlı olduğu alt uç (gölgelendirici öncesi-2.0) donanımda karmaşık gölgelendiricilerin uygulanmasına yardımcı olmaktı.

Çok geçişli aydınlatma örneğinde, anahtarlama efektleri yerine geçişler kullanılarak elde edilecek önemli performans kazanımları var mı?


3

Herkesin bahsettiği ışıklandırmaya ek olarak, bunun bir başka önemli kullanımı bulanıklıktır . Yatay ve dikey ayrı geçişlerde yapılır (bu nedenle 9x9 bulanıklık elde etmek için 81 yerine her çıkış pikseli için yalnızca 18 piksel örneklenmelidir). Bu çiçeklenme / HDR, alan derinliği, parlaklık, vb.


Muhtemelen, ancak çoğu bulanıklık uygulamalarının yatay ve dikey geçişler için aynı gölgelendiriciyi kullanacağını ve sadece örnekleme ofsetlerini (gölgelendirici sabitleri veya tepe noktası verileri olarak) geçeceğini düşünüyorum?
bluescrn

1
@bluescrn - Bloom tipik olarak 4 geçişli bir etki olarak düşünülür: biri parlak alanları ve küçültmeyi çıkarmak, biri yatay olarak bulanıklık, biri dikey olarak bulanıklık, biri bulanık görüntüyü orijinal ile birleştirmek / büyütmek için. Gölgelendirici parametreleri bunları kontrol etmek için kullanılabilse de, iki bulanıklaştırma geçişi dışındaki her şeyi ayırt etmek için dallanma gerekli olacaktır
Robert Fraser


1

Ranieri'nin dediği gibi, birden fazla ışık için birden fazla geçiş kullanabilirsiniz, örneğin tek bir malzeme ile bir 'ortam' geçişi, nokta ışığı başına bir ilave geçişi, spot ışığı başına başka bir ilave geçişi ve daha sonra dağınıklıkta çoğalmak için bir çıkartma geçişi olabilir doku (Geçmişte böyle bir kurulum kullandım ve ertelenmiş gölgelemeye girmeden gördüğüm bir aydınlatma gölgelendiricisini işlemenin en esnek yolu hakkında).

Ayrıca, çoğu kürk gölgelendiricisinin birden fazla geçiş kullandığına inanıyorum.


0

Gölge oluşturmak için gölge haritaları çoklu geçiş kullanılarak yapılabilir. Video kartı geçiş sayısı ile aynı sayıda doku birimini destekliyorsa, bir geçişte bazı çoklu geçiş efektleri yapılabilir. Bu nedenle, yeterli doku biriminiz yoksa, birden fazla geçiş kullanmanız gerekecektir. Bir sabit donanım platformu (oyun konsolları gibi), doku birimlerinin sayısını bildiğiniz için muhtemelen sadece çoklu doku kullanarak kodlayabilirsiniz. Ancak PC'ler için sonsuz sayıda donanım yapılandırması vardır. Tüketicilere en geniş erişimi elde etmek istiyorsanız, muhtemelen daha karmaşık etkilerinizin bir kısmını birden fazla geçişe bölmek isteyeceksiniz, böylece daha düşük dereceli donanıma sahip kullanıcılar (GPU'da çok fazla doku birimine sahip olmayanlar) etkisi görmek. Kısaca, gölge haritaları ilk önce sahnenin gölge haritasını ışık perspektifinden tek geçişte oluşturarak oluşturulur. Daha sonra gölge harita dokusu, sahnenin diğer dokuları ile sahneye harmanlanır.

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.