简单,但是实际的抗锯齿介绍

FSAA的的简单介绍

   游戏画面中物体边缘怎么老是看上去像是长了很多毛刺一样?FSAA到底是干什么用的?通过什么原理来实现FSAA?上述问题对于硬件初学者来说的确是有些抽象难懂,不过看完以下的介绍,相信大家都会对FSAA有一个全新的认识。

    锯齿的产生
    3D渲染分为顶点渲染和像素渲染两个部分。顶点渲染是构建3D图形基本骨架的过程,相当于为画面勾边,而像素渲染则是为画面着色的过程。着色过程中,像素是构成图形的最小单位,一副画面内每个像素都有它事先规划出来的具体坐标,当然我们把它们视为一个个小方块会更为形象。无论顶点渲染勾勒出来的是一辆汽车还是一栋房子,它都是由无数个小方块组成。既然是方块,那么肯定都是有棱角的,所以3D画面中的物体边缘难免会看上去像长了很多毛刺一样,这就是锯齿现象。
    全屏抗锯齿的原理和不同模式
    FSAA是Full Screen Anti-Aliasing的缩写,即全屏抗锯齿,是一种能够消除画面中图形边缘的锯齿,使画面看起来更为平滑的画面特效技术。它大致可分为以下几种模式。
    SSAA——超级采样抗锯齿
    人眼很难分辨超过300DPI(DPI:像素点每英寸)以上的彩色点。也就是说,一台对角线为15英寸的显示器,如果分辨率为3600×2700的话,那就没有做全屏抗锯齿的必要了,因为人的眼睛没办法分辨这么细的点。
    超级采样抗锯齿(SuperSampling Anti-Aliasing)就是把当前分辨率成倍提高(如当前分辨率为1024×768,开启2倍SSAA后,画面就放大到了2048×1536),然后把画面缩放到当前尺寸的显示器里。这样的做法实际上就是在显示尺寸不变的情况下提高分辨率,让单个像素变得极小,这样就能够大幅减轻画面的锯齿感了。不过由于是对整个显示画面的放大,因此它消耗的显示资源也非常大。
    MSAA——多重采样抗锯齿
    多重取样抗锯齿(MultiSampling Anti-Aliasing)的原理与超级采样抗锯齿相同。不过MSAA是寻找出物体边缘部分的像素,然后对它们进行缩放处理。由于只是对物体的外层像素进行缩放处理,忽略掉了不会造成锯齿的内部像素,所以显卡不会像处理SSAA那样需要庞大的计算量,因此MSAA比起SSAA来更有效率。

【Multisample: In OpenGL, when this feature issupported (it is an OpenGL 1.3 feature.), an additional buffer is added to the framebuffer that includes the color, depth, and stencil values. All primitives are sampled multiples per pixel, and the results are stored in this buffer. These samples are resolved to a single value each time the pixel is updated, so from the programmer's standpoint, it appears automatic and happens "behind the scenes". Natually, this extra memory and processing that must take place are not without their performance penalities, and some implementatins may not support multisampling for multiple rendering contexts.】
    CSAA——覆盖采样抗锯齿
    覆盖采样抗锯齿(CoverageSampling Anti-Aliasing)是NVIDIA G80系列出现时一并出现的抗锯齿技术。它的原理就是将边缘多边形里需要采样的子像素坐标覆盖掉,把原像素坐标强制安置在硬件和驱动程序预先算好的坐标中。这就好比采样标准统一的MSAA,能够最高效率地执行边缘采样,效能提升非常显著,同时资源占用也比较低。
    CFAA——Custom Filter Anti-Aliasing可编程过滤抗锯齿
    这种技术起源于AMD-ATi的R600家族。简单说CFAA就是扩大取样面积的MSAA,比方说之前的MSAA是严格选取物体边缘像素进行缩放的,而CFAA则可以通过驱动程序灵活地选择对影响锯齿效果较大的像素进行缩放,以较少的性能牺牲换取平滑效果。
    全屏抗锯齿的应用
    FSAA实际上是在显示器分辨率未达到一定高度时的辅助显示优化手段,伴随显示器分辨率不断提升,它的作用将越来越小。不过虽然目前显示器分辨已经有了显著提高,可要达到完全的平滑的效果仍然不够。
    SSAA模式理论上应该是效果最好的全屏抗锯齿模式,可是由于它对显示资源占用过高,所以并不实用。而和它效果接近的MSAA也同样遇到了同样的问题。目前最主流的CSAA和CFAA应该是最实用,最有效率的全屏抗锯齿模式。它们不仅有良好的平滑效果,同时对显示资源的占用率也不高。类似GeForce 9600GSO/GT、Radeon HD3850等显卡都能在分辨率较低的DirectX 10游戏中开启这种效果。


要在python中使用OpenCV库来实现图像抗锯齿,可以使用cv2.resize()函数来对图像进行调整大小,并应用图像平滑滤波器。以下是一个示例代码片段: ``` import cv2 # 读取图像 image = cv2.imread('image.jpg') # 调整图像大小 resized_image = cv2.resize(image, None, fx=0.5, fy=0.5) # 应用平滑滤波器 smoothed_image = cv2.GaussianBlur(resized_image, (5, 5), 0) # 显示图像 cv2.imshow('Smoothed Image', smoothed_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个示例中,我们首先使用cv2.imread()函数读取图像,然后使用cv2.resize()函数将图像缩小一半。接下来,我们使用cv2.GaussianBlur()函数应用高斯平滑滤波器来减少图像中的噪声。最后,使用cv2.imshow()函数显示平滑后的图像。 请注意,这只是一个简单的示例,实际的图像处理过程会更加复杂,具体的滤波器和参数选择会因图像的特点而有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [OpenCV图像处理技术(Python)——视频处理](https://blog.csdn.net/weixin_52243766/article/details/118492568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值