游戏

S3D 与 WibbleWobble

应众多游戏玩家的要求,我们正在调整硬件并升级驱动程序,以完全兼容新的 WibbleWobble 技术。 该技术使得即使在开发者从未提供此模式的情况下,也能在现代游戏中体验真正的立体 3D 效果。 如果您拥有高速显示器和兼容设备,请使用 WibbleWobble 享受强大而生动的游戏视觉盛宴。

WibbleWobble Core
Discord 社区

这是什么

WibbleWobble 将普通的平面游戏转变为具有“世界之窗”视角的立体 3D 效果。 通过头部运动追踪,您可以像观察真实世界一样观察游戏。 您不需要昂贵的特殊 3D 显示器。 软件和价格合理的 3D 眼镜就能实现真正的魔法...

优势

访问 Steam 上以前在 PC 上无法使用的大量 VR 游戏库。 它们只能在昂贵的 VR 头显上运行——例如传奇的 《半条命:爱莉克斯》。 您将在现代大型游戏显示器上欣赏到高质量的 3D 表演。 高帧率(从 120 FPS 起)、精美清晰的图像、鲜艳的色彩。 并且不要忘记主要优势——显示器已经变得非常好且价格实惠。 最佳显示器概览

内部工作原理
给好奇的玩家
关于该技术如何构建和工作的通俗描述。 如果您不感兴趣,则无需阅读——这是枯燥的材料。

游戏如何绘制 3D
在游戏中生成 3D 图像的常用方法是渲染场景两次—— 分别为左眼和右眼,虚拟地将摄像机相对于场景中心移动。 这非常消耗资源,并且需要游戏引擎的内置支持。 并非所有游戏都能做到这一点。WibbleWobble 提供了 两种不同的路径,它们之间的区别 是根本性的——它决定了图像质量和图像伪影的类型。

路径一:ReShade 客户端 - 从平面帧合成立体
游戏渲染一个普通的单一视图。SuperDepth3D ReShade 效果获取该帧以及 场景的深度缓冲区,并根据深度移动像素来重建第二个视点。 游戏引擎对立体一无所知。这在性能方面成本低廉,并且几乎适用于任何 DX11/DX12 游戏。 代价是该方法本身固有的伪影。它们将在下面的“缺点”部分中描述。

路径二:OpenVR 客户端 - 真正的 3D 渲染
WibbleWobble 在 SteamVR 中将自己注册为虚拟 VR 头显。支持 VR 的游戏或带有 VR 模组的游戏, 会从两个相隔瞳距的摄像机渲染场景两次,就像真正的头显所做的那样。 IPD、每眼分辨率和焦距在 VR 配置中设置。这里 WibbleWobble 不合成 任何东西:它获取现成的立体对,并以帧序列方式输出到屏幕, 同步快门眼镜。这在性能上成本更高, 但 3D 几何形状绝对正确。没有轮廓孔洞,没有“纸板”效果; 每只眼睛都能获得自己的反射和高光。本质上,这是一种在普通显示器上使用 3D 眼镜 但无需头显来玩 VR 游戏的方法。

重投影 - 视野扩展机制
重投影在两种模式下都有效,包括单目模式。 一个高性能着色器获取游戏帧并将其映射到您工作空间的几何形状上: 映射到单个显示器、四个显示器或曲面屏幕上。 通过头部追踪(OpenTrack),图像会跟随您的头部移动,显示器 开始充当进入虚拟世界的窗口——“VR 鱼缸”效果。 重投影的目的是为多显示器使用获得正确的世界比例和正确的视野(FOV)。 可以完全关闭重投影(客户端配置 -> 重投影:禁用),仅使用立体输出、 BFI 和升频器——这是单个显示器的常见场景。
* 必须说明的是,项目的作者对“将世界扩展到多个面板”的想法过于 乐观。即使是强大的显卡也没有足够的性能来支持这一点。如果速度 足以支持单个 4K 显示器,您就很幸运了。多个显示器是行不通的...

FOV(视野):视角。它决定了虚拟摄像机在帧中捕获世界的哪个扇区。 以度为单位测量,分别针对垂直和水平方向。 小的 FOV(40-50°)看起来像长焦镜头:狭窄的扇区,物体很大。 大的 FOV(100-120°)是广角,像运动相机。您可以看到两侧很多内容, 但边缘被拉伸,物体看起来更远更小。这是 WibbleWobble 中的一个关键参数。 程序必须知道游戏绘制帧时的角度, 才能将其正确地投影到您的物理显示器上。 这就是为什么游戏配置有两个字段,FOV 垂直和 FOV 水平,有一个要求: 该值必须与游戏中设置的值匹配。更改一个值, 另一个值将根据窗口的宽高比自动重新计算。

如果 FOV:
太大,世界看起来像玩具,物体比例失真
太小,世界看起来巨大,一切都在您面前显得庞大
在 3D 中,深度会随着比例一起破坏,导致眼睛疲劳

头部追踪作为“世界之窗”
使用 OpenTrack 方法,应用程序处理程序追踪头部的 位置并移动投影,使显示器渲染 进入 3D 场景的虚拟窗口。这会产生视差效果。 当您移动头部时,图像会轻微移动, 就像您真的在透过窗户看一样。

帧序列立体输出
应用程序以可变速率从游戏接收帧,因为它们已准备好, “无论它们如何到来。”然后客户端调整帧率以在 60 Hz 下播放。 立体对的来源可以是 SuperDepth3D、VR 模组或现成的 3D 内容。 WibbleWobble 以并排或棋盘格格式(客户端配置 -> 源格式)接受它, 并在 FrameBufferDecode 中解码。然后渲染器将其转换为 120 Hz 帧序列流, 同时同步快门眼镜。支持以下发射器: NVIDIA 3D Vision、Open3DOLED、DLP 投影仪、3D Ready 以及自制的 Arduino/VESA IR 发射器。

对抗运动模糊和串扰
运动模糊是由显示器产生的模糊。 现代 LCD 和 OLED 面板在整个帧持续时间内保持像素点亮—— 即保持-采样模式。当像素保持点亮并固定在某个位置时, 眼睛会本能地继续跟随移动的物体。 结果,图像在视网膜本身上“拖影”, 即使显示器上的每个单独帧都非常清晰。 像素点亮的时间越长,拖影就越强。该缺陷会隐藏精细细节, 并进一步降低 3D 模式下的图像质量。

为了减少像素的点亮时间,WibbleWobble 提供了两种工具:
黑帧插入 - 在有用帧之间插入黑帧 (客户端配置中的黑帧插入间隔参数)。
CRT 光束模拟器 by Blur Busters - 一个着色器,模拟 CRT 电子束的扫描: 它逐行消隐图像,而不是整个帧。 它提供更好的结果,但对显示器要求很高:需要伽马 2.2 或 2.4, 禁用 ABL/APL,并且 OLED 处于 SDR 模式。在 FALD 和 MiniLED 面板上效果不佳, 因为背光有惯性。

这两种模式不能同时启用。使用 CRT 模拟器时,客户端配置中的黑帧插入间隔参数必须为零。 值得单独强调的是,游戏可能以低于显示器输出帧的速率运行, 程序会填充缺失的帧以达到显示器的速率。但这并不是生成 新的中间图像——而是重复现成的图像。 换句话说,没有重采样方法提供的平滑度。

串扰是指一只眼睛的图像 部分到达另一只眼睛的效果。结果,观看者会看到物体旁边出现双重轮廓或半透明 的“鬼影”。这会降低 3D 图像的质量并减少深度感。 为了对抗这一点,内置了对黑帧插入和 Blur Busters CRT 光束模拟器的支持。 为了全面抑制串扰,使用了一种巧妙的模式:游戏图像以 60 Hz 绘制, 眼镜以 120 Hz 接收同步,并以 240 Hz 的帧重复输出到屏幕。
WibbleWobble 支持两种操作方法,每种方法都有自己的客户端 添加到游戏中。它们适用于与其兼容的游戏类型。 下表总结了这些方法的主要特性。
方法 用途 3D 源 优势 缺点
ReShade 客户端 适用于 DirectX 11 / 12 游戏 深度缓冲区 + SuperDepth3D 高兼容性
低 GPU 负载
无需 VR
可能存在伪影
3D 质量取决于游戏
OpenVR 客户端 VR 游戏和带有 VR 模组的游戏 真实立体对 完美的几何形状
最高 3D 质量
正确的反射和光照
需要 SteamVR
高 GPU 负载

谁在使用 WibbleWobble

立体 3D 游戏爱好者,或 NVIDIA 于 2019 年正式停产的 NVIDIA 3D Vision 硬件的拥有者。 3D 眼镜和高速显示器的拥有者。该技术使得玩没有内置立体支持 的现代游戏成为可能。 这是一个在价格/质量方面出色的解决方案——价格低廉且人人可用。 但图像质量取决于所选方法和特定游戏。 请阅读下面的限制。

已发现的问题和限制

ReShade 客户端
尽管有其优点,但此方法存在限制, 应单独说明。 它们并非源于程序的不完善,而是源于所选的操作原理。 第二个立体视点不是从场景模型渲染的,而是从 已经完成的帧和深度图重建的。如果源帧中没有关于前景物体后面隐藏了什么的数据, 就没有地方可以恢复它。

物体边缘的孔洞 - 遮挡解除
这是该方法的主要缺陷。当程序为第二只眼睛 或头部转动移动视点时,源帧中被前景物体边缘隐藏的部分背景 应该变得可见。但没有人渲染那些像素—— 它们物理上不存在。程序没有东西可以填补这个空白,因此它 要么拉伸边缘像素,沿着轮廓产生“橡胶状”的模糊光晕, 要么替换一个“看似合理”但通常不正确的补丁。 视点移动越强,光晕带就越宽。这不是实现错误, 而是方法本身的限制:您无法从单个图像中提取 隐藏在物体后面且在其中不可见的内容。

头部运动放大失真
在普通立体中,视点之间的距离很小且恒定——等于 瞳孔之间的距离。但是使用“世界之窗”,头部在各个方向移动数十 厘米,因此相对视点移动 比自然移动大很多倍,孔洞和拖影也更大。 结果是这样的:坐着不动,几乎没有伪影,但 3D 效果也很弱; 移动很多,效果有了,但物体边缘的一切都是模糊和浮动的。

图形依赖于深度图
程序需要关于场景中每个点距离的正确信息。 游戏并不总是提供它,或者提供全部。透明表面——水、玻璃、烟雾、 火、树叶——通常没有详细的深度,或者引擎根本不创建它。 结果,物体最终出现在错误的距离:水粘在错误的地方, 烟雾加倍,粒子悬浮在空中不同的位置。除此之外,并非每个游戏都会输出 兼容的深度缓冲区——有些是反转的,有些是受保护的且无法读取。

反射和高光破坏最严重
镜子、水、湿沥青和金属由其自身表面的深度定义,而不是由 其中反射的图像定义。当视点移动时,反射会漂移到 未知的地方。如果高光被“绘制”到表面上,它的行为不会像 在现实世界中那样。正是最引人注目的光泽 内容在立体中看起来平坦且错误。

界面、准星和 HUD
帧顶部的二维元素——生命条、菜单、准星——是在 零深度绘制的,因此处理后它们最终会出现在错误的立体距离处。 界面要么陷入屏幕,要么悬在场景前面。准星本身就是一个 麻烦;它的深度位置几乎总是需要手动调整。

双眼共用一帧
两只眼睛看到相同的图像,只是移动了。使用真实的 立体渲染,每只眼睛都能获得自己正确的高光、阴影和折射; 这里不会发生这种情况。因此,物体看起来像是扁平的层, 像胶合板切割出来并按深度排列,而不是体积物体。 在英文材料中,这种效果被称为“纸板剪裁”效果。

每游戏调整
视野、深度范围和会聚度是为每个游戏 单独手动设置的。设置错误会导致过度会聚引起的眼睛疲劳,或者 错误的缩放比例,使世界看起来像玩具或巨大,甚至 深度完全反转。这是一个“调整并弄清楚”的解决方案,而不是一个 “安装即玩”的解决方案。

