Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 【总结】MSAA中黑线问题的出现原因以及解决方案 Reply To: 【总结】MSAA中黑线问题的出现原因以及解决方案

#3519 Score: 2
戴皓天
Participant
8 pts

因为我在这个问题上跌了很多跟头,浪费了太多太多时间,所以在这里整理一下我自己的错误以及分析一下对问题的理解,希望能够帮到还不理解的同学

先看下错误示例:
见附件第一张图
(如果图挂了,可以按顺序查看附件的图片)

产生原因
“黑线”其实并不是完全的“黑色”,我们先来看几个图
见附件第二、三、四张图

通过RGB值的测量,我们可以发现,所谓的“黑线”的黑色,只不过是颜色对比的产物而已
实际上,根据第三张图,经过RGB值的测量,其实A点,也就是绿色三角形的边缘颜色其实和“黑线”颜色一样
那么问题就显而易见了:
是因为在边缘处只渲染了绿色三角形,而没渲染蓝色三角形
那么产生的原因实际上是深度检测的精度不够,
假设我们渲染是从近到远渲染,且绿色三角形近,蓝色三角形远
则此时是先渲染绿色三角形再渲染蓝色三角形
因为在使用MSAA但并没有维护每一个子采样点的深度时,深度检测是以像素为单位的,而不是以子采样点为单位,所以此时即使在两三角形相交处那些来自蓝色三角形的像素的子采样点是处在三角形内部,那么由于深度检测的过滤,也会因为相交处蓝色三角形的像素深度小于相交处已经渲染完成的绿色三角形的像素而被放弃渲染,留下的就只是绿色三角形原本就渲染完成的边缘,也就是绿色和黑色的“混合”
所以看起来会是有一条“黑线”

This post has received 2 votes up.
Attachments:
You must be logged in to view attached files.