Gölge haritalama neden standarttır?


41

Ticari olarak programcı olmama rağmen, oyun gelişimine neredeyse hiç değildim. Bir süredir bu soruyu yaşadım ve şimdi oyun geliştirmeye baktığımda sormanın iyi bir zaman olacağını düşündüm.

Gölge haritalama neden oyunların gölgeler yapmak için kullandığı özel yöntem gibi görünüyor? Künt olmak, korkunç görünüyor. Gölge ayarlarına sahip modern oyunlarda bile dikkat dağıtıcı blok-y gölgeleri var.

11 yıl önce yapılan Doom 3, şimdiye kadar gördüğüm herhangi bir gölge haritası uygulamasından çok daha iyi görünen gölge hacimlerini kullandı, aynı hafta yayınlanan AAA oyunlarını içeriyordu. Doom 3'ün üçüncü parti modları gölgelerin kenarlarını bile yumuşatarak görsel olarak daha etkileyici hale getirdi.

Gölge hacimleri gibi şeylerin uygulanmasında bazı teknik sorunlar veya kısıtlamalar var mı? Gölge haritaların uygulanması o kadar kolay mıdır ki, bu cihazların başka hiçbir şeyi dikkate almadığını mı düşünüyorsunuz?

Konuyla ilgili bulabildiğim tek bilgi, hacimleri oluşturan çokgenlerin oldukça fazla olması ve daha talepkar hale gelmesidir. Belki de gölge hacimlerinin çok daha yüksek sistem gereksinimleri vardır, ancak durum buysa, 2004'te bunları kullanmaktan nasıl kurtuldu?

Bu soru, gölge eşlemesine karşı gölge hacimlerine özgü değildir, Sadece tam ürünlerde kullandığım tek 2 sorundur ve diğer teknikler hakkında çok fazla bilgi bulamadım.


3
Sadece bir not - Doom 3, gününe göre oldukça yoğun bir performans sergiledi ve bazı modern sistemlerde bile hala dalgalanıyor (ve burada gerçekten uygunsuz olmasa da, entegre GPU'lardan bahsetmiyorum. yaşı nedeniyle, ama ...). Ve gölgelerin ve ışığın işe yaramadığı birçok bilgisayarda çalıştığını gördüm . Açıkçası, bir oyunda doğrudan gölge elde eden pek çok karmaşıklık var ve Doom 3, gerçekçi grafiklerin bir bilgisayar konfigürasyonunun bir parçası üzerinde ne kadar zor olduğunun güzel bir örneği.
Luaan

1
Doom 3, geliştirmenin başladığı zamandan önceydi (en azından grafik API seçimi yapıldı). Shader Model 2.0 donanım öncesi nesiller için pek çok arka ucu vardı ve bu motorun yaklaşık 1 / 4'ü zar zor taşınabilir (GLSL'de bile önceden tarihleniyor) ve geri kalan 3 / 4'ü eski NV ve ATI donanım uzantıları için codepaths anlamına geliyordu. Oyun gönderilince bu konu dışıydı. Şablon-gölge hacimlerinin seçimi belki de en az problemidir.
Andon M. Coleman

Yanıtlar:


48

Gölge eşleme ve şablon gölgeler (gölge hacimleri) kesinlikle sizin de bahsettiğiniz gibi büyük ikisidir, bu yüzden ikisini karşılaştırmaya devam edeceğim. Ve gölge haritalamanın en belirgin eksikliklerine ve şablon gölgelerin avantajlarına dikkat çektiğiniz için tam tersini yapacağım.

