Gölge Eşleme ve Saydam Dörtlüler


10

Gölge eşleme, gölgelerin nerede çizilmesi gerektiğini hesaplamak için derinlik arabelleğini kullanır.

Benim sorunum, gölgeler atmak için yarı saydam dokulu dörtlüler istiyorum - örneğin reklam panoları. Derinlik değeri, sadece görünür kısımlara değil, dörtlüde de ayarlanacağından, dört gölge oluşturacak, ki bu benim istediğim şey değil.

Şeffaf dörtlü lerin gölge eşlemesini kullanarak doğru gölgeleri oluşturmasını nasıl sağlayabilirim?

Yanıtlar:


15

Sorununuz 1 bit alfa ile oluşturmayı çözecektir. Bu, oluşturulmamış bir kaynak doku alfa belirttiğiniz anlamına gelir (çoğunlukla 0,5).

Işıktan derinliği korumak ve talimatı kullanmak için kendi gölgelendiricinizi yazmalısınız discard. Atma hlsl, glsl ve cg'de de mevcuttur. Yalnızca piksel / parça gölgelendiricide bulunur ve oluşturma işleminden backBuffer'a ve z arabelleğine doğru parçayı atar.

if (texSample.a < 0.5)
   discard;

Avantajı, 2. geçiş oluşturmayı değiştirmenize gerek kalmaması, sadece ışığın derinliğini oluşturmasıdır. Ayrıca işe yaradığını kanıtladım: 1 bit alfa

Birden çok saydam nesne için doğru gölgeler oluşturmak istiyorsanız, derinlik soyma kullanılarak oluşturulan derinlik ve opaklık bilgileriyle birden fazla derinlik dokusu kullanmanız gerekir. Duman, saç vb. İçin Derin opaklık veya Fourier opaklık haritaları en iyi çözümdür (çoğunlukla Fourier opaklık haritalarını öneririm)

edit: Ben sadece kredi eklemeyi unuttum fark etti. Her zamanki gibi. Ağaç modeli bazı lowpoly, bir doku ve ücretsiz bitki örtüsü modelleri arıyorsanız, harika olan loopix projesinden .


6

Programlanabilir boru hattı ile @notabene komutunun nasıl verildiğini yapmalısınız. Ancak, herhangi bir gölgelendirici yazmadan sabit boru hattı ile yapmak kolaydır. OpenGL'de glAlphaFunc istediğiniz şeydir. Örneğin:

glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.5f);

1
Temiz. Sabit boru hattından nefret ediyorum. Bu yüzden bu şeyleri gölgelendirici olmadan yapabilen herkese gerçekten hayranım. Kesinlikle +1.
Notabene

@Notabene Kullanımdan kaldırılmış teknolojinin kullanılması konusunda kesinlikle takdire şayan bir şey yok.
Tara

2

Gölge haritası üretimi için özel bir gölgelendiriciye ihtiyacınız vardır, böylece piksel / parçanın saydamlığı belirttiğiniz eşik değerden daha büyük olduğunda geçerli bir tıkayıcı çıktısı alabilirsiniz. Bu, derinlik haritası çokgen başına değil piksel başına oluşturulacaktır.


-1

Bunu yapmayı düşünebileceğim tek yol, ayrı bir derinlik haritası dokusu oluşturmak, ağaçları içine oluşturmak, alfa! = 0 olduğu derinlik için çıktı vermek, aksi takdirde derinlik = 1 çıktılamak, sonra bu gölge haritası dokusunu sahne gölge haritası dokusu ile birleştirmektir. yeterince basit olmalı; iki değerden en küçüğünü almanız ve bunu son derinlik haritasına ayarlamanız yeterlidir.

Bu, karıştırma siparişlerini çözmez; bir alfa dokusunun arkasına bir derinlik çıkarırsanız, dörtlü üzerinde doku ile oluşturduğunuzda geçersiz kılınır, bu nedenle bu efektin çalışması için her dörtlü ayrı ayrı derinlik haritası dokusuna dönüştürmeniz gerekir ...

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.