参考资料:
Marmoset PBR Theory
http://www.marmoset.co/toolbag/learn/pbr-practice/
Sebastien Lagarde Blog
https://seblagarde.wordpress.com/tag/physically-based-rendering/
我用 VRayMtl 做为基础 shader 制作了一个 physically based shader。VRayMtl 上有多个关于 diffuse,reflection 的属性,如果熟练的话用起来并不难, 但是属性多,每个属性再连接各种贴图,效率会低许多。并且这些属性组合后未必“物理”。现在许多渲染器都在简化 shader 里的属性,方便艺术家去使用,制作更为高效,而不是花大量时间精力去学习它们。
我这里将 VRayMtl 原有的 diffuse,reflection 两列属性简化为:diffuse,gloss,metalness,specular 四个属性。对于控制塑料,金属及粗糙表面的材质更为高效简结,同时它也是基于“physically based Rendering”的。
目前它只能实现 diffuse,reflection 的模拟,并且 IOR 曲线是固定的,如果追求“物理”,需要重新创建 fresnel 曲线。diffuse,gloss,metalness,specular 四个属性已经设置好了伽马修正,保证 LWF 正确性。VRayMtl 反射使用的 GGX,这是 Vray3.1 新加入的。
这里的 fresnel 曲线是固定的,只是模拟大部分的情况。具体材质可以网上查阅下该材料的 fresnel 曲线,自己重新加入(其实不同材料的 R,G,B 三个光谱的曲线是各不相同的,目前还都没有考虑进去)。


Metalness

Specular

Gloss
