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

#3552 Score: 0
戴皓天
Participant
9 pts

你这么一说我发现了我之前颜色写入的一个bug,我之前是直接frame_buffer+=color/通过深度和三角形测试的子采样点个数所以效果才会这么好,边界处显得很白,看起来像是(蓝+绿),实际上并不是,只不过是巧合而已
如果把两个三角形深度对换一下就能发现问题了

实际上应该是frame_buffer = frame_buffer/(4-通过深度和三角形测试的子采样点个数)+color/通过深度和三角形测试的子采样点个数这样才对

不过这样的话解决了渲染顺序的问题,不论是哪个三角形在前都能有效果,但是边界处效果就不是那么好了,比如我先渲染近的绿三角形再渲染远的蓝三角形,最后边界处的颜色是(蓝+绿+黑)
这样看起来还是有“黑线”,但是不是那么黑,只是通过对比看起来感觉有一点偏黑,不知道该怎么解决了,但是我这样是基本按照老师的意思做了。。。有点头疼,这种淡淡的黑线应该是没法解决的吧

ps:因为先写进颜色缓存的是近的三角形,在边界处就是(绿+黑),然后再渲染蓝色,那肯定就是(绿+黑+蓝)了,根据生活经验,交界处应该是(绿+蓝)才对,不应该混入黑色,我是不知道该怎么解决了。这个现象跟渲染顺序有关,我这里的话如果先渲染远的再渲染近的就不会有这个混合的问题,当然这个也可以用我这里的说法解释,因为先渲染远的再渲染近的的话,交界处本来就没有黑色混入,也就是渲染远处时本来就就是(蓝色),(蓝+黑)的部分都被覆盖掉了,所以不会有淡淡的“黑线”

  • This reply was modified 4 years ago by 戴皓天.