发行说明

版本 4.0.1

  • 更新了 GPU 允许列表,以解决某些情况下某些新型号 GPU 被拒绝的问题。

  • 在 Android 示例客户端中将 AImageReader 设置为默认解码器。

    • 这解决了长期存在的视觉质量问题,尤其是在 Meta Quest 设备上注意到,会出现模糊线条失真。

  • 修复了 Android 上 AImageReader + 焦点渲染中垂直翻转的错误。

    • 注意:焦点渲染 + AImageReader 仍然会导致图像扭曲。有关详细信息,请参阅 焦点缩放

  • 修复了 Windows 示例客户端代码,以向服务器发送正确的控制器 ID 字符串。

  • CloudXR 服务器系统要求 中添加了文档,以阐明支持和测试的配置,尤其是 vGPU 软件/驱动程序版本。

版本 4.0

  • 更新了应用程序路径传递给 CloudXR 的方式,现在通过 ‘params’ 结构传递,而不是通过其自身的 API。请参阅 CloudXR 文件存储。这对于 Android 最为重要,因为最新的操作系统现在“沙箱化”了应用程序文件访问,因此最简单的解决方案是使用特定于应用程序的数据文件夹。有关更多信息,请参阅 Android 作用域存储

  • 颠倒了整体日志记录方法。删除了将应用程序消息发送到 CloudXR 的 API,并用新的客户端回调替换它,以接收来自 CloudXR 的消息。有关实现细节,请参阅 修订后的 CloudXR 日志记录 的描述。

  • 通过新的前瞻性 API 和方法彻底修改了输入/控制器处理。有关更多信息,请参阅 CloudXR 输入系统

  • 添加了客户端选项,可以通过设置 cxrHmdTrackingFlags_HasPoseID 标志和 cxrHmdTrackingState 中的 64 位 poseID 成员,为姿势更新添加唯一 ID。稍后,cxrFramesLatched 结构将返回给客户端应用程序,指示在渲染当前视频帧时使用了哪个 poseID

  • 改进了姿势预测算法。

  • 提高了视频流设置/配置的灵活性。新的 API 可显式定义所需的流。有关更多详细信息,请参阅 客户端设置

  • 添加了对为 5G 网络启用 L4S/ECN 拥塞处理的支持。有关更多信息,请参阅 CloudXR 网络设置

  • 改进了 SDK 中的错误代码、消息和报告。

  • 为 Windows 添加了实验性服务器示例应用程序,该应用程序直接与 CloudXR 通信,而无需 SteamVR。

  • 由于跨设备的稳定性问题,已弃用 ImageReader 解码器。将在未来的版本中重新审视。

  • 从 Android 客户端库中删除了对实验性 SXR 解码器的支持。

  • 从 CloudXR 服务器中删除了对预配置客户端设备描述的支持。将在未来的版本中添加类似的功能。

  • 从 SDK 中删除了 WaveVR 示例,因为 HTC 在 github 上有一个第一方示例客户端:HTC CloudXR 客户端示例

内部版本

注意

这是 3.x 分支上的 NVIDIA 内部版本,我们在此处将其分开以提高可读性。

  • 用于 VR 流的 QoS 优化,以防止左右眼视频的质量差异。

  • 添加了客户端选项,可以通过设置 cxrHmdTrackingFlags_HasScaling 标志并在 cxrHmdTrackingState 的新 scaling 成员中指定比例因子,将比例因子发送到服务器。

  • 修复了恢复 iOS 客户端时导致挂起的错误。

  • 修复了由于客户端描述符标志中缺少 cxrDebugFlags_OutputLinearRGBColor 而导致 Android ARCore 客户端视频看起来很暗的问题。

  • 修复了 Windows 客户端中使用 -dump-images 保存的 PNG 失真的错误。

  • 修复了导致 Android 客户端日志被截断的错误。

  • Oculus Quest 2 示例客户端的 90hz 支持不再自动启用 AImageReader 解码器。

  • 删除了已弃用的 iOS Objective-C 客户端。

  • 更改了客户端应用程序数据目录的处理方式。请参阅 CloudXR 文件存储 以识别客户端应用程序数据文件夹,以及最近 Android 更改的新要求。

  • 添加了新章节 如何在 Android 上启动,其中汇总了文档中的信息,并指出了在 Android 设备上使用启动选项文件的更改。

