注视点渲染Foveated rendering是什么

简介: Foveated rendering听起来好像是非常复杂的技术。但实际上注视点(foveation)的底层概念非常直接。使用人注视屏幕的信息,可以减少生成场景的运算资源,方式是使用高分辨率渲染人眼观看的小区哉,而场景外的其它区域(人的四周)采用更小的分辨率和更少的细节。注视点渲染主要用于显示技术,如VR头显和AR眼镜,对些场景资源优化至关重要。

Foveated rendering听起来好像是非常复杂的技术。但实际上注视点(foveation)的底层概念非常直接。使用人注视屏幕的信息,可以减少生成场景的运算资源,方式是使用高分辨率渲染人眼观看的小区哉,而场景外的其它区域(人的四周)采用更小的分辨率和更少的细节。注视点渲染主要用于显示技术,如VR头显和AR眼镜,对些场景资源优化至关重要。

本文中作者会回答一个问题:什么是注视点渲染?我们会讨论动态注视点渲染、静态(或固定)注视点渲染,以及这些技术如何降低GPU的计算负载。还会讲到其姐妹概念-动态注视点传输如何了减少所需的网络带宽。

注视点渲染是一种设备性能优化技术,将资源集中于渲染人眼所注视的显示区域。该区域中的内容即刻以高分辨率渲染人眼注视的周边。其余的图像-人视角的外围以低分辨率进行渲染,减少渲染场景所用的资源,同时又让用户体验没有可见的损失。

2023112902201952.jpg

苹果展示了人眼渲染图像和汽车图展示了大脑是如何渲染内容的

注视点渲染成立是因为它模拟了人的视觉,以及我们的感知在视场中是如何降级的。我们的大脑渲染所看到的内容是通过焦点高分辨率(图示中的苹果)配合其它看到内容的中低分辨率完成的。

2023112902273415.jpg

VR头显中的固定注视点渲染

什么是静态(或固定)注视点渲染?

注视点渲染中的静态方式,或我们所称的固定注视点渲染,假定用户的焦点是屏幕的中央(有时就是这样的)。图示中展示了固定注视点渲染在VR头显是如何通过硬编码区域对屏幕进行划分的。假定的用户注意力区域(屏幕中心的白色区域)以100%进行渲染。灰色区域以中分辨率渲染,蓝色区域以低分辨率渲染,进而减少渲染整个场景所需的资源。可以在几乎所有设备上实现静态注视点渲染,极有可能看到一定程序的资源优化,但不一定能达到最优用户体验。早期镜片的外围变形使得我们有机会在本就会模糊的区域降低分辨率,但镜片的品质在提升,因此需要对整个视场进行高分辨率的渲染。

什么是动态注视点渲染?

2023112902384997.jpg

VR头显中的动态注视点渲染

动态注视点渲染利用人的实际注意力区域完整渲染图片的小区域(图中的白色区域),向外扩展为中(灰色区域)和低分辨率(浅蓝色),不产生品质和用户体验的降级。要实现动态注视点渲染,我们需要精准的、低延时的眼动追踪,可反复发送用户实时的准确注视点。我们对动态注视点渲染所做的一些基准测试结果非常优异。用Unity引擎对Pico头显所做一项测试中,GPU着色负载最高下降72%,平均下降60%。我们的测试显示帧率稳定性大幅提升,大启用了动态注视点渲染看一下吧每秒没掉到90帧以下。这对于用户于体验极佳。

动态注视点渲染的好处

因其可以降低处理负载,动态注视点渲染可以让GPU以更低温度运行,相应地会降低能耗,进而减少对冷却的需求以及降低风扇的噪音,提升了舒适度也延长了电池的寿命。

限定全分辨率渲染的区域降低了复杂着色器的负载,减少了渲染场景所花费的时间。空闲的资源可用于带来更真实的着色和更高级别的场景复杂度。

最重要的是动态注视点渲染(DFR)是一项提升指定硬件架构性能的优化技术。在实践中,DFR延长了独立头显上固定资源GPU的寿命,支持新兴内容和显示技术,并以更低的代价提供了逼真、沉浸式的用户体验。

什么是动态注视点传输?

动态注视点传输是轻量可穿戴设备得以实现的基石。随着设备越来越轻、资源越来越有限,低延时网络和设备外运算对很多应用都变得至关重要。一种降低设备和云端或边缘计算之间数据传输量的方式就是动态注意点传输。

动态注视点传输利用眼动追踪捕捉人眼的注视点,向远端处理器发送指令,根据人眼注视的区域以高、中、低分辨率渲染场景(与设备上的动态注视点渲染运行原理相同),从而降低每个场景在网络中所传输的数据量。

为何要实现注视点渲染?

注视点渲染是XR的一项核心技术。在设备上实现动态注视点渲染,需要有眼动追踪配件,相机、反光镜以及可以处理眼部机理的算法。这一技术需要实时发送精准的注视点,并且需要适用于使用设备的来自各地的人。对于商业设备,设计的方案要求能够利用动态注视点渲染开发高级应用的同时又不会大量地重复编程。

参考链接:https://www.tobii.com/blog/what-is-foveated-rendering

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
6月前
three.js的3D模型渲染主要构成
three.js的3D模型渲染主要构成
105 0
|
编解码
Blender视图渲染知识
Blender视图渲染知识
Blender视图渲染知识
|
1月前
|
JavaScript 前端开发
使用 WebGL 创建 3D 动画
【10月更文挑战第3天】使用 WebGL 创建 3D 动画
|
3月前
|
存储 缓存 数据可视化
Cesium渲染一帧中用到的图形技术
Cesium渲染一帧中用到的图形技术
100 0
Cesium渲染一帧中用到的图形技术
【Redshift渲染器渲染出图片有色差(红移渲染器)】
【Redshift渲染器渲染出图片有色差(红移渲染器)】
197 0
【Redshift渲染器渲染出图片有色差(红移渲染器)】
|
存储
Renderer.material与Renderer.sharedMaterial的区别
此函数自动实例化材质并使它们对于此渲染器是唯一的。在销毁游戏对象时销毁材料是您的责任。 Resources.UnloadUnusedAssets 也会破坏材质,但通常仅在加载新关卡时调用。
263 0
Renderer.material与Renderer.sharedMaterial的区别
|
前端开发
react 服务器端渲染 ssr 中 localstorage/history/window is not defined 解决方案
1、原因      ssr 会在后端执行组件的 componentWillMount 以及在它这个生命周期之前的生命周期     也就是说 ssr 阶段是不会执行 componentDidMount 方法的    当你在 componentWillMount 之前当生命周期里面调用 window / localstorage 全局对象的时候,  它其实是在服务器上面执行等,因为 window / localstorage 是浏览器的属性对象。
4520 0
|
图形学 前端开发