Rampa gölgeleme veya aydınlatma nedir ve nasıl çalışır? Toon gölgelendirmeden farklı mı yoksa aynı kavram mı? Rampa gölgelendirmesi için blinn-phong veya lambert'e göre spekülerlik nasıl farklı hesaplanır?
Rampa gölgeleme veya aydınlatma nedir ve nasıl çalışır? Toon gölgelendirmeden farklı mı yoksa aynı kavram mı? Rampa gölgelendirmesi için blinn-phong veya lambert'e göre spekülerlik nasıl farklı hesaplanır?
Yanıtlar:
Geleneksel Blinn / Phong gölgelendirmesinde, yüzeydeki normal ile ışığın yönü arasındaki açının kosinüsünü ölçerek bir piksel için dağınık terimi hesaplarsınız. Yani, bu durumda, basit bir gölgelendirici şöyle görünecektir:
float DiffuseCoeff(in float3 pos, in float3 normal, in float3 lightPos) {
float3 lightDir = lightPos - pos;
lightDir.normalize();
return max(0.0, Dot(lightDir, normal));
}
Rampa gölgelendirmesinde fikir, 1D arama dokusu ile dağınık katsayıyı modüle etmektir. Bu dokuya ne koyduğunuza bağlı olarak farklı efektler oluşturabilirsiniz. Bu nedenle, yaygın katsayıyı hesaplamak için gölgelendirici fonksiyonumuz:
texture1D rampTex;
float DiffuseCoeff(in float3 pos, in float3 normal, in float3 lightPos) {
float3 lightDir = lightPos - pos;
lightDir.normalize();
// Map value from [-1, 1] to [0, 1]
float rampCoord = Dot(lightDir, normal) * 0.5 + 0.5;
return tex1D(rampTex, rampCoord);
}
Örneğin, bir hücre gölgelendiricisi uygulamak istersek, yapabileceğimiz bir adım işlevini taklit eden bir rampa dokusu oluşturmaktır:
Aynısı fikri aynasal ışıklandırma için farklı efektler oluşturmak için de kullanabilirsiniz. "Rampa" gölgeleme gerçekten sadece gölgeleme değerini bir doku ile modüle etme fikrini ifade eder.
EDIT : Team Fortress 2 sunumlarında bir rampa gölgelendirici kullanıyor. Bu makaledeki ayrıntıları kontrol edebilirsiniz:
http://www.valvesoftware.com/publications/2007/NPAR07_IllustrativeRenderingInTeamFortress2.pdf
Bölüm 5, "Dağınık Çözgü İşlevi" başlıklı alt bölüme bakın