对应VP的ePSXe视频插件不完全研究
2005-1-3
by 南燕

原讨论贴 http://www.enixfans.net/bbs/ShowPost.asp?id=14160
http://www.enixfans.net/bbs/ShowPost.asp?id=14319

看到最近论坛上,许多模拟器一族对使用ePSXe模拟器来模拟VP的画面以及兼容性等问题争论不休。而很多玩家都以“VP是2D游戏,2D游戏用2D插件”,“3D画面最精美”等理由武断地下结论。这些争论不但让老玩家怀疑自己的机器,更让新玩家在使用ePSXe的时候无所适从。

作为一名VP Fans & 图形硬件爱好者,我想在这里以自己微薄之力,对现在流行的各种ePSXe插件模拟VP的效果进行一个不完全的研究,以帮助各位模拟器一族在玩VP的时候能对自己到底该使用什么样的插件,怎样设置更得心应手。如果您在看完后能对ePSXe的众多插件有个大致的了解,知道什么样的插件更适合自己,那么就是对我最大的赞扬。






—————————————————————我是分割线———————————————————


测试平台:
硬件:
CPU :AMD Athlon 2600+
内存:KingMax DDR400 256M
主板:ASUS A7V8X
显卡:OnData GeForce FX 5700 标准版
软件: Windows XP Service Pack 2

使用的显卡驱动版本:
公版 WHQL 61.41版



使用的模拟器:
ePSXe 1.6.0

使用的所有插件:

视频:
P.E.Op.S. Soft Driver 1.16
Pete's OpenGL Driver 1.75
Pete's OpenGL2 Driver 2.6

音频:

enixfans推荐的Eternal SPU 插件 1.41(本次研究主要针对视频,因此音频插件使用推荐设置)





———————————————————我是分割线—————————————————————



在研究前需要说明的是,虽然VP严格的来说属于2D回合制RPG,但如果在玩游戏的时候稍微细心的话就会看出来,VP的最大亮点——战斗系统,实际上是使用2D和3D相结合的方法来表现的。即使在非战斗时的2D场景,很多地方也是靠3D来实现的。所以3D的表现力是OpenGL插件与Soft Driver相比较的一个相当重要的砝码。因为本文仅仅是针对各个视频插件如何设置才能达到VP的画面在该插件上表现的顶峰,所以如果使用本文所推荐的配置造成速度降低甚至无法游戏的话,请自行降低画质标准(对不起各位使用老爷机的朋友们了)。


首先,请看一下本次研究所要针对的几种设置方法。


1:P.E.Op.S. Soft Driver Config(No Effect)


2:P.E.Op.S. Soft Driver Config(With Super2xSal)


3:Pete's OpenGL Driver 1.75(No Effect)


4:Pete's OpenGL Driver 1.75(With T-Filtering)


5:Pete's OpenGL2 Driver 2.6(Full Effect)


这3种插件可以说是现在使用得最多的插件了,其中大部分选项,比如Software的Dithering等都是越高画质越好,但是也有不尽然的。很多朋友仅仅是尝试了一下其他插件将所有选项调至最高时的画面,就断然放弃;还有些朋友仅仅将选项调至最高就开始玩。其实稍微改变一下某些关键配置,就可以令原本无法接受的画面变成另外一个样子,这些关键配置也是我们今天要重点讨论的2xSal和Texture Filtering。

请看下面两组图


1-1:PsSoft001


1-2:PsSoft001(With Sal)


1-3:PsOGL001


1-4:PsOGL001(With T-filering)





————————————————我是分割线————————————————————


2-1:PsSoft002

2-2:PsSoft002(With 2xSal)

2-3:PsOGL002

2-4:PsOGL002(With T-filtering)



以看到,在开启2xSal后,Software模拟的画质有了明显的提升(你要跟我唱反调说画面难看了我也没话说)。

同时,可以清楚看到Software(No Effect)和OpenGL(No)在画面上相当大的区别。造成这种差别的原因想必大家都很清楚,因为Software是用CPU既时演算的方式来生成3D画面,速度和精美程度都不可能比得上通过硬件加速的OpenGL,但是为什么在OpenGL中,2D画面会变成相当粗糙的马赛克呢?这就要牵涉到3D技术的根源了。

现在的3D技术,是基于一种骨架+材质的方法构建的,首先生成模型,然后在模型表面覆盖上材质。而2D画面一般不经过加工而直接显示在屏幕上,问题就出在这里。因为2D技术发展至今已经很成熟了,在2D环境下实现边缘抗锯齿是非常简单且效果相当不错的,但在3D环境下,民用级显卡的抗锯齿技术即使到今天也只有一个基于像素的FSAA(Full Screen Anti-Aliasing,全屏幕抗锯齿),在3D环境下2D图形一般都是用作材质贴在3D物件表面的,很少有直接出现在屏幕上的,所以3D环境下的2D抗锯齿到现在依然是一片空白。这才是马赛克的成因。

