View Categories

Karmaşık Fresnel gölgelendirici

1 dakika okuma

Genel Bakış #


V-Ray Next’te VRayMtl materyaline metaliklik parametresinin eklenmesiyle bu doku artık geçerliliğini yitirmiştir. VRayMtl materyalindeki metaliklik uygulaması daha doğrudur ve ayrıca parlak yüzeyler için uygun parlak Fresnel hesaplamalarını da içerir.

Bu gölgelendirici, karmaşık kırılma indisine sahip malzemeleri işlemek için kullanılabilir. Gölgelendirici, VRayOSLTex dokusuyla birlikte bir VRayMtl malzemesinde yansıma renk haritası olarak kullanılır ve V-Ray malzemesinin Fresnel seçeneği kapalıdır (bu gölgelendirici kendi Fresnel hesaplamalarını yapar). http://refractiveindex.info/ sitesinde bakır, altın vb. birçok malzeme için ölçülmüş n ve k değerleri bulunmaktadır.

Shader dosyasına buradan ulaşabilirsiniz:

karmaşık_ior.zip

Parametreler #


– kırmızı/yeşil/mavi dalga boyları için n değerleri (örneğin 0,65, 0,55 ve 0,45 mikrometre).

– kırmızı/yeşil/mavi dalga boyları için k değerleri

Gölgelendirici kodu #


Aşağıda shader kodu bulunmaktadır.

complex_ior.osl #
</p>
<div>float fresnel(float n, float k, float c) {</div>
<div>float k2=k*k;</div>
<div>float rs_num = n*n + k2 - 2*n*c + c*c;</div>
<div>float rs_den = n*n + k2 + 2*n*c + c*c;</div>
<div>float rs = rs_num/ rs_den ;</div>
<div></div>
<div>float rp_num = (n*n + k2)*c*c - 2*n*c + 1;</div>
<div>float rp_den = (n*n + k2)*c*c + 2*n*c + 1;</div>
<div>float rp = rp_num/ rp_den ;</div>
<div></div>
<div>return clamp(0.5*( rs+rp ), 0.0, 1.0);</div>
<div>}</div>
<div></div>
<div>shader complex_ior (</div>
<div>vector n=vector(0.27105, 0.67693, 1.3164) [[ string description = "Refractive index for red, green, blue wavelengths (e.g. for 0.65, 0.55, 0.45 micrometers)" ]],</div>
<div>vector k=vector(3.6092, 2.6247, 2.2921) [[ string description = "Extinction coefficient for red, green, blue wavelengths (e.g. for 0.65, 0.55, 0.45 micrometers)" ]],</div>
<div>output color Col_Out = color(0.5)</div>
<div>)</div>
<div>{</div>
<div>float thetaCos = abs(dot(-I,N));</div>
<div>float red=fresnel(n[0], k[0], thetaCos);</div>
<div>float green=fresnel(n[1], k[1], thetaCos);</div>
<div>float blue=fresnel(n[2], k[2], thetaCos);</div>
<div>Col_Out=color(red, green, blue);</div>
<div>}</div>
<p>

Tarafından desteklenmektedir BetterDocs

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir