dgVoodoo2对于东方STG游戏的详细配置
Phiomoe
编辑于 2025年12月26日 19:40
收录于文集
共3篇

因为东方游戏是DirectX接口的,以下只讲解dgVoodoo2中影响DirectX的功能面板:

dgVoodoo2控制面板

在横幅空白处鼠标单击右键,单击“Show all sections of the configuration”打开扩展选项卡。

配置文件的位置。C盘“%AppData%\dgvoodoo”文件夹下的是全局配置,把配置文件放在游戏可执行文件所在的文件夹内可以用本地配置覆盖全局配置。

Output API:选择转换后的DirectX版本。建议始终选择显卡支持的最高DX版本或“最佳可用”。

    特征级别10.0的限制:

    - 使用Glide渲染时没有mipmapping

    - 使用DirectX渲染时不支持冯氏着色

    - CPU执行Z-buffer操作时支持有限(MSAA,性能)

    - 不支持N-patches和D3D9 MSAA超采样

    特征级别10.1的限制:

    - 最大纹理尺寸为8K x 8K (D3D8/9)

    - 不支持N-patches

    DX 12目前有一些已知问题,因此如果需要使用必须显式选择。

Adapter(s) to use / enable:使用哪张显卡运行游戏。对于同时有核显和独显的电脑来说,独显的顺序会排在前面。

Full Screen Output:全屏游戏运行在哪个显示器上。默认是主显示器。

左边可以选择让dgVoodoo2控制游戏是窗口还是全屏,但是要在图中设置⑨里把“Application controlled fullscreen/windowed state”关掉才能生效。