延迟和不均匀帧
游戏不均匀地渲染帧,客户端通过重复现成的帧 将它们适应显示器的稳定 fps。 重复本身不会引入失真,但动作和图像之间的延迟会累积:帧捕获、处理、输出。对于头部追踪, 任何此类延迟都会感觉像是场景的“浮动”。游戏配置中有一个 帧捕获延迟参数,用于调整捕获时刻。

残留串扰和对显示器的高要求
软件技术——黑帧插入和 60/120/240 模式——抑制鬼影, 但不能完全消除它,因为串扰由许多因素决定: 显示面板和眼镜本身的物理特性。它取决于像素响应时间、 切换速度、眼镜镜片的对比度以及屏幕的垂直绘制速率。 此外,最激进的模式需要快速的 240 Hz 面板,具有短 像素持久性,并非每个用户都有。 与 NVIDIA 3D Vision 不同,ReShade 不复制 现成的体积,而是从平面帧合成它。这就是为什么轮廓孔洞、 不正确的反射和浮动边缘是该方法的稳定伪影, 而不是暂时的缺点。
OpenVR 客户端
这里的立体几何是真实的,并且所有图像合成伪影——遮挡解除、“纸板”、 破碎的反射——都不存在。但这种方法也有其自身的代价,而且是不同的代价。

游戏必须支持 VR
这是主要的限制。该方法不适用于任意游戏:它需要内置的 VR 支持或 VR 模组。如果不存在现成的模组,OpenVR 路径将无法工作, 只剩下 ReShade 及其所有伪影。 换句话说,第一条路径存在的广泛兼容性 在这里完全丧失了。

显卡双倍负载
场景确实被渲染了两次,来自两个摄像机。没有 重投影单个视图所提供的节省:性能下降就像在真正的 VR 中一样。 这可以通过 VR 配置中的分辨率设置部分补偿——每眼分辨率可以 降低,WibbleWobble 会将图像放大到显示器的分辨率。

复杂的安装
必须安装 SteamVR。驱动程序通过 Install.bat 以管理员 权限注册,之后必须手动将两行添加到 config\steamvr.vrsettings 文件中: "forcedDriver": "WibbleWobbleVR" 和 "activateMultipleDrivers": "true"。 然后以仅站立模式完成房间设置。任何步骤出错,您将得到 黑屏而不是立体,并且没有关于原因的明确消息。

OpenVR 本身的限制
某些设置无法即时更改。如果您更改分辨率或输出速率, 则需要重新启动 SteamVR。这是平台限制,而不是程序限制, 但它会显著减慢游戏调整速度。

渲染优化破坏某些游戏
VR 配置有一个优化单眼参数,允许仅渲染一只眼睛 或两只眼睛以一半 FOV 渲染。项目的作者直接警告:“Both”模式是最有问题的—— 可能出现渐晕和眼睛不同步,并且图像可能会 “移动”。在某些游戏中,将不得不完全关闭优化。

争夺窗口焦点
某些游戏不会将焦点交给 WibbleWobble 界面: SHIFT + END 组合键不起作用,或者 UI 被绘制但无法控制。 您必须通过 ALT + TAB 手动切换。 一个单独的问题:WibbleWobble 窗口不能关闭—— 程序之后无法恢复,游戏将不得不重新启动。

每次启动都需要重新居中
每次启动时都必须手动居中追踪(SHIFT + .),精确地定位在 屏幕前工作区的中心。如果头部在居中时不在那里, 重投影开始表现异常,并且缩放比例“漂移”。 根据作者自己的承认,找到正确的位置需要练习。 这以后可以通过使用更智能的追踪软件来修复。

个别应用程序的怪癖
某些程序仅适用于特定品牌的头显。对于它们,VR 配置 有一个头显识别参数,使 WibbleWobble 将自己呈现为不同的 设备——例如 Vive——没有它,头部追踪在 DEOVR 中就无法工作。换句话说, 兼容性在某些地方依赖于这样的变通方法。

与第一条路径的共同点
关于硬件的所有内容对两种方法都适用:残留串扰、 对快速面板的要求、精确眼镜同步的需要。立体输出、 发射器、BFI 和 CRT 模拟器的工作方式相同,无论立体对来自何处。

