像素级高光效果计算(三)

来源:互联网 发布:linux tengine 安装 编辑:程序博客网 时间:2024/05/20 02:26

来源:http://www.sunnycrystal.net/showdocs.aspx?id=22

高光衰减贴图(Specular Attenuation Map)的应用:

SpecularMap是相对于物体表面而言,反映的是物体表面不同位置的反光程度,而Spec衰减图则是针对物体材质而言,反映了该物体材质的反光能力,比如,陶瓷的高光区域很集中,高光区的亮斑变化急剧;而一个乒乓球表面的高光区域则变化比较平缓。

具体算法是在第3步经过点乘得到反光度后不再执行第4步(详见像素级高光效果计算(一)),而是根据该反光度去一张2D高光衰减纹理进行高光取样,最终将取样到的高光应用(add)到最终渲染结果上。

这张2D高光衰减贴图只需要做成512X1等高度为1的尺寸(此处为了表述清晰而将贴图变成了256*128大小),就可以用来扫描整个高光段的变化情况。同时,由于高光衰减只有一个通道的数据,高光衰减贴图另外3个通道还可以充分利用来做Diffuse漫反射光的衰减变化,以完成其他特效。

高光衰减贴图在效果产生上及功能上比单纯的Pow()多次乘方方式强大,甚至可以用于卡通渲染等特效,以下综合展示以下SAM的应用效果

以下是一个综合例子《陶瓷质感的红色茶壶》

原理很简单,高光部分采用了高光衰减贴图,为模拟陶瓷效果,高光区域——>非高光区域的交界线比较清晰,Diffuse漫反射部分则用到了Diffuse衰减贴图,可以模拟出阴暗面的反光效果,水壶表面采用了GlossMap( Specular Map ),以模拟出不同的表面斑纹