本发明属于设计实时,具体涉及一种基于网格细节层次的注视点渲染方法和装置。
背景技术:
1、虚拟现实(virtual reality)技术和应用取得了长足的发展。vr环境中由于对低延时、高分辨率渲染的高要求,传统的渲染方法可能会消耗大量的计算资源,影响用户体验。针对vr渲染的特点,很多渲染优化方法被相继提出,注视点渲染(foveated rendering)便是其中之一。
2、注视点渲染是一种视觉优化技术,其核心概念是基于人眼的视网膜特性进行图像渲染优化,人眼在视网膜的中央凹区域有最高的视觉分辨率,而在视野的边缘区域,视觉分辨率会显著下降。因此,可以通过眼动追踪设备实时捕捉用户的视线焦点,减少视野外围区域的渲染细节,而保持视线中心区域的高分辨率渲染,以在确保用户的视觉体验的同时,显著降低渲染开销,降低延时。
3、通常注视点渲染的实现采用可变分辨率渲染(variable rate shading)的方式。该方式通过将视图划分为多个区域,根据区域的重要性应用不同的渲染分辨率。如在用户视点的最中心,即视网膜中央凹覆盖的区域,使用最高分辨率进行渲染,在远离中心的区域,使用较低分辨率进行渲染,且用户难以察觉到细节的下降。
4、然而,可变分辨率的实现方式也有一些显著的缺点,首先不同区域的分辨率不同,这种分辨率的渐变有时会导致边缘过渡区域不够平滑,出现视觉分层或画面模糊的现象,用户可能会感知到这种分辨率变化,影响沉浸感和体验。其次,实现可变分辨率方式需要对同一场景进行多次分辨率的渲染,显著增加了渲染的cpu开销。
5、细节层次(level of detail)是一种在计算机图形学中常用的技术,主要用于优化渲染性能。其核心思想是根据对象与摄像机的距离动态调整对象的细节层次。当对象离摄像机较近时,使用高精度的模型;当对象较远时,使用较低精度的模型。使用该方法可以显著的减少绘制几何的复杂度,以减少顶点着色器的调用,提升渲染效率,从而做到渲染的开销与跟相机视角无关。显然,细节层次的思想可以用在注视点渲染技术上。
6、微网格(meshlet)是指将一个复杂的三维网格(mesh)(通常由成千上万个三角形构成)划分为若干小的子单元,每个子单元称为一个微网格。微网格包含一小组顶点和三角形,其在gpu上可以独立处理,使得渲染管线中的几何处理更加高效。现代图形库中,为基于微网格的渲染引入了新的着色器阶段:网格着色器(mesh shader)。通过对三维网格体进行网格片切分,并使用网格着色器进行几何处理,可以大大提升渲染效率。
技术实现思路
1、为了提高vr设备实时渲染的性能,本发明提出了一种基于网格细节层次的注视点渲染方法和装置,实现在不显著降低用户画面观感的情况下极大的降低渲染开销,提高渲染帧率。
2、为实现上述发明目的,实施例提供的一种基于网格细节层次的注视点渲染方法,包括以下步骤:
3、将需要渲染的网格进行切分和简化得到各级别细节层次的微网格,记录微网格相关信息,包括微网格的细节层次包围球和细节层次误差,微网格的父微网格的细节层次包围球和细节层次误差;
4、每帧使用相机、注视点信息以及微网格相关信息对各级别细节层次的微网格进行选择;
5、使用网格着色器渲染每帧所有选出的微网格。
6、优选地,将需要渲染的网格进行切分和简化得到各级别细节层次的微网格,并记录微网格相关信息,包括:
7、根据三角形之间的连接关系,对网格中的三角形进行聚类,得到第0级别细节层次的微网格集合;
8、根据三角形之间的连接关系对当前级别细节层次的微网格集合中所有微网格进行聚类,得到多个微网格组,并对每个微网格组包含的所有微网格进行合并、简化、聚类,得到下一级别细节层次的微网格集合,迭代执行该过程直到微网格集合中只剩下一个微网格为止,得到各级别细节层次的微网格,记录微网格的细节层次包围球和细节层次误差。
9、优选地,对每个微网格组包含的所有微网格进行合并、简化、聚类,得到下一级别细节层次的微网格集合,包括:
10、对当前每个微网格组包含的所有微网格进行合并得到合并后网格;
11、以减少三角形数目为目标对合并后网格进行简化,且在简化过程中需要对微网格组的边界边进行锁定,保证简化后网格跟简化前网格拥有相同的边界,得到简化后网格,同时记录简化过程引入的误差;
12、对简化后网格中所有三角形进行聚类得到下一级别细节层次的微网格集合,下一级别细节层次的每个微网格都称为当前微网格组中每个微网格的父微网格,记录父微网格的细节层次包围球和细节层次误差,对于每个父微网格,记录其细节层次包围球为其所有子微网格的细节层次包围球的并集,其细节层次误差为所有子微网格中最大细节层次误差与简化过程引入误差中的最大值。
13、优选地,经过切分和简化后需要渲染的网格被构建为一个包含全部级别细节层次的树形有向无环图,图中每个节点对应一个微网格,每一层的所有节点为一个级别细节层次的所有微网格,节点之间的有向边代表父子关系,从父节点连接到子节点表示父节点是由子节点所在微网格组简化生成,图的叶节点代表了第0级别细节层次的所有微网格,图的根节点代表最高级别细节层次的微网格,并在每个节点记载微网格相关信息。
14、优选地,每帧使用相机、注视点信息以及微网格相关信息对各级别细节层次的微网格进行选择,包括:
15、采用计算着色器并行地对每个级别细节层次的微网格进行选择,具体基于相机和注视点信息以及微网格相关信息计算到屏幕投影的屏幕误差,将屏幕误差与阈值误差进行比较来选择微网格,并将选择的微网格加入到渲染队列中。
16、优选地,对每个级别细节层次的微网格基于相机和注视点信息以及微网格相关信息计算到屏幕投影的屏幕误差,将屏幕误差与阈值误差进行比较来选择微网格,包括:
17、基于相机和注视点信息以及微网格自身的细节层次包围球和细节层次误差计算微网格到屏幕投影的第一屏幕误差;
18、基于相机和注视点信息以及父微网格的细节层次包围球和细节层次误差计算微网格的父微网格到屏幕投影的第二屏幕误差;
19、当第二屏幕误差大于阈值误差,且当第一屏幕误差小于等于阈值误差时,微网格被选择。
20、优选地,微网格到屏幕投影的第一屏幕误差和父微网格到屏幕投影的第二屏幕误差的计算方式相同,均为:
21、根据细节层次包围球和相机参数计算细节层次误差投影到屏幕上的最大投影误差,根据注视点信息确定注视点的屏幕空间位置,并基于注视点的屏幕空间位置对最大投影误差进行衰减得到衰减后误差,将衰减后误差转换到以像素为单位后得到与阈值误差进行比较的屏幕误差。
22、为实现上述发明目的,实施例还提供了一种基于网格细节层次的注视点渲染装置,其特征在于,包括:
23、细节层次划分模块,其用于将需要渲染的网格进行切分和简化得到各级别细节层次的微网格,记录微网格相关信息,包括微网格的细节层次包围球和细节层次误差,微网格的父微网格的细节层次包围球和细节层次误差;
24、微网格选择模块,其用于每帧使用相机、注视点信息以及微网格相关信息对各级别细节层次的微网格进行选择;
25、渲染模块,其用于使用网格着色器渲染每帧所有选出的微网格。
26、为实现上述发明目的,实施例还提供了一种计算设备,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述基于网格细节层次的注视点渲染方法。
27、为实现上述发明目的,实施例还提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述基于网格细节层次的注视点渲染方法。
28、与现有技术相比,本发明具有的有益效果至少包括:
29、本发明首先将需要渲染的网格进行切分和简化得到各级别细节层次的微网格,同时记录微网格相关信息,然后每帧使用相机、注视点信息以及微网格相关信息对各级别细节层次的微网格进行选择后,使用网格着色器为每帧渲染所有选出的微网格,这样能够在不显著降低用户画面观感的情况下极大的降低渲染开销,提高渲染帧率。