未经授权,谢绝转载
Half-Life之父,Valve的Gabe Newells近日对Half-Life 2在一些抗锯齿模式下会出现错误的问题进行了解释。
最近一些发表在玩家社区论坛上的消息显示,目前的主流显卡可能在运行Half-Life 2时出现错误。Gabe Newell在论坛上的回复里确认了这种说法,最新的一些Nvidia和ATI显卡在使用多重采样抗锯齿光滑多边形时,会导致一些贴图出现错误,结果会是整个多边形看上去象裂开了一样。
Newell表示,对于ATI系列显卡可能会很容易的修正这个问题,但是对于Nvidia支持DirectX 9的显卡却没那么简单。由于这种问题只出现在多重采样抗锯齿设置下,因此老的DirectX 8显卡以及超采样抗锯齿设置下不会出现错误。
注:多重采样(multisample antialiasing)和超采样(supersampling antialiasing)是两种全屏抗锯齿算法。
以下是Gabe Newells在社区论坛对于这个问题的回复:
1、这个问题有多糟?
对于目前的多重采样算法来说,你需要在一个多边形的所有边缘上取样,而结果可能导致连同另一个多边形的light map一起进行采样。
这的确是个老问题,包括Quake 1、Quake 2、Quake 3、Daikatana、Sin、Elite Force、 Half-Life,还有XBOX版Counter-Strike都有这个现象,以及任何其他使用light map的游戏都会在多重采样抗锯齿算法下产生类似错误。
当light map被错误的采样后,一些无用的贴图出现在多边形的边缘上,看上去多边形的边缘上会多出一些或明或暗的线条来。
Gary McTaggart为了这个问题给我们发了电子邮件,因为他是个对图象质量要求很高的狂热分子。这当然已经不是个新问题了,如果你打开抗锯齿模式运行任何一个使用light map的游戏都会见到那些错误的贴图。
这种现象可能会在Half-Life 2里经常出现,虽然我们已经消除了很多其他的贴图问题,因为场景中会有很多很多不断变化的光源。
基于这种观点,不对mipmaps做Tri-linear过滤是非常糟糕的。
2、可能的解决方案是什么?
采用Centroid采样算法
用Pixel Shaders固定材质的坐标
Centroid采样算法不会出现类似多重采样时出现的问题,ATI从Raedon 9000系列开始已经支持这种算法。
另一个窍门是使用不支持Centroid采样算法的Nvidia显卡,基本上只要牺牲一些pixel shader带宽来固定住材质坐标就可以了。
基于这两种方法,多重采样抗锯齿的问题应该会在运行Pixel Shader 2.0的DX9级别显卡上得到解决。
3、解决后的效果如何?
我们将发布两个不同抗锯齿效果对比的演示视频。
网友评论