HLSL Yarı Saydam Plastik Gölgelendirici


12

İçinde renkli bir ışık bulunan beyaz plastik bir nesneyi çoğaltmak için bir gölgelendirici üretmeye çalışıyorum. Yarı saydam olacak bir gölgelendiriciye sahip olarak ve nesnenin içine bir ışık koyarsam, ışık içinden geçecek veya içerideki bir ışığın etkisini taklit eden bir gölgelendiriciye sahip olacaktır.

Benim için olan efekt, bu resimlere benzer bir lamba gölgesinden geçen bir ışık gibidir:

alternatif metin alternatif metin alternatif metin

İdeal olarak ışığın gücünü ve rengini kontrol edebilmek için ışığın güzel parlak fluro renklerinde dönmesini ve dönmesini sağlayabilirim

Nereden başlayacağımdan emin değilim!

Sorum şu ki, böyle bir gölgelendirici üretmek için araştırmam gereken teknikleri biliyor veya başlangıç ​​noktası olarak kullanabileceğim aynı / benzer gölgelendiriciye bir örnek var mı? Veya işi yapabilecek bir gölgelendirici sağlamak isteseniz bile

Yanıtlar:


10

Bu, "Alt Yüzey Saçılması" olarak bilinen bir etkidir.

Gerçek zamanlı kullanım için uygun olan "GPU Pro: Gelişmiş Görüntü Oluşturma Teknikleri" kitabında bunun örnek bir ekran uygulaması vardır.


0

HLSL bilmiyorum, bu yüzden kesin bir cevap veremem. Temel olarak yapabileceğiniz şey, ışık kaynağından uzaklığa bağlı olarak her parçanın rengini ayarlamaktır (herhangi bir otomatik gölgeyi yok saymak).

Sahte kodda şöyle bir şey olurdu:

fragment_color = light_intensity * saydamlık_renk * lightsource_color / (zayıflama * distance_to_lightsource ^ 2)

Işığın daha fazla yayılması için kareye ek olarak doğrusal bir zayıflama faktörü de kullanmak isteyebilirsiniz.


0

Işığın hareket edebilmesi ve nesnenin deforme olması / canlandırılması gerekiyor mu? Bunlardan hiçbiri böyle değilse, bunu yapmanın ucuz bir yolu, nesneye ışık için maske görevi gören tek renkli bir doku haritası uygulamak olacaktır; gölgelendiricide bu dokuyu örneklersiniz, geçerli açık renk / güçle çarpar ve çıktı rengine eklersiniz.

Açık takip sorusu, bu dokuyu nasıl oluşturacağınızdır. Bir sanatçıya erişiminiz varsa veya dokuları kendiniz boyayabilirseniz, boyamayı deneyebilirsiniz. Ayrıca raytracing veya benzeri bir araç kullanarak çevrimdışı bir araç tarafından oluşturulabilir. Bununla birlikte, bunu nasıl ayarlayacağınızı ayrıntılı olarak anlatacak ışın izleme araçlarına yeterince aşina değilim.

Farklı bir yaklaşım, normal Lambert dağınık gölgeleme denkleminde normal olan ters yüzeyi kullanarak, arkasındaki ışığı örnekleyen bir gölgelendirici yazmak olabilir; 0,5 gibi bir maske faktörü ile çarpar ve çıktı rengine eklersiniz. Bu, ışığı veya geometriyi dinamik olarak hareket ettirmeye izin verir ve doku gerektirmez, ancak muhtemelen çevrimdışı bir render kadar iyi sonuçlar elde edemezsiniz.

Yeraltı saçılımına gelince: Burada tam olarak istenen şeyin bu olduğunu düşünmüyorum çünkü gördüğüm grafikler için tüm SSS algoritmaları , yüzey dışından gelen, biraz etrafta seken ve tekrar çıkan ışık için tasarlandı, burada ışık içeride .

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.