Oyunda bir karede kaç tane aktif gölgelendirici kullanmalıyım? 100 gibi 5 veya daha fazla?


20

Modern oyunlarda aynı anda bir sahnede genellikle kaç gölgelendirici aktiftir? Her çerçevede oyunlar arasında geçiş yapan birden fazla gölgelendiricinin kullanıldığını biliyorum ve gölgelendirici üzerinden nesne çizmek yaygın:

  1. Shader One ile tüm nesneleri çizin
  2. Gölgelendiriciden bir gölgelendiriciye iki değiştir
  3. Gölgelendirici iki ile tüm nesneleri çiz

Yine de, özellikle tüm sahne için bir parlama efekti, dokuya render vb. "Gölgelendiriciye göre gruplandır" yaklaşımı iyidir, çünkü gölgelendiricileri değiştirmek pahalı bir işlemdir.

Bir taraftan çok fazla gölgelendiriciniz olamaz, çünkü sahneyi hızlı bir şekilde işlemek istiyorsunuz. Öte yandan, cilt, metal, su vb.Için birçok farklı gölgelendiriciye (veya dallı uber gölgelendiriciye - oldukça benzer) ihtiyacınız var.

PC için teorik, modern, üçüncü kişi, 3D dedektif oyunu (önemliyse DirectX 11) kaç (ve hangi) farklı gölgelendirici kullanır? Bazı "çerçeve X" de sadece aktif sayılan 100 aktif gölgelendirici gibi 5, 20 veya daha fazla mı olurdu? Bunun bir sayı olmadığını biliyorum, ancak bir PC oyunu için hangi ölçeğin ve faktörlerin önemli olduğunu merak ediyorum.


Örnek oyunumda, çerçeve başına yaklaşık 9-11 kullanırım (farklı, küçük gölgelendiriciler veya bir uber gölgelendirici olarak sayın - şimdi önemli değil):

  1. Cilt gölgelendirici
  2. Göz gölgelendirici (çok fazla değil mi? Ama farklılar)
  3. Metal gölgelendirici
  4. Zemin gölgelendirici
  5. Kar / yağmur gölgelendirici (gerekirse)
  6. Su gölgelendirici (su sahnede varsa)
  7. Kızdırma gölgelendiricisi (yalnızca bazı özel efektler söz konusu olduğunda)
  8. Işık yayıcı gölgelendirici (sokak lambaları vb.)
  9. Standart gölgelendirici (diğerleri için, sadece standart gölgelendirme)
  10. Normal haritalara sahip standart gölgelendirici
  11. 2D gölgelendirici (GUI vb. İçin)

"Çok" veya "çok değil" mi? İhtiyacım olan bazı önemli gölgelendiricileri unuttum mu?

Yanıtlar:


28

Gerçekten tekniğe bağlıdır. Bir ileri render işleminde genellikle her farklı malzeme türü için bir gölgelendiriciniz olur. Bu tekniği kullanan AAA oyunlarında gölgelendiriciler genellikle bir sanatçının ayarlayabileceği malzeme üzerindeki bir dizi seçenekten üretilir. Bu yüzlerce gölgelendiriciye yol açabilir (1). Ancak diyelim ki gölgelendirici sayısı 40

Ertelenmiş bir gölgeleme / oluşturma işleminde genellikle G tamponundaki malzeme türünü kodlarsınız ve daha sonra farklı malzeme türlerini farklı şekilde doğru şekilde oluşturmak için büyük bir gölgelendirici kullanırsınız. Bu çok daha az, ancak daha karmaşık gölgelendiricilere yol açar. Burada gölgelendirici sayısının 5 sırada olduğunu varsayalım.

(1) Kaynak: Otomatik üretim kontrolden çıktığı için Tomb Raider için üretilen gölgelendiricilerin sayısını azaltmak için bir araç geliştirdiğim bir Crystal Dynamics yüklenicisi için çalıştım;). Amaç, gölgelendirici sayısını 40 dereceye veya bunun gibi bir şeye düşürmekti.


