图形学 - 深入理解多重采样(Multisampling)

本文介绍了多重采样(Multi-sample Anti-Aliasing, MSAA)技术,阐述了MSAA如何通过多次采样提高图像质量,但也增加了性能开销。MSAA将每个像素细分,进行多次插值计算,最后汇总得到平滑的图像边缘。内容涵盖了MSAA的基本概念、对渲染流水线的影响,包括光栅化阶段的多重插值、片段着色阶段的per-sample shading以及Blitting过程。文章强调了在性能与质量之间做出合理选择的重要性。" 113610400,10546671,MySQL批量插入数据导致的锁阻塞问题解析,"['数据库', 'MySQL', '并发控制', '事务处理', '数据库优化']
摘要由CSDN通过智能技术生成

转载请标明出处:http://blog.csdn.net/yunchao_he/article/details/78354528


Multi-sampling或者说Multi-sample Anti-Alias (简称MSAA)是一种抗锯齿的技术,它通过在一个像素上进行多次采样多次计算并最终汇总(Resolve to single-sample),可使绘制的图像边缘更加平滑。通过这种方式绘制出来的图片质量更高,显得更真实。但同时,它对绘制的性能也会产生负面影响。所以,是否使用这项技术,需要开发者在图片质量(Quality)和性能(Performance)之间进行权衡。那么,MSAA到底对整个绘制流水线(Rendering Pipeline)产生了什么影响?本文将进行深入分析,从而帮助自己及读者在相关问题上有更深的理解,从而做出正确合理的决策:比如在开发过程中是否使用MSAA。



MSAA简介

首先简单讲一下什么是MSAA。MSAA就是把每个pixel(或者说fragment)细分为多个sub-pixel,比如分为4个、8个、16个甚至32个sub-pixel,分别对应MSAA4, MSAA8, MSAA16, MSAA32。我们知道,图形学里,每个piexl占据屏幕上的一小块矩形网格。比如对于1920*1280的显示器,就有1920*1280个小的矩形网格,每个网格都是一个pixel。而MSAA则把每个小的矩形网格再进行细分。比如MSAA4/MSAA8分别把每个piexl再分为4个或者8个sub-pixel,其中每一个sub-pixel称为一个sample。而正常pipeline里的所有per-pixel(per-fragment)的操作,打开MSAA后,理论上都可以per-sample来处理。这样,每个pixel里的多个sample, 都可以独立进行插值、独立执行fragment shader,计算出独立的颜色值、深度值。然后求出同一个pixel的所有sample的算术平均值(也就是resolve to single sample),就得出这个pixel的最终颜色。通过这种方式,图形边缘的绘制会更精细更平滑。当然,对于1920*1280的网格,MSAA4相当于在处理1920*1280*4个网格,计算量(以及显存里某些变量的存储空间)也是成倍增加。



MSAA分析

MSAA在Rendering Pipeline的过程中,可能的影响有以下几方面。


1)光栅化阶段(Rasterization)

光栅化阶段一个重要的工作就是插值计算(Interpolation),所以多重采样作用到这个阶段主要是多重插值。 


这个阶段的multisampling可以分为几种,一种是重量级的多重插值,一种是定制化的多重插值,还有一种是轻量级的多重插值。当然,这只是我个人的简单分类,具体区别详见下文。



先讲重量级、重负载的多重插值。我们知道,在Rasterization阶段,需要对fragment shader阶段的所有inputs进行插值计算。可能的插值计算变量包括但不限于颜色,法线,纹理坐标等等。比如上图手绘的图片里,对三角形的绘制,开发者通常只设置顶点信息。这里以颜色为例,三个顶点A/B/C的颜色分别为蓝色、黑色、红色。三角形覆盖的区域(网格区),都是GPU在Rasterization阶段根据各个像素所在位置,进行插值计算,得出各个pixel/fragment的颜色值。这个颜色值显然是三个顶点颜色值的混合。理论上,凡是需要per-pixel插值的变量,也可以进行per-sample插值,也就是多重插值。注意,

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值