最近捣鼓了一下金属光泽的shader的实现,在一些高模展示的时候或者模型的金属部分的表现的时候,我们需要给模型添加一些金属光泽,表现出一个模型某些金属装备上有一定的反光。今天我主要写一种基于贴图实现的金属反光的效果。不过我没有添加最终的效果,大家可以自己理解一下做一些贴图实现各自的模型效果。
Unity5在更新后推出一种基于物理的shader-standard shader,其中给定了一个参数就是metallic 和
smoothness,可以通过添加一个纹理贴图来实现模型的金属表现。大概查看了一下源代码,主要也是对金属光泽纹理贴图的采样,然后分别赋值。主要的操作代码:
half2 MetallicGloss(float2 uv)
{
half2 mg;
#ifdef _METALLICGLOSSMAP
mg=tex2D(_MetallicGlossMap,uv.xy).ra;#elsemg=half2(_Metallic,_Glossiness);#endif
returnmg
}
分析其实现的原理,其实就是如果有贴图,则采样贴图的r