Işık Yayılım Hacimleri: Hacim verilerinin anizotropik filtrelenmesi


9

Burada ve burada detaylandırılan gerçek zamanlı yaygın küresel aydınlatma için Basamaklı Işık Yayılım Hacimleri algoritmasını (henüz dolaylı gölgeleme yok) uyguladım . İyi çalışıyor ama yine de özellikle bir eser düzeltmeye çalışıyorum.

Kısa özet

Algoritmanın nasıl çalıştığını zaten biliyorsanız bunu atlayabilirsiniz.

Algoritma, aydınlatma bilgilerini bir 3B ızgarada küresel harmonikler şeklinde depolayarak çalışır, burada ızgaranın her hücresindeki verilerin başlangıçta genişletilmiş bir gölge haritası ( yansıtıcı gölge haritası) oluşturması) derinliğin yanı sıra renk ve normal bilgileri de içerir. Fikir, esasen bir ışık kaynağı tarafından görülen tüm piksellerin dolaylı aydınlatmanın ilk sıçramasının nedeni olmasıdır, bu nedenle gerekli bilgileri gölge eşleme için kullandığınız normal derinlik tamponunun yanında saklar ve 3D ızgarayı başlatmak için tüm verileri örneklersiniz . 3D ızgaradaki bilgiler daha sonra (her yineleme için) bir hücredeki bilgileri 6 doğrudan komşusunun tümüne (yukarıda, aşağıda, sol, sağ, üst, alt) çoğaltarak tekrarlanır. Izgaradaki bilgileri kullanarak sahneyi aydınlatmak için, sahnenize tam ekran geçişi uygularsınız ve her bir rasterleştirilmiş piksel için rasterleştirilmiş yüzeyin dünya alanı konumuna sahip olursunuz (örneğin, ertelenmiş gölgeleme içindeki G-Tamponlarından). ekrandaki belirli bir pikselin ızgara hücresine ait olduğunu bilir.

Bu çoğunlukla iyi çalışıyor, burada simüle edilmiş GI'siz iki görüntü ve sadece sabit kodlu bir ortam terimi ve yanında LPV algoritması olan bir görüntü var. Yüzeylerde renkli yansımalara, daha iyi derinlik detaylarına vb. Dikkat edin.

resim açıklamasını buraya girin

Sorun

Aydınlatma aşaması sırasında hücrelere bakarken, hücrenin merkezi, komşu hücreleri ve gerçek aranan doku koordinatı arasındaki verileri sorunsuz bir şekilde enterpolasyon yapmak için üç boyutlu enterpolasyon (donanım doku filtreleri kullanılarak) kullanılır. Esasen, bu enterpolasyon, bir hücrenin ortasındaki aydınlatma bilgilerinin, bilginin bakıldığı merkezin etrafındaki beton piksellere yayılmasını taklit eder. Bu gereklidir, çünkü aksi takdirde aydınlatma çok kaba ve çirkin görünecektir. Bununla birlikte, üç boyutlu enterpolasyon, bir hücrede kodlanan aydınlatma bilgilerinin ışığın yayılma yönünü hesaba katmadığından (hatırlayın, küresel harmoniklerde olduğunu unutmayın), ışık yanlış bakılan piksele yayılabilir. Örneğin, hücrede kodlanan parlaklık yalnızca (1,0,0) ("

Bu, ızgaradaki hücre boyutları sahnedeki yüzeylere kıyasla büyük olduğunda duvarların yanlış bir şekilde kanamaya neden olur (bu, ışığı mümkün olduğunca az yayılma yinelemesiyle sahneye yaymak için büyük hücrelere ihtiyacınız olduğu için). Öyle görünüyor:

resim açıklamasını buraya girin

Gördüğünüz gibi (sağ üstteki gölge anahatlarından), sahne, sahnenin üstündeki sol üst taraftaki yönlü bir ışık kaynağıyla aydınlatılır. Ve atriyumun dışını ve içini ayıran sadece bir hücre olduğundan, ışık kanar ve soldaki duvar yanlış aydınlatılır.

Gerçek soru

Yazar bunu düzeltmek için bir tür manuel anizotropik filtreleme önermektedir. Şu anda normal n yüzeyinin yönüne doğru (şu anki hücreden örneklenen SH katsayılarını varsayıyorum) bir radyasyon gradyanı veriyor:

resim açıklamasını buraya girin

Ve devletler

Böylece, ışıma yönlü türevini gerçek ışıma yönü ile karşılaştırarak, ışıma dağılımının bu nokta için üçgensel enterpolasyonundan daha ileri başlayıp başlamadığı hesaplanabilir.

Sorularım):

