Neden bazı oyunlar şeffaflık için geleneksel alfa yerine bazı renk taklidi düzenini kullanıyor?


24

Son zamanlarda, saydamlığı / alfa benzetimi GTA IVyapmak için bazı sıralı renk taklidi kullanmak için bazı 3D oyunlar gördüm (örneğin :) .

Çokgenler her zamanki gibi saydam değildir, bunun yerine saydamlığı simüle etmek için yavaş yavaş soldan sağa değişen bir renk taklidi dokusu oluşturur:

görüntü tanımını buraya girin

Etki, hoş değildir ancak ilk başta görmesi şaşırtıcı değildir (geleneksel alfa harmanlanmasına karşı).

Ürettiği görsel estetik etki dışında, bazı oyunların bunu yapmasının herhangi bir nedeni var mı (daha iyi performans, bant genişliğinden tasarruf ya da düşünmediğim başka bir şey)?

İnternette aradım ancak bu teknik hakkında hiçbir şey bulamadım.


Muhtemelen sadece piksel sanat tarzı ile geldi.
MichaelHouse

@ Byte56 Piksel sanat tarzı? GTA IV? Ha?
Nathan Reed,

@NathanReed Heh, GTA IV'de değil. OP son zamanlarda oyunlarda gördüğünden bahseder.
MichaelHouse

1
Tekniği yakın düzleme çok yaklaşan 3D nesneleri solurken alfa harmanlamadan daha keyifli buluyorum.
Andreas,

Yanıtlar:


27

Bu, ertelenmiş gölgeleme kullanan oyunlarda şeffaflığa oldukça yaygın bir yaklaşımdır. Düzgün saydamlık, ertelenmiş gölgelemeyle iyi çalışmaz, çünkü her bir pikselde yalnızca bir yüzeyin verileri (derinlik, normal vektör, renk vb.) Saklanabilir ve düzgün saydamlık, her biri bağımsızlık gerektiren bir pikselde üst üste binen birden çok yüzey içerir aydınlatma.

Oyun motorlarının bununla başa çıkmasının birkaç yolu vardır:

  • Şeffaf yüzeyler için ileri gölgeleme (muhtemelen azaltılmış aydınlatma modelinde) ve opak yüzeyler için ertelenmiş gölgeleme kullanın. Şeffaf yüzeyler, arkadan öne sıralama ile ayrı bir geçişte çizilmelidir.
  • Genellikle piksel başına sadece bir yüzey verdiğinden ertelenmiş gölgelendirme ile çalışan, yanma veya ekran kapısı saydamlığı olarak bilinen renk taklidi kullanın. Bu, özellikle LOD geçişleri için işe yarar, çünkü genellikle sabit bir süre içinde biter, bu durum stippling'in ne kadar görünür olduğunu sınırlar. Bir binadaki cam pencereler için pek iyi çalışmaz.
  • Ayrıca, stippling kullanmak da mümkündür ancak daha sonra, saydamlık piksellerini yeniden birleştiren ve uygun şeffaflıkta bir yaklaşım veren işlem sonrası bulanıklığı uygulayabilirsiniz. Volition, bunu " çıkarılan ışıklandırma " adı altında üçüncü olan Saints Row'da (ve belki de diğer oyunlarından bazılarında) yapar . Bu oldukça hoş görünebilir, ancak işlem sonrası bulanıklığı pahalıdır.
  • Ve elbette, onları kullanan herhangi bir oyunu bilmeme rağmen , düzenden bağımsız şeffaflık yöntemleri var. Onlar şu ana kadar sadece teknik gösteriler için.

Biri bu yaklaşımların bir kombinasyonunu da kullanabilir, örneğin cam pencereler için ileri gölgeleme ve LOD geçişleri için stippling.

Bazı oyunların yumuşak gölgeler için stippling kullandığını da belirtmek gerekir. Bu bir performans değişikliğidir; daha güzel gölgeler, piksel gölgelendiricisinde daha uzun doku örnekleri gerektirir; bu daha uzun sürer, ancak daha az numune kullanarak ve konumlarını rastgele telafi ederek daha iyi sonuçlar alabilirsiniz. Rastgele ofset stippling efekti üretir.


Ertelenmiş gölgeleme tekniğini bilmiyordum (burada açıklanmıştır: en.wikipedia.org/wiki/Deferred_shading ). Ayrıca olası alfa sorunları hakkında da konuşurlar. Şimdi mantıklı ol. Cevap için teşekkürler
tigrou

0

Bu basit bir performans takası. Alfa harmanlama, mevcut renk arabelleğinden okumayı gerektirir, oysa bu tür renk taklidi yalnızca yazma (veya yalnızca atma).

Bu tekniği çoklu örneklemeyle karıştırmak mümkündür, bu da daha sonra kapsama alfa olarak adlandırılır .


Ne tür bir "performans takası" hakkında konuşuyorsunuz? Gölgelendiricinizde bir atma kullanırsanız Early-Z kapanır. Donanımda karıştırma yapılır ve hızlıdır.
Tara,

Aslında bunu motorumda yüksek çözünürlükte uygun bir sahnede test ettim: ALL geometrisi için harmanlamayı devre dışı bırakma özelliğini etkinleştirmek hiçbir performans farkıyla sonuçlanmadı. Nathan Reed'in cevabı doğrudur, çünkü titreme genellikle ertelenmiş görüntülemede kullanılır.
Tara
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.