Şablon gölge eksiklikleri

  1. Gölgeler, döküm ağının şekline uyuyor. Bu çok sınırlayıcıdır ve muhtemelen şablon gölgeleri kullanmamak için en büyük teknik nedendir . Ağaç yaprakları, çalılar, tel çitler, kumaştaki yırtıklar ve diğer yaygın gölgelendirme oyun öğeleri, nesnenin şeklini tanımlamak için alfa saydamlığını kullanır. Fakat şablon gölgeler ağ ile eşleştiğinden ve dokunun ağ üzerindeki görünür kısımları kesin olarak eşleşmediğinden, bu tür nesneler için kullanılamazlar. Örneğin, bir ağaçtaki bir yaprak kümesi genellikle dört yapraklı bir yaprak kümesinin dokusu olacaktır. Şablon gölgeler sadece dörtlünün gölgesini gösterebilecektir (ve dörtlü kapalı bir kafes olmadığı için bununla ilgili problemleri olacaktır, ancak bu cevap için atlayacağım küçük bir detay. genellikle etrafta çalışılabilir).
  2. Hassas yumuşak gölgeler yapamam. Doom 3'ün yumuşak gölgelere izin verecek şekilde değiştirildiğini belirttiniz. Bu sürüm, burada en azından yumuşak gölgeler için gölge eşlemesi kullanır. Ayrıca, sert gölgeleri yumuşatmak için ekran teknikleri de gördüm, ancak bunlar her türlü soruna açık.
  3. Saydam nesnelerde gölgeler yapamam. Bunun için geçici çözümler vardır - saydam nesneler için ayrı geçişlerde saydam gölgeler oluşturma ve bunları bir araya getirme. Ama zor geçici çözümler yanında, şablon gölgeler doğası ekrandaki her bir piksel olacak şekildedir ya gölgesinde ya da değil. Bu, daha önce belirtildiği gibi yumuşak gölgelerin olmamasının da nedenidir.
  4. Genellikle "Carmack's Reverse" adı verilen şablon gölgelerinin genel olarak tercih edilen ve en sağlam şekilde uygulanması, Angew'in dediği gibi patentlidir. (Carmack'in patenti alınmadı; Doom 3'ün açık kaynaklı versiyonu için bunun üzerinde çalışmak zorunda kaldı.)

Gölge haritalama lehine

Şablon gölgeleri için özel olarak belirttiğim sınırlamalar olmadan, gölge haritalamanın birkaç ekstra avantajı var:

  1. Ölçeklenebilirlik. Gölge eşleme ne ucuz ne de mükemmel ( ed: ancak şablon gölgeler de ucuz değildir ), ancak gölge haritaların çözünürlüğünü değiştirerek veya gölgeler için filtrelemeyi değiştirerek performans için aslına uygunluk yapmak kolaydır. Bu, farklı sistemler için gölge kalitesini / performansını ayarlamayı nispeten kolaylaştırır. Belirttiğiniz gibi, bu genellikle mükemmel değildir, ancak bunun çoğu oyuncunun algılayıcılığına ve oynadıkları çözünürlüğe bağlı olacaktır (daha yüksek ekran çözünürlüğü gölge blokluğunu görmeyi kolaylaştıracaktır) eşleme). Bazı AAA oyunları ( Kırılma gibi ) gölge haritalama ile sadece doğru filtreleri seçerek ve doğru düğmeleri ayarlayarak harika bir iş çıkarırken, çoğu kişi onu tokatladı ve "yeterince iyi" dedi.
  2. Çerezler (dokulu gölgeler): Bir spot ışığının veya vitrayın dokusunu ekleyin; böylece her türlü gerçek dünya ışık kaynağını taklit edebilirsiniz. Bu arada, şablon gölgeleriyle de yapılabilir, ancak yine de neredeyse tüm gölge haritalama kurulumunu içerir (ışığın dokusunu nesnelere yansıtmak için kullanılan aynı projeksiyon matrisi gölge haritalamada kullanılanlardır).
  3. Saydam gölgeler: Çoğu oyun bununla fazla uğraşmaz, ancak saydam gölgeler gölge eşlemeyle mümkündür. Sadece daha önce bahsettiğim gibi ağaçlar ve çitler gibi alfa kesimleri demek istemiyorum, ama duman ve tozdan kaynaklanan kısmen şeffaf gölgeler demek istiyorum.

Bu listelerin hiçbiri ayrıntılı değil.

Bu nedenle, gölge haritalama ve şablon gölgeleri hakkındaki gözlemleriniz doğru olsa da, şablon gölgelerin eksiklikleri birçok arzu edilen etki için gösteri durdurucudur ve gölge haritalamanın kendine özgü avantajları vardır.


1
Ahhh, bu şeylerin çoğunu düşünmedim ve yapraklar gibi şeffaf dokular oldukça önemli bir konudur. Cevap için teşekkürler!
gnoblin

1
Hiç sorun değil :) Bunlardan bazıları kaçırmak kolaydır!
Jibb Smart

8
Gölge hacimleriyle ilgili ekstra bir sorunun, derinlik geçişinin kameranın gölgenin içinde olmasını sevmediğini ve derinlik başarısızlığının patentli olduğunu söyleyebilirim.
Monica

İyi nokta Angew. Şablon gölgelerini kullanmama nedenlerine, şablon gölgelerini kullanmama nedenini "en büyük teknik neden" olarak kullanmamayı, çünkü patent konusunun kendi başına bir gösteri durdurucu olabileceğini açıkladım.
Jibb Smart
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.