版本 3.2

  • 新的客户端 API,用于查询实时 QoS 和网络反馈。

  • 新的客户端 API,用于指定网络接口和拓扑,以便 CloudXR 可以选择优化的 QoS 设置。

  • Oculus Quest 2 示例客户端的 90hz 支持。

    • 自动启用 AImageReader 解码器。

  • 针对优化的 Android AImageReader 解码器进行了重大的稳定性改进。

  • Android 客户端的新标志,用于请求线性或 sRGB 输出。有助于解决颜色太暗或太亮的问题。

  • 通过使用线性交换链而不是 sRGB,改进了 Focus 3 上的颜色输出。

  • 用 Swift 编写的新的 iOS ARKit 示例客户端。

    • 与 Objective C 客户端的功能对等。

    • Objective C 客户端已弃用,将在未来的公共版本中删除。

  • iOS 示例客户端现在将其日志发布到共享位置,以便使用 ‘Files’ 应用程序轻松访问。

  • cxrTrackedDevicePose 现在使用向量 + 四元数来表示姿势变换,而不是 cxrMatrix34

  • 客户端可以选择随姿势更新发送用户定义的 64 位 ID。服务器将返回该 64 位 ID 以及从该姿势渲染的帧。

  • 客户端可以选择更新头戴式显示器的投影参数,并在姿势更新中发送修订后的 IPD。

  • 可以为客户端设备预配置服务器,以允许在任何客户端连接之前启动服务器应用程序。

  • 从示例客户端中删除了连接失败时的自动重新连接。

  • 删除了 ARCore 示例中对云锚点的支持。

版本 3.1.1

  • 提高了 Oculus Quest 2 和 HTC VIVE Focus 3 示例应用程序的稳定性。

  • 修复了 iOS 示例客户端库路径。

  • 从 ARCore 示例清单中删除了默认的 Cloud API 密钥。

版本 3.1

  • Oculus 客户端示例现在已更新为 Oculus Mobile SDK 1.46。

  • ARCore 客户端示例现在已更新为 ARCore SDK 1.26。

  • WaveVR 客户端示例现在已更新为 WaveVR SDK 4.1.1。

  • Android 64 位构建现在是默认设置,并且 32 位支持已被弃用。

  • 已将 HTC VIVE Focus 3 支持添加到 WaveVR 客户端,并且 HTC VIVE Focus Plus 支持已被弃用。

  • 预编译的 Oculus 客户端 .apk 已从 CloudXR SDK 包中删除。

  • 针对 Oculus 和 WaveVR 客户端改进了 Android 头戴式显示器的 sRGB 处理,现在应该可以提供预期的视觉效果。

  • Android 头戴式显示器现在应该在似乎会挂起的情况下退出。这包括服务器未响应和服务器断开连接的情况。

  • 其他各种错误修复。

版本 3.0

  • 更新了 iOS ARKit 示例客户端。

    改进包括以下内容

    • 修复了视口旋转扭曲问题。

    • 检测到的平面被可视化,以使世界原点选择更容易。

    • 短按平面会将世界原点设置为触摸位置。

    • 长按重置世界原点。

    • 添加了用于旋转和缩放的滑块。

    • 修复了其他问题以改善体验。

  • 添加了音频反向通道,以将客户端输入音频(例如,麦克风)发送到服务器。

  • 修复了通过 RenderAudio 客户端回调在 Android 上自定义音频播放的支持。

  • 更新了 Android 示例,以使用 Google Oboe 音频库播放和捕获音频。

  • 修复了 Wave VR 客户端中的颜色和伽玛处理。

    更新了 Oculus 客户端以使用正确的色彩空间转换矩阵。

  • 修复了 ARCore 客户端中不透明区域半透明的透明度问题。

  • 添加了启动/命令行选项以转储服务器和客户端视频比特流。

  • 修复了使用 -tle跟踪本地事件)日志记录时 Android 设备上间歇性视频损坏的问题。

  • 更新了焦点渲染支持,采用自定义 6x6 降采样滤波器以提高质量

  • 将 Windows SDK 从 8.1 更新到 10.0.17763.0。

  • 目前将 Oculus VR 示例限制为 72hz。

    将在未来的更新中支持更高的刷新率。

  • 在执行新的 CloudXR 服务器安装时,删除了较旧的虚拟音频设备实例。

  • 多项 API 更改。

    有关更多信息,请参阅 CloudXR SDK API

    更改包括以下内容

    • 为新的音频反向通道添加了 cxrSendAudio()

    • cxrConnect() 中添加了 cxrConnectionFlags 参数,以在同步和异步连接之间进行选择。

      异步连接在后台线程中发生,这使客户端在尝试建立连接期间保持响应。

    • 添加了 UpdateClientState 回调,以在连接状态更改时通知客户端。

      它还提供了连接失败或意外断开连接的原因。删除了冗余的 Disconnect() 客户端回调。

    • cxrLatchFrame()cxrReleaseFrame()cxrBlitFrame() 已围绕新的 cxrFramesLatched 结构进行了修订和统一。

      较旧的 cxrLatchFrameXR()cxrReleaseFrameXR() 已删除,请改用新的统一函数。ARCore 客户端现在必须像 Android VR 客户端一样使用 cxrBlitFrame() 渲染视频帧。

    • 删除了未使用的 cxrIsRunning()

    • 删除了 cxrSendChaperone()

      cxrChaperone 结构现在是 cxrDeviceDesc 结构的一部分,并在成功连接后传递给服务器。

    • 为没有控制器的头戴式显示器添加了客户端和服务器对 cxrControllerType_None 的支持。

  • 各种其他小的错误修复和优化。

  • 为了与 CloudXR 的最高标准保持一致,CloudXR 3.0 将不支持 Microsoft HoloLens 2 (HL2)。

    先前提供的 HL2 示例应用程序和支持客户端库已被删除。