难道我们就没有办法了吗?当然不是,虽然无法在OpenGL环境下直接对2D图进行加工,但我们可以采取一些方法让2D图在3D环境下可以被加工。最直接的方法就是将2D图变成材质(Texture),再对其强制进行材质填充过滤(Texture-Filtering)。大家可以看图4,在打开T-filtering后,OpneGL的画面有了相当的提高,人物内部的锯齿几乎完全消失了,而且地面的表现效果也有相当的提升。但是这样做也是有代价的,因为在3D环境下经常有画面的拉伸,3D物件表面的材质必须在镜头拉近的时候保证不会出现马赛克,因此必须将材质作一些相当复杂的硬件处理,这就造成了经过处理的2D图形会有一定程度的失真。而材质是必须帖在3D物件表面的,所以必须在2D人物所在的位置构建一个厚度最小且透明的多边形,再将经过材质填充过滤的2D图形帖在表面,所以这样不但在2D画面较多时(大量2D人物+2D场景)加重了显卡的负担,也使经过T-filtering的人物看起来更像一张纸片(实际上那就是纸片)。另外,由于材质填充过滤时一般会为了对3D模型表面进行贴图而预留黑边,所以才需要选择“Removes black borders”。



3-1:PsSoft003

3-2:PsSoft003(With 2xSal)

3-3:PsOGL003

3-4:PsOGL003(With T-filtering)



除了锯齿外,2D和3D之间还有一个重要的差别就是发色数,也就是俗称的16位色深和32位色深。请注意上面一组图中的绿色旋涡,可以明显看到,经过T-filtering后的OpenGL画面已经大大超过Software模拟的画面。虽然经过2xSal后,Software的画面有了些改观,但是仍然无法和OpenGL相比,除了经过线性过滤的3D材质外,还有一个重要的因素就是发色数。无论怎么努力,单凭Software Emulation也不可能完美地将无色阶的画面表现出来,最多也就是靠2xSal达到一种近似无色阶的效果,实际上仔细放大了看,经过2xSal处理的画面仍然是有色阶的,只不过稍难分辨出来,在3dfx称霸天下的那个时代,很多人都认为32bit色是完全无用的,实际上在这两组图里面已经很清楚的将差距表现了出来。

4-1:PsSoft004

4-2:PsSoft004(With 2xSal)

4-3:PsOGL004

4-4:PsOGL004(With T-filtering)




5-1:PsSoft005

5-2:PsSoft005(With 2xSal)

5-3:PsOGL005

5-4:PsOGL005(With T-filtering)



随着时间的推移,拥有高端显卡的朋友也越来越多,看着手头越来越酷的显卡,用来跑VP简直是杀鸡用牛刀,能不能拿它来做更酷的事情呢?答案是可以!事实上,只要你的显卡支持D9,就可以用D9特有的Pixel/Vertex Shader 2.0来达到以前做梦都不敢想的效果。Pete's OpenGL2 Driver 2.6在PS 2.0引擎支持下所带有的Full Screen Smoothing(全屏幕滤涂)可以将2D画面和3D画面完美地整合在一起,虽然具体的技术因为非常复杂我还不是很清楚,不过画面的提升是不争的事实,想要实现这一切也很简单,支持D9……因为时间的关系,我并没有测试Pete's OpenGL2 Driver 2.6在非D9卡下的表现,也没有调整画质,因为如果买了至少FX5200这样的卡任谁都会把画质调到最高,所以调整画质也就没有意义了。下面是Pete's OpenGL2 Driver 2.6 + FX5700 的组图


1-6:PsOGL2_001(Full Effect)

2-6:PsOGL2_002(Full Effect)

3-6:PsOGL2_003(Full Effect)

4-6:PsOGL2_004(Full Effect)

5-6:PsOGL2_005(Full Effect)






文章写完了,总要有个总结,各位将我这篇拙文从头看到这里,对自己该用怎样的插件,如何设置,想必心里也有数。简单的说,使用老爷机且只有板载显卡的朋友,可以使用Software + 2xSal,也可以在低分辨率/低画质下试着用一下OpenGL;使用稍次于主流机型(MX系列—Ti系列)的朋友,可以使用OpenGL+T-filtering并打开FSAA;显卡支持D9(FX系列或者以上)的朋友就不用说了,OpenGL2将带给你最完美的感受!