Denklemde, c (x) fonksiyonu, (x) noktasındaki SH katsayıları gibi görünmektedir. Dolayısıyla, parlaklık derecesi, x - (n / 2) ve x + (n / 2) noktalarındaki SH katsayılarının ağırlıklı farkı olarak normal bir sayısal türev gibi hesaplanmış gibi görünmektedir. Ancak, bağlamımda c (x) nedir? Şu anda c (x) 'in yüzey konumunda (x) trilinear olarak enterpolasyon katsayılarına atıfta bulunduğunu varsayıyorum, ama emin değilim, çünkü bunun size yönlü hakkında daha fazla bilgi vermesi gerekiyor. SH katsayılarının dağılımı.

Peki bu degrade daha sonra hücreden örneklenen aydınlatmanın yüzeylere nasıl uygulanacağını değiştirmek için nasıl kullanılır? Yazar sadece "ışıma yönlü türevini gerçek ışıma yönü ile karşılaştırma" yazıyor, ama bu oldukça belirsiz.

Bir "merkezi fark şeması" 'ndan bahseder ve SH slayt katsayılarının merkezi farkları için bu slaytlara atıfta bulunur ve degradenin türevlerini gösteren bu makaleye referansta bulunur , ancak şu anda onlardan herhangi bir yararlı sonuç çıkaramıyorum.

Yanıtlar:


4

Merkezi fark, bir AMD gazetesi tarafından, bir tünelde kristal uçan bellekle bir miktar demo yaptıkları zaman ortaya çıktı.

cFonksiyon yüzden sadece mevcut normale kullanarak SH değerlendirmek, kesin bir şey, sadece bir fikir, örneğin, parlaklık olmak zorunda değil.

Öyleyse bununla yaptığınız şey, ampirik bir faktör kullanarak, bu diferansiyeli kullanan ışıltıdır. Ancak, yalnızca diferansiyel ışık akışının mevcut normalinizden uzaklaştığını ima ederse aşağı vurursunuz.

Temel olarak fikir, duvarınızın normaline ters yönde giderseniz, ışık akışının yavaşça azaldığı gerçeğini ampirik olarak tespit etmektir, çünkü havada (diğer tarafta) yayılır. Ancak normalinizin önünde biraz araştırma yaparsanız, ani bir akı damlası görürsünüz, bu, şimdi örneklediğiniz hücrenin aslında bir sızıntı olduğu anlamına gelir.

Vakaların% 70'inde çalıştığını buldum, ancak dikkatsizce uygulanırsa, hafif bir sızıntı içeren çok karanlık alanlarda çok garip kara delik efektleri veya renk tonu değişimleri (pembe, yeşil ...) yaratabilir. Bunun nedeni, her renk için 3 LPV'ye sahip olmanızdır, merkezi fark farklı sonuçlar verme eğilimindedir. Yeteneğiniz varsa, merkezi fark damperini değerlendirmek için gri tonlama hafifliğini kullanmayı deneyin ve daha sonra tüm renk kanallarında ortak bir azaltma faktörü kullanın.

Bu kesmek olmadan, normalde zaten çok fazla parlaklık almamalısınız, çünkü SH'yi değerlendirmek için kullandığınız normal, akı yönüne karşıdır. Ne kadar fark ederseniz edin, LPV'de kullanılan 2 bantlı SH aslında yeterli değildir ve bu güçlü sızıntıları veren güçlü bir DC bileşenine sahiptir. Bu yüzden LPV, LPV farkında bir sanatçı tarafından sıkı bir şekilde kontrol edilmeyen, her duvara sızıntıları azaltmak için minimum kalınlık sağlayacak geometriler için pratik değildir.

Ayrıca bazı şirketler (kare enix gibi), geometri hacminin size vermesi gerektiği gibi sızıntıları öldürmek için elle tasarlanmış engelleyici duvarlar kullanır. (geometri hacmi sızıntıları azaltmaya yardımcı olur, ancak sahneyi seslendirmek için RSM retroprojeksiyonu çoğu durumda çok kısmi olur ve sızıntıları daha da kötüleştirdiği için sızıntılara daha da kötü bir görünüm veren LPV hücre seviyesinde kenar yumuşatma oluşturur).

Sadece aşağı indirebilir ve LPV'ye nihai dolaylı ışık üzerinde daha az güçlü bir son kelime vererek sorunları hafifletmeye çalışabilir, ağırlıkla (0,5?) Sabit bir terim kullanabilirsiniz ve LPV, dolaylı olarak kalan 0,5'e katkıda bulunabilir. Işık. Ayrıca geometri hacmini uygulamaya çalışın, sorunu azaltacaktır. Ve son olarak merkezi fark.


sabit ortamın% 50'sinde bir gelişme olarak, "ortam BRDF" (tri-Ace ile) olarak adlandırılan bir teknik kullanılabilir.
v.oddou
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.