OpenGL ES 3.0 快速近似抗锯齿(Fast Appro
2016-07-27 本文已影响1000人
熊皮皮
OpenGL ES 3.0抗锯齿系列文档:
- 多重采样抗锯齿Multiple Sample Anti-aliasing, MSAA
- Coverage采样抗锯齿Coverage Sample Anti-aliasing, CSAA
- 快速近似抗锯齿Fast Approximate Anti-aliasing, FXAA
- 适配性抗锯齿Adaptive Anti-aliasing, AdaptiveAA
文档iOS OpenGL ES 3.0 数据可视化 2:平面数据可视化运用了多重采样抗锯齿。
本文档描述快速近似抗锯齿(Fast Approximate Anti-aliasing, FXAA)在OpenGL ES的具体实现,这属于后处理技术,可用于图像处理领域。FXAA在Ubuntu上测试比MSAA快25%左右,产生的结果图像质量差不多。实现过程也无需硬件支持,可在任何可编程管线GPU接口中实现。
多重采样MSAA虽可产生质量较好的渲染结果,性能却相对较差。MSAA及FSAA性能差的原因是渲染到高分辨率,比如4倍于原分辨率,再降采样到原分辨率,整个过程需要大量计算,从而降低性能。那么,为提高性能,避免渲染到高分辨率是值得考虑的,同时,抗锯齿的目的是模糊阶梯状区域,无论这些锯齿是因何产生,最终是希望其产生柔和的图像,至于非阶梯状区域,无需处理,FXAA就是这个思路的一种体现。FXAA抗锯齿的思想是进行边缘检测,按需进行模糊锯齿。
1、算法描述
- 边缘检测
- 计算模糊方向及长度
- 应用模糊算法淡化边缘锯齿
2、存在的优缺点
优点 | 缺点 |
---|---|
快 | 无法实现时域抗锯齿 |
不依赖硬件 | 部分边缘可能检测不到 |
作为滤镜,适用于任何场合 | 边缘检测错误导致模糊错误 |
可指定区域进行边缘检测,提高性能 | 不同模糊处理误差较大 |
3、具体实现
3.1 检测X邻近像素
存在多种边缘检测算法,比如我之前尝试的Sobel Operator,但是需要考虑其耗时。检测X邻近像素,以更少的计算量得到相对较好的效果,多数FAXX实现都采用了这种处理。
需知道纹理大小。
参考及推荐阅读