首页 > 编程语言 > 详细

Unity 抗锯齿 SSAA 卷积

时间:2020-03-19 22:37:28      阅读:76      评论:0      收藏:0      [点我收藏+]

卷积的理解

  一个函数在另一个函数上的加权叠加

  技术分享图片

  最形象的理解:一个人被不停的打巴掌,每打一个巴掌,脸会肿起来,并在一定时间内消除,求时间t时,脸肿的程度

SSAA

  SSAA的步骤有两步:计算边缘系数,边缘模糊算法,

  计算边缘系数:效果比较好的是Sobel算法,Sobel定义了x与y方向的两个过滤器,至于为什么是这样的矩形,不懂??

    但是起码知道,它们总体相加趋于0,根据当前点,以及与其相邻的8个点,组成像素的9宫矩阵;

    当下面两个过滤器与像素矩阵做卷积运算,也就大概能得出当前点与周围的差异度

  技术分享图片

 

  技术分享图片

 

   这样当前点的x与y方向的灰度值就是,这个值越大,代表越有可能是边缘,与周围像素差异越大

  边缘模糊算法:  技术分享图片

    该算法是采样当前点周围的点,用上面计算出的Sobel算子,与采样的这些点,做像素插值,得到最终平滑

  之后的结果,效果比较好的是旋转网格采样,当然你也可以自定义,去直接采它周围的4个点,或8个点,让这些

  点的值做平均,再与当前点做插值。下面是旋转网格采样的计算式(x4采样):  

     float4 c0 = tex2D(_MainTex, i.uv_MainTex + fixed2(0.2 / 2, 0.8) / _Size);
	float4 c1 = tex2D(_MainTex, i.uv_MainTex + fixed2(0.8 / 2, -0.2) / _Size);
	float4 c2 = tex2D(_MainTex, i.uv_MainTex + fixed2(-0.2 / 2, -0.8) / _Size);
	float4 c3 = tex2D(_MainTex, i.uv_MainTex + fixed2(-0.8 / 2, 0.2) / _Size);

参考

https://www.zhihu.com/question/22298352

https://www.cnblogs.com/zhanlang96/p/4471769.html

Unity 抗锯齿 SSAA 卷积

原文:https://www.cnblogs.com/hiker-online/p/12527558.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!