2
Cevabınız için teşekkür ederim - oldukça karmaşık ve zengindi. Az önce oy verdim. Yine de, işaretlemeden önce birkaç gün bekleyeceğim, çünkü bu oldukça "açık" bir soru. Bir kez daha teşekkürler Roy :)
PolGraphic

s / less / lesser / ...
hata

3

PC için bir cevap istediğini biliyorum. Ancak iOS'ta yaptığım şeylere cevap vereceğim ve onay işaretinizi almayı beklemiyorum.

Görünüşe göre doğru fikre sahipsiniz. Yine de her uygulama için farklı olacak. Sonunda, istediğiniz kare hızını elde etmek için gerekenleri yapmakla ilgilidir. İPhone'da hedef oranım 60. 30'un altına düşmesini sevmiyorum. Birkaç yüz hareketli sprite tabanlı parçacıklı bir patlamaya sahip olduğumda, iphone5'te 30'a ve 4'te çok daha düşük. Bazı cihazlarda karmaşıklığı azaltma konusunda kararlar vermem gerekiyor. Ve bazen bu karar gölgelendiricileri etkiler.

Ancak genellikle kaç gölgelendirici değil, bunun yerine kare hızı hedefime dayalı bir görev için hangi gölgelendiricileri kullandığımı etkiler.

Bence gölgelendiriciler doğru kullanıldığında kare hızını yükseltir. 80 gölgelendiriciye sahip bir uygulamam var, ancak hepsini tek bir çerçevede kullanmıyor - muhtemelen 10 civarında. Ve gerektiğinde bunları derler ve sahneler arasında hepsini atar. Ve donanımımda gölgelendirici sayım efekti kare hızını görmedim. Sadece gölgelendiricide kullanılan teknikler. Ama eminim 2 benzer gölgelendiricinin kare hızı için dallanan daha karmaşık olandan daha iyi olduğunu düşünüyorum.

Ayrıca, oluşturma yavaş veya daha yavaş bir cihazda kaliteyi düşüren gölgelendiricilerim var. İPhone 5'te normal eşleme kullanıyorum ancak gölgelendiriciyi iPhone 4'te normal eşleme yapmayan biriyle değiştiriyorum.

Roy'un cevabını seviyorum ve her zaman "gerçek" oyunların nasıl yapıldığına dair bir fikir edinmeye çalışıyorum. Kendi kendime öğretildiğimden, günü büyük keşfimin genel olarak nasıl yapıldığını veya gerçek profesyonellerin birkaç adım gerisinde olup olmadığını asla bilemiyorum.


1
Cevabınızın "iOS için olduğu" konusunda sorun değil. Ben PC hakkında dedim çünkü "bu platforma bağlıdır" kısa yanıtlar kaçınmak istiyorum;) Belki cevabınız benim için% 100 değildir. Ama yine de, platformdan bağımsız bazı sonuçları var, bu yüzden iyi buldum. Ve topluluğun diğer üyeleri (iOS kullanan) daha da yararlı bulabilir, bu yüzden benden teşekkürler ve oylama :)
PolGraphic

1

Oyununuzun sınırlayıcı faktörlerine ve hedef platforma bağlı olduğundan kaç gölgelendiriciye sahip olmanız veya sahip olmamanız gerektiğine dair bir sayı koyamazsınız. Uygulamada, aktif gölgelendiricilerin sayısının "yalnızca gerçekten ihtiyacınız olduğu kadar" olması azaltılmalıdır. Bazen bu, aynı anda sadece bir avuç gölgelendiricinizin (10 veya daha fazla) olduğu ve bazen birkaç düzine sahip olduğunuz anlamına gelir.

Oyununuzda ortaya çıkan permütasyon miktarını sınırlamaya yardımcı olmanın bir yolu, hemen hemen her gölgelendiricinin tekil bir gölgelendiriciden türetildiği ve farklılıklar ve özel davranışların bir önişlemci aracılığıyla değiştirildiği "ubershader" tekniğini uygulamaktır. Tabii ki alan derinliği, ortam tıkanıklığı gibi özel efektler için istisnalar vardır.

Bu noktaya kadar AAA oyunları ile yaşadığım deneyim, birkaç düzine gölgelendiricinin aktif olmadığını mantıksız gösterdi.

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.