ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ALVR Roadmap 解读:Compositor 重写、Vulkan 视频编码与 Monado 驱动的演进路线

ALVR Roadmap 解读:Compositor 重写、Vulkan 视频编码与 Monado 驱动的演进路线 音视频图形学【免费下载链接】ALVRStream VR games from your PC to your headset via Wi-Fi项目地址https://gitcode.com/gh_mirrors/al/ALVR点击查看免费下载ALVRAir Light VR通过 Wi-Fi 将 PC 端的 VR 游戏画面无线串流到头显其官方路线图 wiki/Roadmap.md 明确了项目的长期目标——「在 XR 设备之间建立一座通用桥梁」并列出三大核心演进方向Compositor合成器重写、Encoder编码器重写和 Monado 驱动支持。本文以该路线图为主线结合当前仓库源码逐一拆解每项计划的动机、落地状态与技术原理帮助读者理解 ALVR 架构走向以及 Linux 平台特性FFR、色彩校正、Vulkan 视频编码在其中的位置。长期目标成为 XR 设备之间的通用桥梁路线图开篇即点明项目的北极星Create a universal bridge between XR devices在 XR 设备之间建立通用桥梁。这句话包含两层含义设备侧解耦ALVR 的客户端不再是只针对某一厂商头显的专用实现而是基于 OpenXR 这一跨厂商运行时标准。仓库中的alvr/client_openxr即是以 OpenXR 为核心构建的客户端其 lib.rs 通过openxrcrate 加载libopenxr_loader.so并创建 XR 实例配合 extra_extensions 目录下的各厂商可选扩展如 Meta 的 passthrough、HTC 的面部追踪、肢体追踪等实现对不同头显与不同运行时能力的适配。运行时侧解耦服务端streamer目前主要对接 SteamVR通过alvr/server_openvr的 OpenVR 驱动实现而路线图规划的 Monado 驱动则试图让服务端也能对接其他 XR 运行时进一步扩大「通用桥梁」的覆盖面。理解这一长期目标就能理解后续三项短期计划为何优先它们都是为了让「通用桥梁」在不同操作系统、不同 GPU 硬件、不同运行时上都能成立。路线一Compositor 重写——为 Linux 补齐 FFR 与色彩校正目的补齐 Linux 渲染能力为分片编码铺路路线图指出 Compositor 重写的目的是为 Linux 增加 FFRFixed Foveated Rendering固定注视点渲染与色彩校正支持并为分片编码sliced encoding做准备。现状FFR 与色彩校正已在全平台完成路线图给出的状态是FFE应为 FFR 的笔误原文如此与色彩校正已在所有平台完成。从仓库源码可以印证这一点LinuxVulkan侧alvr/server_openvr/cpp/platform/linux/FrameRender.h中定义了ColorCorrection与FoveationVars两套着色器常量结构分别包含 brightness/contrast/saturation/gamma/sharpening 与 eyeWidthRatio/centerSizeX/edgeRatioX 等参数并提供setupColorCorrection()、setupFoveatedRendering()接口对应的 compute shader 源码位于 shader/color.comp 与 shader/ffr.comp。WindowsD3D11侧对应实现为 win32/FFR.cpp、win32/FFR.h 以及 HLSL 版本的色彩校正着色器 ColorCorrectionPixelShader.hlsl。统一嵌入alvr/server_openvr/src/graphics.rs通过include_bytes!把 Linux 侧预编译好的 SPIR-Vquad.comp.spv、color.comp.spv、ffr.comp.spv、rgbtoyuv420.comp.spv与 Windows 侧的ColorCorrectionPixelShader.cso一并嵌入 Rust 二进制再由 C 渲染管线加载。源码级原理FFR 与色彩校正的实现细节FFR固定注视点渲染其核心思想是降低画面边缘的采样分辨率把宝贵的编码带宽集中到视野中心。Linux 端的 ffr.comp 以 8×8 工作组对合成纹理做 compute pass通过constant_id传入eyeSizeRatioX/Y、centerSizeX/Y、edgeRatioX/Y等配置对应设置项中的中心区域大小与边缘压缩比左右眼各按自己的中心偏移centerShiftLeft/Right通过 push constant 传入执行CompressAxis()轴向压缩压缩曲线保证中心区域保持原始分辨率、边缘区域渐进降采样右眼方向在TextureToEyeUV()中做水平翻转(1 - x) * 2以正确对应镜像后的右眼图像。色彩校正Windows 侧 HLSL 版 ColorCorrectionPixelShader.hlsl 展示了完整处理链先做 8 邻域锐化sharpenNeighbourWeight -sharpening / 8.再依次叠加亮度pixel brightness、对比度(pixel - 0.5) * contrast 0.5、饱和度与 luma 的lerp后取 lighten 混合最后做 gamma 校正pow(pixel, 1. / gamma)。这些参数与 dashboard 中「视频/图像调整」类设置一一对应。为什么与分片编码相关分片编码sliced encoding将单帧画面切成多个独立条带并行编码能显著降低编码延迟。而 FFR 的「中心高分辨率、边缘低分辨率」输出恰好需要精细的条带划分才能充分发挥并行编码优势Compositor 重写正是在渲染与合成侧为这一能力做结构性准备。路线二Encoder 重写——以 Vulkan 视频扩展统一跨平台编码目的单 API 覆盖所有系统与硬件路线图指出 Encoder 重写的目的是使用Vulkan 视频扩展Vulkan Video Extensions以单一 API支持任意操作系统与任意硬件。这是 ALVR 面临的最大跨平台痛点当前仓库中编码后端按平台与厂商分散实现alvr/server_openvr/cpp/platform/win32/下有VideoEncoderNVENC.cpp、VideoEncoderAMF.cppAMD、VideoEncoderVPL.cppIntel三套 Windows 专属实现alvr/server_openvr/cpp/platform/linux/下则有EncodePipelineVAAPI.cppVAAPI 硬件编码与EncodePipelineSW.cpp软件编码以及 NVIDIA 专属的EncodePipelineNvEnc.cpp它们统一通过 EncodePipeline.h 暴露的PushFrame()/GetEncoded()抽象接口工作。这种「每平台一套编码器」的模式维护成本极高。Vulkan 视频扩展VK_KHR_video_encode_*的设想是让编码能力成为 Vulkan 核心 API 的一部分届时 ALVR 只需编写一个基于 Vulkan 的编码管线就能在 Windows、Linux 上同时覆盖 NVIDIA/AMD/Intel 甚至未来其他厂商的硬件。现状受制于厂商支持进度路线图给出的状态是该计划被厂商采用进度阻塞——等待 AMD 与 Intel 采纳该规范、以及该特性稳定落地到 NVIDIA 正式版驱动。仓库中的实际编码链路也印证了这一点Linux 端目前仍走 FFmpeg 的AV_HWDEVICE_TYPE_VULKAN硬件设备路径见 ffmpeg_helper.cpp 中的av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_VULKAN)编码后的帧以AV_PIX_FMT_VULKAN布局交给 FFmpeg 处理说明 Vulkan 视频编码尚未成为可依赖的通用通道FFmpeg 依然是中间层。这正是「被厂商采用进度阻塞」的直接体现。此外仓库alvr/xtask/patches/下的多份 FFmpeg 补丁如 VAAPI 编码器全局头强制开启、动态码率调整、filler data 支持等也说明在 Vulkan 视频扩展成熟之前ALVR 需要借助 FFmpeg 补丁来弥补各硬件编码器的能力缺口。路线三Monado Driver——让服务端支持更多运行时目的以 streamer 服务其他运行时路线图指出 Monado Driver 的目的是让 streamer 能够支持 SteamVR 之外的其他 XR 运行时。Monado 是开源的 OpenXR 运行时实现若 ALVR 服务端能作为 Monado 的驱动存在则任何使用 Monado或兼容 OpenXR 的 Linux 运行时环境的设备/应用都能直接接入 ALVR 的串流能力而不必依赖 SteamVR。这与长期目标「XR 设备之间的通用桥梁」一脉相承客户端侧已有alvr/client_openxr支撑 OpenXR 头显服务端侧若能经 Monado 覆盖开源运行时ALVR 就能同时打通「头显端」与「运行时端」两条生态。现状阻塞于重构路线图给出的状态是该计划阻塞在重构工作上。从源码结构看服务端目前与 SteamVR 的绑定较深alvr/server_openvr/cpp/alvr_server/内含完整的 OpenVR 驱动实现HMD.cpp、Controller.cpp、TrackedDevice.cpp、PoseHistory.cpp、Settings.cpp等驱动逻辑与 SteamVR 的接口、追踪语义耦合紧密。要让服务端适配 Monado 的驱动接口需要先把这些逻辑从 OpenVR 特有概念中剥离出来形成运行时无关的通用层——这正是路线图所说「blocked on refactors」的含义。开发节奏的现实约束路线图最后坦率说明由于开发力量有限无法给出任何时间表ETA新版本发布没有固定节奏也不承诺固定特性集。这一点与仓库现状相符ALVR 是高度依赖 GPU 厂商驱动能力与行业标准Vulkan 视频、OpenXR 生态成熟度的开源项目三条主要路线均处于「受外部条件制约」的状态。对使用者而言这意味着关注官方 CHANGELOGCHANGELOG.md与 wiki/How-ALVR-works.md、wiki/Roadmap.md 即可了解功能演进新特性不会按固定排期发布重大能力如分片编码、Vulkan 原生编码会以「依赖项就绪 重构完成」为前提逐步落地当前可直接验证的进展是FFR 与色彩校正已覆盖全平台Windows 与 Linux这是 Composititor 重写中已交付的部分。小结ALVR 的路线图可以概括为一句话以「XR 设备间的通用桥梁」为终点通过三条相互关联的工程路线推进——Compositor 重写已在 Linux 落地 FFR 与色彩校正为分片编码做准备、Encoder 重写等待 Vulkan 视频扩展被 AMD/Intel 采用并稳定到 NVIDIA 正式驱动、Monado 驱动等待服务端运行时无关重构完成。三条路线均无固定时间表但前者的阶段性成果全平台 FFR 与色彩校正已在当前仓库源码中完整可查、可运行是理解 ALVR 架构演进的最佳入口。赞分享音视频图形学【免费下载链接】ALVRStream VR games from your PC to your headset via Wi-Fi项目地址https://gitcode.com/gh_mirrors/al/ALVR点击查看免费下载相关推荐nvm 演进路线图深度解读从源码安装重写到 v1.0.0 里程碑nvm 演进路线图深度解读从源码安装重写到 v1.0.0 里程碑 导读 本文以 nvm 官方 ROADMAP.md https://link.gitcode.CLI开发工具版本控制Dropzone 7.0 路线图深度解读TypeScript 重写、API 清理与架构演进Dropzone 7.0 路线图深度解读TypeScript 重写、API 清理与架构演进 导读 本文以 ROADMAP.md https://link.gi前端UI组件解读 Buildah Roadmap季度里程碑与 OCI 镜像构建工具的演进路线解读 Buildah Roadmap季度里程碑与 OCI 镜像构建工具的演进路线 Buildah 的 ROADMAP.md https://link.gitc云原生上一篇Dogecoin Core 使用指南从节点部署到 JSON-RPC 开发与费用策略下一篇AWX 作业模板标签子资源 API/api/v2/job_templates/{id}/labels/ 的增删改查与孤儿标签回收机制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表