版本 2.1

  • 添加了基于 Apple ARKit 的 iOS 客户端示例,用于 CloudXR AR 流。

    目前,仅支持 H.264。

  • 将 WaveVR 客户端示例更新为 WaveVR SDK 3.2.0。

  • 将 Windows 客户端示例更新为使用 SDL 版本 2.0.14。

  • 将 Android 客户端示例更新为使用 Gradle 版本 6.1.1。

  • 修复了构建依赖于某些未正确包含的 DLL 的 Windows 客户端的问题。

  • 调整了流参数,以更好地处理抖动较高的不良网络。

  • 视频比特流现在在比特流标头中指示 sRGB 传输特性。

  • 各种小的错误修复和优化。

  • CloudXR 服务器安装程序现在还打开 UDP 端口 47999、48000、47998、48005 和 48002,作为临时解决方法,以解决某些客户端设备遇到的连接问题。

已知问题

服务器在重新连接时崩溃

如果您使用 -tle 启动选项(用于捕获服务器事件跟踪)运行服务器,连接和断开连接客户端,然后尝试重新连接客户端,则服务器将崩溃。该问题已被理解,将在后续版本中修复。如果您需要捕获跟踪,请在客户端断开连接后重新启动服务器。

更改已连接的客户端

CloudXR 服务器缓存第一个连接设备的设备描述符,因此在更改为不同的控制器或具有不同 cxrDeviceDesc 的设备时,必须重新启动服务器。它将在日志中写入设备描述符不匹配,并终止连接。

Microsoft Remote Desktop

Microsoft Remote Desktop 与 CloudXR 不兼容。有关更多信息,请参阅 远程桌面软件

Android 上不一致的 sRGB 处理

某些 Android 设备在显示 sRGB 输出时出现问题,导致条带或图像变暗。为了缓解这种情况,添加了一个新的调试标志 cxrDebugFlags_OutputLinearRGBColor,SDK 用户可以使用该标志从 sRGB 切换到线性输出。

iOS 上的生命周期问题

在连接到服务器时暂停和恢复 iOS 示例应用程序无法按预期工作。为了解决这个问题,iOS 客户端必须在尝试通过滑动应用程序轮播将其滑出之前强制退出。

SteamVR 安全模式

有时,您可能会在服务器上看到安全模式问题。此错误特定于 SteamVR,以下是解决方法

  1. 将服务器上的 SteamVR 切换到 Beta 版。

  2. 继续单击禁用安全模式,直到此对话框消失。

  3. 要开始流式传输,请遵循此确切顺序

    1. 在服务器上启动 SteamVR。

    2. 连接客户端。

    3. 在服务器上启动 VR 应用程序。

如果您不严格按照此顺序操作,则可能会遇到问题。

SteamVR 骨骼输入

这些游戏使用 CloudXR 当前不支持的骨骼输入技术,并且无法正常工作

  • Boneworks

  • Pavlov VR

HTC VIVE Focus 3 控制器支持

请注意,Focus 3 的控制器支持当前通过 ‘Oculus Touch’ 配置文件映射。这意味着输入在映射和整体功能上应与 Quest 2 非常匹配,但这有一个副作用,即当将 Focus 3 与 CloudXR 一起使用时,您将看到 Oculus Touch 控制器模型。CloudXR 团队正在与 HTC 合作,以找到完全支持其控制器的适当长期解决方案。

Android 上的低延迟音频支持

某些 Android 设备不支持 Oboe 低延迟模式,为了正常运行,您需要在客户端中禁用该模式,无论是在一般情况下还是在专门检测到确定存在音频处理问题的设备时。