Windowed的右边的下拉栏可以设置全屏游戏时的缩放模式:

    - 未指定:由驱动程序决定(如果GPU控制面板上设置了纵横比缩放,可以选用此选项(Win7游戏应当选择这个,选择其他的会增加延迟)

    - 居中,拉伸:缩放由硬件完成

    - 居中,保持纵横比:与居中相同,但缩放由dgVoodoo2完成

    - 拉伸,保持纵横比:缩放由dgVoodoo2完成(可以代替GPU控制面板上的缩放设置,选用此选项能够支持按纵横比缩放成高分辨率的游戏,但是用obs捕获时左右会有黑边

    - 拉伸,4:3 纵横比:对所有低于和包括1280x1024的分辨率强制使用4:3纵横比;缩放由dgVoodoo2完成

    - 拉伸,4:3 纵横比(CRT 样式):对所有低于和包括1280x1024的分辨率强制使用4:3纵横比,具有CRT样式的模糊外观;缩放由dgVoodoo2完成(复古画质,娱乐用)

    - 拉伸,4:3 纵横比(VIC-II,C64 样式):对所有低于和包括1280x1024的分辨率强制使用4:3纵横比,具有C64样式的160x200(固定的16色调色板及其他VIC-II限制)外观;缩放由dgVoodoo2完成(复古画质,娱乐用)

Progressive scanline order:逐行扫描模式。在全屏模式下,使用输出设备的逐行扫描模式,否则将使用默认的隔行扫描模式。在逐行扫描模式下,每个视频帧从屏幕顶部开始,逐行绘制每一条水平扫描线,直到绘制到屏幕底部。这种方式确保屏幕上所有像素都会在同一个时间点内更新,从而生成一张完整的图像,图像的每一帧都包含完整的画面信息,所有的扫描线都会按照顺序一次性被刷新到显示器上。与此不同的是Interlaced Scan(隔行扫描),在隔行扫描中,图像的奇数行和偶数行会交替刷新,每帧图像只包含一半的扫描线(例如,第一帧显示奇数行,第二帧显示偶数行)。虽然隔行扫描在一些旧式设备中减少了带宽需求,但大多数现代显示器(如LCD、OLED)本质上使用逐行扫描。由于每一帧都是完整的图像而非交替的半帧,逐行扫描通常能够提供更高的图像质量,尤其是在处理动态场景时,减少隔行扫描中常见的画面闪烁、撕裂、伪影和锯齿问题。

Enumerate refresh rates:枚举刷新率。在分辨率选择器(图中设置⑧)的下拉框中列出刷新率,并允许选择一个。如果使用了游戏默认值以外的刷新率,可能会导致严重的延迟或故障。

设为特征级别11.0后可以调颜色,会降低性能,如有需要推荐前往显卡面板调节。

Keep window aspect ratio:窗口模式缩放窗口时,保持窗口纵横比。

Capture mouse:如果启用,dgVoodoo2会在全屏模式下将鼠标指针限制在游戏内。这在多显示器系统中很有用,可防止意外点击到另一台显示器上的游戏外部而导致游戏退出全屏模式。

Center app window:如果启用,dgVoodoo2会在窗口模式下将游戏窗口居中。这可能会与鼠标输入产生冲突。(建议使用Special K进行统一调节)

Disable screen saver:禁用屏幕保护程序和显示器的自动休眠。

Disable and passthru to real DirectX:如果不想移除文件夹内的各种dgVoodoo2的dll文件但又想用电脑原生的DirectX,可以通过开启这个选项来禁用dgVoodoo2。

Videocard:可供选择的虚拟显卡。SVGA仅向游戏提供软件渲染(不支持3D加速),而其他5款支持3D加速的显卡则具备完整的硬件功能,包括“变换与光照”。dgVoodoo虚拟3D加速卡和GeForce 9800 GT完全兼容D3D9。其中dgVoodoo虚拟3D加速卡支持几乎所有(甚至过多)DX标准的功能,这对于某些游戏来说可能会成为问题(例如使用thprac时文字变成白条)。这时可以使用GeForce 9800 GT,在这种情况下它更为实用。

VRAM:虚拟显卡的显存。推荐512MB以上。

Filtering:滤镜。通过枚举试验得出linear mip是最优解(延迟低的同时画质尚可)。CRT显示器推荐使用point sample

    按延迟排序:point sample<point mip<linear mip<bilinear<trilinear<2x<4x<8x<16x

Mipmapping:一种图形渲染技术,用于提高纹理映射的性能和视觉质量,特别是在处理远距离或小尺寸的物体时。它通过预生成一系列不同分辨率的纹理,来根据物体与视角的距离动态选择合适的纹理,从而减少纹理失真、提高渲染效率并优化内存使用。(东方游戏因为全是贴图,所以用不到这个功能)

Force filter only if not point sampled:对于本身就是点采样滤镜的纹理,不会强制使用上面指定的滤镜。

Resolution:游戏画面的分辨率。在列表中,可以看到两种类型的分辨率和刷新率:

    - 静态分辨率:这些是显卡为所选显示输出列举的分辨率。选择其中任何一个,dgVoodoo2将强制使用该分辨率,而不管游戏想要设置什么分辨率。也可以在这里添加自定义静态分辨率,它们将被保存到配置文件中,例如:“128x128, 60”表示分辨率为128x128,刷新率为60Hz。CRT显示器推荐使用640x480

    - 动态分辨率:当前分辨率将由dgVoodoo2根据游戏原生分辨率和缩放模式进行计算。ISF代表整数缩放因子。

        2x, 3x, 4x, ...:游戏原生分辨率的两倍、三倍等。可以输入任意整数缩放

        Max:最大可用分辨率

        Max FHD:最大可用分辨率,限制为全高清 (1920x1080)

        Max QHD:最大可用分辨率,限制为 QHD (2560x1440)

        Max ISF, Max FHD ISF, Max QHD ISF:游戏原生分辨率的最大可用整数倍

        Max 2x, Max ISF 2x:最大可用分辨率的两倍(超采样结果)

        Desktop:当前或配置的桌面分辨率(与游戏原生分辨率无关)

        还可以输入自定义字符串,例如“Max_FHD, 59”表示最大FHD分辨率并以59Hz刷新率显示。

        设置成Max时,再配合图中设置④的全屏缩放设置中的“Stretched, keep Aspect Ratio”,可以实现以显示器当前桌面分辨率为准的全屏,同时保持画面纵横比。(举个例子,对于原生分辨率为3840x2160的显示器,如果当前桌面分辨率也为3840x2160,用这种设置打开的全屏游戏的分辨率为2880x2160;如果当前桌面分辨率为1920x1080,用这种设置打开的全屏游戏的分辨率为1440x1080。即游戏会采样成显示器当前桌面分辨率,而不是让显示器缩放成游戏的原生分辨率。这么做的好处就是游戏打开和切屏的时候不会因显示器调整分辨率而闪烁或崩溃,也使画面撕裂的情况更不明显。但是th06~th13这些全屏原生分辨率为640x480的游戏,特别是老引擎作品th06~th09,在超采样成高分辨率之后,游戏主画面外会有纵线或呈砖块状。)

        设置成Unforced时,再配合图中设置④的全屏缩放设置中的“Stretched, keep Aspect Ratio”,也可以实现以显示器当前桌面分辨率为准的全屏并保持画面纵横比,但是和Max原理不同。Max是通过对内置贴图超采样来达成的,容易引发贴图边界显示问题,而Unforce是在游戏原生分辨率的基础上对整个画面进行缩放。

Application controlled fullscreen/windowed state:是否让游戏自己控制是窗口还是全屏。选中后,图中设置④里dgVoodoo2对此的控制功能失效。

Disable Alt-Enter to toggle screen state:是否关闭dgVoodoo2的按Alt+Enter切换窗口或全屏的功能。一般来说游戏自带这个功能,为防止冲突,把dgVoodoo2的相同功能关闭。

Antialiasing (MSAA):抗锯齿。建议关闭,会有延迟。

Bilinear DD/CPU operations:双线性纹理滤波。建议关闭,会有延迟。

Force vSync:强制垂直同步。建议关闭,会有延迟。

Fast video memory access:快速显存访问。允许显卡和系统内存之间进行更快速的显存数据交换,减少与显存交互的延迟,从而提升帧率和游戏性能。它主要优化以下几个方面:

    - 显存映射:旧游戏通常设计为使用较慢的显存访问路径,而此选项通过加速显存映射过程,减少访问延迟。

    - 减少CPU开销:通过优化显存的读写操作,减轻CPU在处理显存数据时的负担,从而提高整体性能,特别是在高分辨率下运行老游戏时。

    - 提高兼容性:某些旧游戏由于硬件或API的限制,可能无法充分利用现代显卡的带宽和处理能力。启用此选项后,可以让这些游戏以更接近现代硬件的方式来访问显存,从而实现更平滑的体验。

Apply Phong shading when possible:冯氏着色。一种基于像素的光照计算模型,提供了细腻的光影过渡和高光反射效果。显著增加GPU的负载,开销很大,增加延迟。

Disable D3D TnL Device:禁用硬件顶点变换和光照。不建议勾选此项,如果将此任务交给CPU处理,则效率会更低,增加延迟。

dgVoodoo Watermark:dgVoodoo的水印。选中后,dgVoodoo2生效时,游戏右下角会有水印。(可通过是否有水印来判断dgVoodoo2是否生效)

Integer scale factor:缩放输出的图像的整数因子,用于调整以全屏模式启动的游戏的拉伸比例。始终通过最近点过滤进行缩放,独立于前述的缩放模式。可以为水平和垂直缩放定义单独的因子:例如,输入字符串x:3, y:2,则拉伸比例会在缩放的基础上乘以3:2,即使保持纵横比缩放也依然生效。(保持默认为1即可)

Deframer size:当分辨率被强制设置为游戏默认值之外时,会在输出的图像周围绘制一个黑框,以消除缩放伪影(最多16像素)。(保持默认为1即可)

Display ROI:目标区域显示(Display region of interest)。如果缩放由dgVoodoo2完成,则可以定义输出图像的子区域,定义的子区域会根据当前的缩放模式映射到显示输出,这对于需要将16:9画面裁剪成4:3的游戏非常有用。在这种情况下,可以保持纵横比(裁剪掉的部分变为黑边),也可以将4:3的部分拉伸填满16:9显示器的整个屏幕。手动输入的值可以是 %d_%d 形式的比例,或者是像素大小 (%d|%d)。Pos属性不是必需的,可以为“centered”或像素位置 (%d|%d)。示例:`16_9, pos:centered`,`(320|200), pos:(10|10)`

Resampling:如果缩放由dgVoodoo2完成,可以选择使用哪种重采样方法。过滤器越复杂,计算成本越高。可用的重采样方法按复杂度排序:点采样(未模糊的像素)、双线性(平滑)、Lanczos-2(平滑但更清晰)、双三次(平滑但更清晰)、Lanczos-3(平滑,最清晰)。(推荐双线性,成本低效果好)CRT显示器推荐使用point sample

Cursor scale factor:模拟硬件鼠标光标的整数缩放因子。设置成Automatic,能够自动根据游戏的分辨率计算。

Presentation model:呈现模型。一般建议使用Discard(BitBlt Discard),支持Win7,支持独占全屏,能完全绕过DWM;如果是Win10/11且使用窗口或无边框窗口全屏,则建议使用Flip Discard(不支持Win7)(Special K必须用Flip Discard),对新系统的支持比传统模型更好,虽然不支持独占全屏,但是延迟和传统的独占全屏等同。如果同时使用了Special K,而Presentation model为BitBlt,缺少原生翻转模型呈现的游戏将出现性能大幅下降,并导致Special K的日志文件大小迅速增加,高达数百MB。这是由于Special K和dgVoodoo2争夺所使用的交换效果所致,因为dgVoodoo2默认使用BitBlt Discard,而Special K使用Flip Discard。【https://wiki.special-k.info/en/SpecialK/dgVoodoo】【https://wiki.special-k.info/en/SwapChain】

“Flip model swap chains do not use true exclusive fullscreen mode. Instead, when you call SetFullscreenState(TRUE) on a flip model chain, Windows simulates fullscreen behavior, but composition is still used behind the scenes.”【https://learn.microsoft.com/en-us/windows/win32/direct3ddxgi/dxgi-best-practices】

Color space:色彩空间。ARGB:8888是用于SDR显示器的传统sRGB格式,性能最好,延迟最低;ARGB:2101010也是sRGB格式,但具有更高的色彩精度;ARGB:2101010 WCG是宽色域表示,用于专门支持的SDR显示器(Win11 22H2);ARGB:16161616是HDR显示器的float16表示形式(Win10 1709)。游戏只能通过D3D9选择ARGB:2101010。在其他情况下,如果选择了“App driven”,则会选择ARGB:8888。默认情况下,内部渲染质量会自动根据输出色彩空间进行调整。

桌面属性,包括分辨率和色深。这里修改的数值不会在游戏启动时修改真实显示器本身的属性,而是相当于模拟出了一个使用这个属性的虚拟显示器,游戏则显示在这个虚拟显示器上。这个设置和图中设置⑧的分辨率修改功能结果类似但原理不同,区别在于这个设置的原理是修改桌面属性,而图中设置⑧的分辨率修改的原理是采样和缩放。修改桌面属性的操作在渲染之前,这对于某些启动时在dgVoodoo2渲染之前强制修改并固定显示器桌面分辨率的游戏非常有用。需要注意的是,如果修改后的分辨率和真实显示器当前桌面分辨率差距过大,画质会很差

窗口模式属性:

    - 无边框窗口(Borderless):不显示窗口的标题栏。(需要在图中设置④中选择“Windowed”,图中设置⑨中取消勾选“Application controlled fullscreen/windowed state”和“Disable Alt-Enter to toggle screen state”,并且游戏以全屏模式启动,这个选项才有作用)(https://github.com/dege-diosg/dgVoodoo2/issues/40)

    - 窗口置顶(Always on top)

    - 全屏尺寸(Fullscreen size):窗口的内容显示和在全屏下一样,如果缩放后的游戏分辨率和显示器当前桌面分辨率不一致会产生黑边。

    勾选无边框窗口和全屏尺寸,并且游戏窗口位置为(0, 0)且游戏画面刚好覆盖但不超出整个屏幕,开启了窗口游戏优化的Win10/11系统会将游戏窗口升级为无边框窗口全屏(Independent Flip),延迟即与独占全屏等同。

全屏模式属性:

    - 假全屏(Fake):在全屏模式下,强制使用无边框窗口全屏。

Environment:游戏运行的环境,可以是DosBox和QEmu模拟器。

FPS limit:帧率限制。

Free mouse:如果启用,当游戏原生分辨率与缩放后的分辨率不同时,物理鼠标可以在缩放后的游戏窗口内自由移动。(举个例子,没启用这个选项的时候,在缩放后的游戏内打开thprac练习界面,鼠标会被限制在左上角游戏原生分辨率大小的框内)

GDI:如果启用,dgVoodoo2会挂钩GDI,以便显示通过GDI渲染的图形内容(例如通过古老的Windows Multimedia AVI播放器库播放的电影)。东方游戏不需要的功能,部分东方游戏(如风神录)启用这个选项会无法打开游戏。

Cursor:如果启用,dgVoodoo2会挂钩系统光标功能,以抑制模拟光标的双光标现象。

枚举分辨率和枚举色深:保持默认即可,除非有特殊需求。

Dithering:一种图像处理技术,在显示图像时,如果设备或图像格式只支持有限的颜色,比如8位(256色)或16位(65536色),在渐变色的区域可能会出现颜色过渡不平滑的情况。Dithering的作用就是通过视觉混合色块的方式,模拟出更多的颜色。这项技术通过在相邻像素之间使用不同的颜色来创建一种视觉效果,让人眼感知到过渡更平滑,从而减少色带效应。Dithering的计算复杂度较低,几乎不会引起延迟。CRT显示器推荐关闭

MS D3D device names:如果启用,游戏检测到的显卡名称为本机真实显卡而不是dgVoodoo2提供的虚拟显卡。这是为了解决某些游戏的显卡名称检测问题。

Force scale&MSAA on RT textures:如果启用,分辨率缩放和MSAA(抗锯齿)也会应用于渲染目标纹理。对于需要像素精确渲染的游戏,可以禁用此功能,但可能出问题。

Smoothed depth sampling:平滑深度采样。在3D渲染中,深度缓冲(depth buffer)是一个用于存储每个像素的深度信息的缓冲区,通常称为Z-buffer。这个缓冲区记录了从摄像机到场景中各个像素点的距离,用于处理遮挡(即决定哪个物体在前,哪个物体在后)。深度采样(depth sampling)是指从深度缓冲中读取像素的深度值,以便在后续的渲染步骤中进行深度测试(决定某个像素是否可见)。平滑深度采样是一种图形渲染技术,主要用于优化深度缓冲的采样过程,这项技术通过对深度缓冲中的深度值进行平滑处理或抗锯齿化处理,生成更加平滑的深度变化,改善场景中的深度相关效果,如阴影、光照和体积雾等,从而提高视觉质量。因为涉及繁杂的计算,例如多点采样、深度值平滑处理和抗锯齿运算,增加了GPU的工作负载,所以会导致延迟。

Deferred screen mode switch:延后显示模式的改变,在开启全屏游戏时,会先初始化DirectX设备,再进入全屏模式。对于某些游戏,可以防止全屏启动时在初始化阶段崩溃。

Batched update for primary surface:如果启用,主表面的直接更改将被批处理在一起进行呈现。如果禁用,每次更改都会立即呈现(类似调试模式)。(仅适用于DirectDraw)

Suppress AMD blacklist:如果启用,针对某些AMD GPU型号的内部黑名单将被禁用。可以检查最新的AMD驱动程序是否已修复纯色纹理问题。

D3D12 bounds checking:(仅适用于 D3D8/9)如果启用,则D3D12后端会对顶点着色器常量寄存器文件访问进行边界检查。为了与D3D8/9规范完全兼容,应该始终启用该选项,但这可能会导致性能下降,而大多数游戏并不需要它。如果在运行D3D8/9转换D3D12的游戏时遇到GPU崩溃,可以尝试启用该选项。

Depth buffers:深度缓冲区用于3D渲染的内部位深度。不推荐强制使用32位。

Max VS const registers:顶点着色器常量寄存器的最大数量(仅适用于D3D8/9)。只能为SVGA和Internal3D显卡类型定义。数量越少,性能越高。

3D render default format:3D渲染默认格式,决定了游戏在内部渲染时使用的颜色精度。和色彩空间的描述一致,ARGB 8:8:8:8的性能最好,延迟最低。

N-patch tesselation:N-Patch曲面细分级别,是一种细分技术,用于提高低多边形模型的曲面平滑度。性能开销较高,会增加延迟。

Individual display outputs enabled:已启用的显示器。通过开关可限定游戏在哪个显示器上显示。