一个常见问题
配置和准备启动的复杂性。 要试用 WibbleWobble,您必须花费大量时间 研究文档并执行各种小操作。 我们花了一两天时间才弄清楚,然后才成功无错误地启动。 作者忽略了没有准备的用户,选择不 制作一键自动配置器。正是启动的复杂性驱走了 相当大一部分潜在用户。

主观质量评估

该项目使用各种方法来补偿图形缺陷。 请参阅所采取措施的表格以及相对于无补偿面板的 3D 质量近似主观增益, 以百分比表示。 评估基于视觉测试,并非实验室测量结果。

实际带来增益的因素:
逐行图像校正以补偿面板的绘制延迟,从而将串扰降低数倍。 精确测量每个显示器型号的 OLED 延迟,并单独 调整眼镜快门打开和关闭的时刻。 精确的眼镜同步,没有丢帧或重复帧。 抑制同步抖动——任何超过一百微秒的抖动在主动 3D 中都会立即被注意到。 如果已知特定面板的响应函数,则进行图像的时间预补偿。 这正是专业 VR 头显制造商为提高质量所做的。
CRTSim +15%
标准 BFI +30%
面板绘制补偿 +50%
精确的眼镜同步 +50%
高 fps (240-480 Hz) +100%
总结
WibbleWobble 技术提供了普通 3D 播放器所没有的东西: 头部运动追踪和生动的“世界之窗”效果。 我们的驱动程序实现使得获得最壮观的 3D 成为可能, 这要归功于发射器和眼镜卓越的速度特性以及高质量的软件。

选择 ReShade.. OpenVR..

选择
想玩 3D 游戏? ReShade 客户端
有 VR 游戏或 VR 模组? OpenVR 客户端
只想要“世界之窗”效果? 单目 + 重投影
注意:从现在开始,请检查所有下载的文件 是否带有病毒!

连接

安装通用软件

步骤 1. 更新显卡驱动程序
视频播放器使用了 NVIDIA Studio 驱动程序;对于游戏, 必须将其替换为 GeForce Game Ready 驱动程序
NVIDIA 驱动程序

安装它,然后从 NVIDIA App 中,将显卡重新配置为 最大性能,如 步骤 7 所述。
在 Windows 设置中,转到 > 设置 > 图形设置。 启用调度程序策略:提高性能。 将 SteamVR 添加到优先级组:高性能。

速度

步骤 2. 安装发射器驱动程序
使用 3D Vision 发射器或 S3D 发射器
相同的兼容、数字签名的原始驱动程序适用于这两种 设备。S3D 发射器必须通过按住最后一个按钮大约几秒钟 切换到 NVIDIA 模式。

s3d 发射器
NVIDIA 3D 控制器驱动程序
安装它并在“设备管理器”中验证成功: 连接发射器后,设备名称出现 且没有黄色错误三角形。不要同时将两个发射器连接到 PC! WibbleWobble 只能与一个实例一起工作。 请参阅 NVIDIA 游戏 部分中的安装步骤。

步骤 3. 下载并解压 WibbleWobble
前往 GitHub 上的 Releases 页面。 下载最新版本并将其解压到一个方便的文件夹中。 选择一个永久位置的文件夹——应用程序注册后无法移动。 文件夹路径必须使用拉丁字母书写,且不含空格。

步骤 4. 在系统中进行通用注册
我们在系统中注册 WibbleWobble 文件和 COM 组件, 以便 Windows 知道应用程序的位置。 两个客户端(ReShade 和 OpenVR)都需要此操作。转到 WibbleWobbleClient 文件夹。 右键单击 Register.bat 文件, 然后选择“以管理员身份运行”。让它完成; 将打开一个黑色控制台窗口,显示结果消息。

步骤 5. 准备 Windows
一个必选项——没有它图像会损坏: 在 Windows 设置中禁用屏幕缩放。 显示 > 缩放 > 设置为 100%。

步骤 6. 禁用 GPU Tweak 3 和类似的 ASUS 实用程序(如果已安装)。 它们会引入延迟并导致图像卡顿,破坏 3D 效果。