看到这里,如果稍微有心的朋友可能会问,为什么不在OpenGL打开T-filtering后选择不对2D进行填充,再选择2xSal呢。其实2xSal本来是为2D图形而设计的一种算法,原本目的是对分辨率不高的2D图形进行进一步的补偿。将2xSal应用到OpenGL中需要经过一系列的转换,消耗相当多的内存!而且最终的实际效果与想象中相去甚远,与原来几乎没有差别。牺牲了相当的系统性能却没有得到任何提升,这是我所无法接受的,所以就没有将其写在本文之内。有更好点子的朋友也不必着急,本文之所以称之为“不完全研究”,就是想起到一个抛砖引玉的作用,还请各位不啬赐教!








————————————————我是分割线————————————————————






还有有关OpenGL下"Screen Smoothing"功能的测试!
应各位的要求,再次测试了OpenGL插件1.75的"Screen Smoothing"功能,结果令人振奋!具体情况请看图!


打开了"Screen Smoothing"的OpenGL1.75设置图

Pete's OpenGL Driver 1.75(With T-Filtering&Screen Smoothing)





以下是对比,上图为未选择"Screen Smoothing"的效果,下图为勾选后的效果.





































可以明显看到,经过"Screen Smoothing"处理后的画面素质有了相当大的提升,所有的2D边界都被弱化,"纸片问题"也得到了几乎完美的解决.

但是请各位不要高兴得太早,这种解决并不是没有代价的.在勾选了"Sreen Smoothing"后,我的系统利用率有了明显的上升,当罗法发动决技"裁决风暴"的时候,FPS数暴跌至37左右,决技发动完毕后速度恢复正常.我在打开"Screen Smoothing"的同时降低了OpenGL插件中其他有关画质的项目,当画质降低到已经无法接受的时候(线性过滤&软加速修正均未开启),FPS数依然只有45左右.后来我试着在关闭垂直同步,关闭限制FPS的情况下测试了系统性能在打开"Screen Smoothing"前后的损失,结果见下表.


最高FPS 最低FPS

关闭"Screen Smoothing" 200 127

打开"Screen Smoothing" 177 32.5


最高FPS一般是只有简单3D渲染的时候,比如少数决技发动完毕的特写,比如亚硫哲;最低FPS一般是多边形相当多,非常复杂且用到扭曲,旋转等特效的决技,比如罗法的裁决风暴,瓦尔基里的尼贝龙根之裁,芙蕾的苍穹破(FPS为32...).虽然这个简单的测试有一定的局限性,但是可以说明的问题是."Screen Smoothing"牺牲了30%~70%图形子系统性能,得到对画面比较有限的提升.换句话说,付出和收获不成比例,但是考虑到VP的大部分时间里都不会有发动绝技那么多对性能的消耗,"Screen Smoothing"还是有比较充足的推荐理由的.但是"Screen Smoothing"仅仅只是对那些拥有强劲但并不支持D9显卡用户的另外一种解决方法,请各位谨慎使用.


推荐使用GeForce Ti4200,GeForce Ti4600的玩家打开"Screen Smoothing",使用GeForce2/4MX系列的玩家可以在打开所有特效速度依然能达到60的情况下试着打开.所有打开"Screen Smoothing"的玩家都请勾选"Fram Skipping".使用ATI显卡的玩家请对照自己显卡性能同Nvdia显卡类似的情况做决定.





再次收集了一下各位在使用各种插件时候碰到的问题,在这里集中一下,写一个简单FAQ,希望能对各位出现问题的朋友有所帮助.

①P.E.Op.S. Soft Driver 1.16问题

Q:我使用Soft Driver速度非常慢,但换用3D插件却速度正常.
A:Soft Driver是非常依赖CUP速度的,3D卡几乎不起作用.速度很慢的话请试着降低分辨率和发色数,并勾选Fram Skipping.

Q:我使用Soft Driver时平时很正常,但一进选单就速度下降.
A:勾选Fram Skipping ,并限制60FPS

Q:有没有方法提高画质?
A:在Stretching里选择"2xSal",如果效果还不能令你满意,请更换插件



②:Pete's OpenGL Driver 1.75

Q:我的人物全部都有很严重的马赛克.
A:请在Texture filting里选择"2:Extend - Remove black borders"

Q;我的人物大头像不正常,可以看到很明显的格子
A:请在Hi-Res Texture里将2xSal关掉(选择0).

Q:我的画面总是有黑边.
A:请在Texture filting里选择"2:Extend - Remove black borders",另外如果打开了2xSal也请关掉.

Q:我的战斗画面不正常/芙蕾移动的时候出现黑色的圆圈.
A:请将Framebuffers设置成"4:Full Software Drawing (FVP)"



③Pete's OpenGL2 Driver 2.6

如果出现和OpenGL 1.75类似的问题,请参照1.75.这里只提供OpenGL2才会出现的问题.

Q:无论如何添加Shaders插件,总是出现missing shader extenisons
A:首先请确保你的显卡完全支持D9,如果上述情况依然存在,请更换你的DirectX版本为9.0,显卡驱动为56.72以上.



此FAQ不定期更新中