大数跨境

图形渲染有锯齿怎么办?MSAA大法好

图形渲染有锯齿怎么办?MSAA大法好 怿星科技
2020-09-29
2
导读:怿星又双叒叕来给大家送福利啦~文末附双节双重礼品,星巴克咖啡券限时领取!
文末双重福利放送~


众所周知,走样是图形渲染的一大问题,其主要成因是低频采样无法完美呈现高频信号,因而形成了图形混叠,也就是我们所说的锯齿。


图形转化成图像的过程,是一个将连续信号经过采样转化成离散信号(显示设备的像素是离散的)的过程,之所以产生锯齿现象(失真,走样)就是因为信号的离散性被人眼识别出来。抗锯齿就是通过一些手段来重构丢失的信号。我们通常用的抗锯齿算法实际上是降低锯齿,并非消除锯齿。

 


为解决这些问题,抗锯齿算法应运而生。抗锯齿算法很多,如MSAA(Multi-Sample Anti-Aliasing),通过判断一个像素内不同位置的点是否在三角形内来确定该像素的最终颜色;FXAA(Fast Approximate Anti-Aliasing),是一种图像后期处理,通过一些图像匹配算法找到有锯齿的边界,之后换成没有锯齿的边界,速度非常快;TAA(Temporal Anti-Aliasing),基于图像前几帧的数据对图像进行抗锯齿处理,将样本分布在了时间上,并且在当前帧没有引入额外操作,缺点是对于运动的物体会出现“鬼影”现象。


接下来,我们详细讲述一下MSAA的原理。


MSAA的原理很简单,在每一个像素内进行多重采样并判断采样点是否在三角形内,然后对判断的结果进行平均,从而得到了改像素的颜色。

 


我们来看下面的例子:

 

一个采样点(No AA)

 


严重的锯齿,我们甚至是无法从结果分辨出这是不是一个三角形。

 

2X2超采样

 


Much better! 我们采用了MSAA2X,已经能够分辨出这是一个三角形了。当然,采样点越多效果越好。


接下来,我们需要根据采样点是否在三角形内来求出三角形对这个像素的覆盖率。判断点是否在三角形内很简单,我们只需对三条边分别进行叉积,结果如果同向的话那么说明该点在三角形内。如下图所示,改像素的覆盖率为75%。

 

 


我们对剩下的像素做同样的操作,得到一个完整的结果。

 

 



至此,MSAA已经完成,我们得到了一张锯齿相对较少的图片,作为一种trade-off,我们需要花费额外存储空间来保存采样点的深度信息和颜色信息。


除了上述的这些方法,抗锯齿算法还有很多,欢迎大家交流~



双重假期,双重福利,双倍快乐~


8天的小长假就要来啦,大家一定早早就做好了出游计划,在这里,怿星也给大家准备了一份小礼品哦——星巴克咖啡券。


古往今来的中秋节给人们带来了无尽的思念,月亮已经成为了代表思乡的特定意象,唯美的古诗词里吟咏最多的就是那轮永恒的明月,尤其是中秋的圆月给了我们更多的遐想。接下来就是8天的小长假了,如果你的计划里不曾有故乡,不妨在这里留下你对故乡的思念~


福利一:“月”字飞花令

活动时间:2020年9月29日——9月30日15:00

活动规则:在下方留言区说一句含有“月”字的古诗词来表达对故乡的思念,9月30日16:00随机抽取10名小伙伴每人可获得星巴克咖啡券一张。



福利二:课程半价购


活动时间:2020年9月29日——10月8日12:00

活动规则:有怿课堂指定课程享半价优惠

活动入口:


* 以上活动解释权归怿星科技所有


别犹豫啦,下方评论区见~



【声明】内容源于网络
0
0
怿星科技
让智能汽车研发更高效!
内容 428
粉丝 0
怿星科技 让智能汽车研发更高效!
总阅读1.1k
粉丝0
内容428