首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Meta分享:Quest Pro眼动注视点渲染的原理、实践和应用

查看引用/信息源请点击:映维网Nweon

基于眼动追踪的注视点渲染功能Eye Tracked Foveated Rendering(ETFR)

映维网Nweon 2023年02月17日)Meta在Connect 2022大会为Quest Pro推出了基于眼动追踪的注视点渲染功能Eye Tracked Foveated Rendering(ETFR)。这种全新的图形优化可以利用眼动追踪,以高像素密度渲染注视点区域,并以低像素密度渲染外围区域,从而为开发者节省了大量的GPU算力。同时,ETFR的设计可以允许你在Unity和Unreal中轻松集成。

例如,《Red Matter 2》的开发者表示:““集成ETFR是一个无缝的过程,激活就像拨动开关一样简单。然后,我们的团队专注于最大化像素密度。结果令人印象深刻,像素密度增加了33%,相当于光学中心渲染的像素增加了77%。ETFR和Quest Pro的Pancake透镜组合提供了非常清晰的图像。ETFR真正提升了游戏体验。”

下面这篇博文将进一步介绍ETFR的工作原理,最佳实践和常见问题解答,从而帮助你优化Meta Quest应用的图形。

什么是ETFR?

固定注视点渲染Fixed Foveated Rendering(FFR)固定地在屏幕中心(又称为注视点区域)渲染全像素密度,并在屏幕边缘渲染低像素密度。至于ETFR,它可以利用眼动追踪数据来移动需要渲染全像素密度地注视点区域。由于低像素密度区域始终隐藏在外围视觉中,所以可以基于眼睛注视数据应用更大胆的策略,相对较FFR节省更多的GPU算力。

工作原理

ETFR通过首先从眼动追踪摄像头图像计算用户的注视方向,然后使用注视方向在应用渲染管道中移动高像素密度的注视点区域。

为了做到这一点,Meta的Unity和Unreal集成实现了一个新的Vulkan扩展:Tile Offset (VK_QCOM_fragment_density_map_offset)。通过指定像素偏移值,它允许重复使用相同的foveation map并平滑地移动。如下面的动画所示,Tile Offset在移动注视点区域时提供了更精细的控制,并避免了传统方法中的闪烁伪影:

有Tile Offset

没有Tile Offset

API架构

相关的OpenXR API是从现有的XR_FB_foveation框架(FFR使用的框架)扩展而来。Meta的Unity和Unreal集成在后台调用API,所以你不需要处理细节。原生VR应用程序可以遵循相同的步骤来支持ETFR。

延迟优化

在ETFR管道中,摄像头传感器和处理以与显示器相同的帧速率运行,并与渲染管道完全同步,以最小化眼睛运动和显示时间之间的延迟。特别是,团队抵消了眼动追踪摄像头的捕获时间,从而最小化“眼动追踪器产生新的注视输出”和“用于更新foveation map的注视输出“之间的差距,如下面红色框中显示:

根据当前渲染负载,UE4测试应用程序中测得的端到端管道延迟在46到57毫秒之间。如果在logcat(adb logcat -s VrApi)中读取类似的ETFRLat度量,你应该会得到类似的结果。

限制和最佳实践

ETFR是一个强大的工具,但它不是万能药,可能不适合所有类型的应用。如果你的应用程序属于fragment-heavy片段密集型(例如,使用复杂的材质或以非常高的分辨率渲染),ETFR会有巨大的帮助,因为它会减少给定渲染过程中的片段着色执行。所以如果你的程序属于vertex bound,所述工具不会提供太大的帮助。

另外,ETFR目前仅适用于你的眼睛缓冲区(主层),这意味着如果你使用其他合成器层,渲染和合成相关层的GPU成本将不会随着ETFR而提高,仅会降低眼睛缓冲区的成本。

最终,你应该决定如何以及何时使用这个工具,并确保彻底测试应用程序。就像FFR一样,低像素密度的外围区域会导致闪烁,尤其是对于高对比度和复杂的几何结构。所以,你应仔细选择最大的foveation level,从而平衡性能和视觉质量。

额外的GPU算力节省

Meta建议使用ETFR的额外GPU增益来增加渲染目标大小,从而获得更清晰和更塑形的图像。以下是UE4测试应用程序中以默认和增加眼睛纹理大小渲染的FFR/ETFR的GPU渲染时间示例:

如上表所示,如果你的应用程序现在正在使用FFR-3进行渲染,你可以尝试切换到ETFR-2,从而提高眼睛纹理分辨率,并使用MSAA-2以获得更清晰的图像。其中,GPU时间成本大致相同。

ETFR的GPU算力节省将取决于应用程序的内容,所以请确保以不同的foveation level和渲染目标大小来配置应用程序。

Dynamic Foveated Rendering动态注视点渲染

Meta同时建议启用Dynamic Foveated Rendering动态注视点渲染,以便根据当前GPU渲染负载自动调整foveation level。最大foveation level可由“Foveated Rendering level”指定。在启用这个选项之前,开发人员应确保在最大foveation level下充分测试渲染质量(例如,外围视觉中的视觉伪影不能太多)。

开发人员工具包

ETFR现已支持SDK v49(Unity和Unreal)。

最后的想法

ETFR主要降低了像素吞吐量,并可能为未来的头显实现高PPD(像素/度)渲染。当然,你最终需要平衡应用程序的图形复杂性、分辨率、MSAA和foveation level,在性能节省和视觉质量之间进行权衡。

Meta致力于为你提供更简单的图形优化和性能提升方法,而发布ETFR只是这一旅程的开始。下面是关于ETFR的常见问题解答。

ETFR是否需要OpenXR?

是的,只支持OpenXR,因为Meta完全致力于支持未来的OpenXR API。例如在UE4中,请确保在“XR API”设置下选择了“OpenXR OVRPlugin”。

ETFR是否需要Vulkan?

对于Meta的UE4/Unity ETFR集成,仅支持使用Vulkan+Multiview的应用程序。由于缺少fragment density map和Tile Offset扩展的支持,ETFR无法支持GLES。Meta建议所有UE和Unreal开发者在Quest应用程序中使用Vulkan。

ETFR是一个‘要么用要么不用’的功能吗?

不是,你可以在游戏引擎脚本level的任何时候打开/关闭ETFR或切换到FFR。例如,你可以尝试在游戏主菜单中完全关闭ETFR,并仅在进入游戏场景时打开ETFR。

如何处理眼动追踪许可?

用户第一次使用ETFR打开应用程序时,系统将显示一个权限提示,请求用户接受眼动追踪权限。如果权限被拒绝,应用程序将回退到FFR渲染,但是,你可以选择在游戏引擎脚本level以不同的方式处理回退逻辑。

请注意,用户可以随时选择在通用菜单中暂停眼动追踪,在系统设置中禁用眼动追踪,或取消眼动追踪权限。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230219A01VPZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券