注视点渲染Foveated rendering是什么

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

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

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

人眼中的图像以及汽车图像动态注视点渲染的效果

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

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

固定注视点渲染图示(大区域渲染)

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

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

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

什么是动态注视点渲染?

XR设备中的动态注视点渲染,小区域渲染

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

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

动态注视点渲染的好处

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

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

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

什么是动态注视点传输?

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

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

为何要实现注视点渲染?

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

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

Foveated rendering算法是一种基于人眼视觉特性的图像渲染技术,它利用人眼的视锥体结构,将图像分为高分辨率区域和低分辨率区域,只对高分辨率区域进行精细渲染,而对低分辨率区域进行粗略渲染,从而提高了图像渲染的效率和质量。 Foveated rendering算法的实现需要考虑以下几个步骤: 1.确定视锥体结构:根据人眼的视锥体结构,将图像分为高分辨率区域和低分辨率区域。 2.确定渲染质量:根据视锥体结构和人眼的视觉特性,确定高分辨率区域和低分辨率区域的渲染质量。 3.实现渲染算法:根据确定的渲染质量,实现高分辨率区域和低分辨率区域的渲染算法。 4.实现图像合成:将高分辨率区域和低分辨率区域的渲染结果进行合成,得到最终的图像。 以下是一个简单的Foveated rendering算法的实现示例: ```python import cv2 # 读取图像 img = cv2.imread('input.jpg') # 确定视锥体结构 height, width, _ = img.shape center_x, center_y = int(width/2), int(height/2) radius = int(min(width, height)/4) mask = cv2.circle(img, (center_x, center_y), radius, (255, 255, 255), -1) # 确定渲染质量 quality = [1,0.5, 0.25] # 实现渲染算法 for i in range(len(quality)): size = int(radius * quality[i]) if size <= 0: break x1, y1 = center_x - size, center_y - size x2, y2 = center_x + size, center_y + size roi = img[y1:y2, x1:x2] roi = cv2.GaussianBlur(roi, (51, 51), 0) img[y1:y2, x1:x2] = roi # 实现图像合成 result = cv2.bitwise_and(img, mask) # 显示结果 cv2.imshow('result', result) cv2.waitKey(0) cv2.destroyAllWindows() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值