步骤 7. 配置显示器和显卡
禁用除主显示器外的所有显示器!
1. NVIDIA 3D 立体 - 关闭
2. G-Sync - 关闭
3. 显示器 - 设置为主显示器
4. 显示器 FPS - 120 Hz
5. 低延迟模式 - 极致
6. 电源管理模式 - 最高性能优先
7. 垂直同步 - 使用 3D 应用程序设置
8. 最大帧速率 - 120 Hz

步骤 8. 加载测试游戏
为方便起见,我们将使用免费的基准测试 Superposition。 它可以用来测试两个客户端。
open-vr

案例:OpenVR 客户端

步骤 1. 安装 SteamVR
Steam 安装。它是免费的。

steam

步骤 2. 将 OpenVR 客户端驱动程序添加到 SteamVR
打开 WibbleWobble -> WibbleWobbleVR 文件夹。 里面还有另一个 WibbleWobbleVR 文件夹。 必须将其复制到:\Steam \steamapps \common \SteamVR \drivers - 这就是驱动程序安装。

步骤 3. 禁用 SteamVR Home
这样 Steam 在启动时就不会启动自己的 3D 环境并捕获屏幕, 在 config\steamvr.vrsettings 文件的 "steamvr" 部分中添加以下内容: "enableHomeApp" : false, 执行此操作时,SteamVR 必须完全关闭;在任务管理器中检查 vrmonitor.exe 和 vrserver.exe。

步骤 4. 启动测试游戏
通过单击桌面图标打开 Superposition。 要通过 OpenVR 客户端显示,请选择:

虚拟现实
图形 API - DirectX
VR 头显 - SteamVR

运行测试
如果一切操作正确且 SteamVR 读取了配置, 它应该立即显示带有“类似头显”视图的控制界面图像。 但对我们来说,这并没有发生。任何从键盘调用 WibbleWobble 界面 的操作都没有反应。鼠标已失效,控制不起作用。 无法启用发射器或执行任何进一步操作...

此时您应该重新启动计算机!

这有帮助。重新启动并重新打开 Superposition 后, 控制界面出现,鼠标开始工作。显示了游戏的两个视点。 它们确实是 3D 渲染的。发射器已打开,现在可以进行精细的图形调整。

步骤 5. 图形显示配置
SHIFT + END 打开 WibbleWobble 界面。 转到游戏配置菜单项。设置 显示器上游戏窗口的合适大小以及您喜欢的“世界”视角。 不要将它们设置得太大;目标是让图像看起来自然。 更改任何参数后,按 Enter 并保存, 否则客户端将不会记住设置,您将不得不重做。

步骤 6. 启用 3D 同步
转到发射器配置:使用复选框启用 NVIDIA 3D 发射器。 根据窗口顶部的提示设置同步速率 HZ。 发射器的 LED 应变为亮绿色。 按下眼镜上的电源按钮,检查立体效果是否出现。

步骤 7. 调整同步
如果眼镜已打开但没有立体效果 / 或图像重影 / 闪烁 / 视点交换:
调整同步偏移微秒 - 眼镜打开的相位。 调整打开持续时间微秒 - 镜片保持打开的时间。 将该参数设置为低于同步速率持续时间(该值显示在窗口顶部), 否则立体效果将消失。目标:获得最小的重影(串扰)。 左眼图像不应明显泄漏到右眼。 稍后我们将附加一个包含所有参数的优化配置文件。

对 OpenVR 客户端方法的印象
3D 质量非常好!场景的深度令人惊叹,几何形状正确, 没有转换固有的缺陷,也没有头显的镜头畸变。 一切都很均匀、干净、清晰,看起来像真实世界。 但存在串扰(鬼影),粗略估计约为 ~1%。 我们无法通过手动精确调整眼镜的同步参数。 要接近理想状态,您必须同时手动调整许多设置 在不同的对话框中。这是一项艰巨的任务,尤其是在动态场景中。 必须添加一个自动优化器,我们很快就会这样做。
总的来说——印象非常积极...

接下来,我们将尝试通过 ReShade 客户端连接基于 DirectX 9、10 的旧游戏。 这要困难得多,所以我们不会着急。 未完待续——请稍后再来查看...

Homepage Terms & Conditions About Us Privacy Policy Business Info Contacts Payment Shipping Send Msg