游戏

S3D 与 WibbleWobble

应众多游戏玩家的要求,我们正在调整硬件并升级驱动程序,以全面兼容全新的 WibbleWobble 技术。 该技术使得在现代 PC 上以真正的立体 3D 方式畅玩现代游戏成为可能,即使开发者从未提供过此类模式。 如果你拥有高刷新率显示器和兼容设备,就能借助 WibbleWobble 享受震撼而逼真的游戏视觉盛宴。

WibbleWobble Core
Discord 社区

它是什么

WibbleWobble 能将普通的平面游戏转变为具有“通往世界的窗口”视角的立体 3D 效果。 通过头部运动追踪,你可以像观察真实世界一样观察游戏。 你不需要昂贵的专用 3D 显示器。 软件和价格实惠的 3D 眼镜才是真正的魔法所在……

优势

可以畅玩 Steam 上大量此前在 PC 上无法使用的 VR 游戏。 它们过去只能在昂贵的 VR 头显上运行——传奇之作 Half-Life Alyx 需要额外价值 1,200 美元的硬件。 我们的解决方案消除了这一要求。在大型现代游戏显示器上享受高质量的立体 3D 体验。 120+ FPS 的流畅游戏体验,清晰细腻的画面,以及鲜艳的色彩。 最棒的是,现代 PC 游戏显示器在保持价格实惠的同时,还能提供出色的画质:

最佳显示器概览
为 3D 选择最佳显示器

工作原理
写给好奇的游戏玩家
对该技术的通俗介绍,包括它是如何构建以及如何工作的。 如果你不感兴趣,则无需阅读——内容较为枯燥。

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

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

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

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

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

如果FOV是:
过大 世界看起来像玩具一样,物体的比例也失真了
过低 世界显得巨大无比,一切都笼罩在你头顶
在3D模式下,深度会随着比例一起崩坏,眼睛疲劳也随之而来

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

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

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

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

这两种模式不能同时启用。使用 CRT Sim时,客户端配置中的黑帧插入间隔参数必须为零。 另外值得特别强调的是,游戏的运行速率可能低于显示器输出帧的速率, 而程序会将缺失的帧补足到显示器的速率。但这不是生成 新的中间图像——而是重复已有的帧。 换句话说,它没有重采样方法所提供的那种流畅感。

串扰是一种效应,即原本给一只眼睛的图像 会部分进入另一只眼睛。结果,观看者会在物体旁边看到双重轮廓或半透明 “鬼影”。这会降低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。重复本身不会引入失真,但动作与图像之间的延迟会累积:帧捕获、处理、输出。对于头部追踪来说,任何这样的延迟都会被感觉为场景的“漂浮”。Game Config为此有一个Frame Capture Delay参数,用于调整捕获时机。

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

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

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

复杂的安装
必须安装SteamVR。驱动程序通过Install.bat以管理员 权限注册,之后必须手动向config\steamvr.vrsettings文件添加两行: "forcedDriver": "WibbleWobbleVR"和"activateMultipleDrivers": "true"。 然后在STANDING ONLY模式下完成Room Setup。任何步骤出错,立体效果就会消失, 你会得到一个黑屏,且没有关于原因的明确消息。

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

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

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

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

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

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

一个常见问题
配置的复杂性以及启动准备。要试用 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 客户端
只想要“通往世界的窗口”效果? 单目 + 重投影
您可以以折扣价购买高质量的 S3D Kit:发射器 + 眼镜。
该套装开箱即用。
S3D KIT
注意:从这里开始,请检查所有下载的文件 使用杀毒软件!

连接

安装软件

第 1 步。更新显卡驱动
视频播放器使用的是 NVIDIA Studio 驱动;用于游戏时 必须将其替换为 GeForce Game Ready 驱动
NVIDIA 驱动

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

速度

第 2 步。安装发射器驱动
使用 3D Vision 发射器或 S3D 发射器
同一个兼容的、经过数字签名的原厂驱动适用于这两种 设备。S3D 发射器必须切换到 NVIDIA 模式, 方法是按住最后一个按钮约两秒钟。

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

第 3 步。下载并解压 WibbleWobble
转到 Releases 页面(在 GitHub 上)。 下载最新版本并将其解压到一个方便的文件夹中。 请将文件夹选择在固定位置——应用程序注册后便无法移动。 文件夹路径必须不含空格,并且只能使用拉丁字母。

第 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 Client 显示,请选择:

Virtual Reality
Graphics API - DirectX
VR Headset - SteamVR

运行测试
如果一切都正确完成,并且 SteamVR 读取了配置, 它应该立即显示带有“头显式”视图的控制界面图像。 但对我们来说这并没有发生。通过键盘对 WibbleWobble 界面的任何调用 都没有任何作用。鼠标失灵,控制无法工作。 启用发射器或进行任何进一步操作都不可能……

此时你应该重启计算机!

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

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

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

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

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

接下来,我们将尝试通过 ReShade 客户端连接 基于 DirectX 9、10 的较旧游戏。 这要困难得多,所以我们不会着急。

未完待续——请稍后再来查看...


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