在Unity3D中模型渲染时边缘抖动有杂点的问题解决方案

Table of Contents

请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com

项目主美反映了一个问题,即在U3D中,给模型使用了镜面高光的材质,结果模型的边缘有很多白色的杂点,如果换用了普通漫反射材质的话,杂点的明显稍微没那么强烈,如下图,左边是使用了镜面高光材质,右边是使用了漫反射材质。

一开始,我以为是因为模型的Z-fighting问题,即两个带纹理的模型因为太靠近了,导致因渲染时的精度问题而造成模型的穿插。但后来检查了模型,并不存在“靴子里面还套着小腿”的这种情况。所以不是Z-fighting的问题。

后来google了一下,发现老外们也曾经发现过类似的问题。最终有人提出这是一个因为抗锯齿做得不好的问题,解决方案就是给摄像机加一个基于image post process机制的脚本AntialiasingAsPostEffect,然后选用FXAA反走样的着色器。加入之后,效果不错,杂点问题得到了较为明显的改善。

KlayGE引擎开发者,大神龚敏敏认为基于post process处理的技术目前已经是逐渐成为主流。nVidia等公司有很多大牛也提出了不少的算法。比如FXAA算法就是由nVidia的研究员Timothy Lottes提出的算法。所以可以预见不远的将来这项技术会逐渐普及。但目前因为硬件能力的问题,在手机移动平台上,依然要注意使用这种算法的性能问题。

kumakoko avatar
kumakoko
pure coder
comments powered by Disqus