一种优化大批量节点数据上传的方法及系统与流程

文档序号:36896910发布日期:2024-02-02 21:28阅读:10来源:国知局
一种优化大批量节点数据上传的方法及系统与流程

本发明涉及数据传输,具体涉及一种优化大批量节点数据上传的方法及系统。


背景技术:

1、在进行图形渲染时,往往在一帧之内进行多次cpu到gpu的通信,将数据从内存上传到显存以供gpu进行渲染。但这种数据传输操作对性能消耗很大,因此在渲染时,渲染引擎都尽可能减少不必要的cpu到gpu的数据传输操作,以提升性能。

2、现有的节点数据长传方法是在渲染时,根据当前节点使用的着色器程序(webglprogram)、节点材质(material)以及相机(camera)与上一个渲染节点使用的相比是否发生了变化来减少冗余的数据上传操作。这种更新策略,缓存判断粒度还是较大,比如切换着色器程序不一定要刷新灯光数据、相机数据;同时没有对数据进行详细的分类,导致数据更新时会有牵一发而动全身的冗余数据更新,在轮询中这样的冗余操作多了之后,对性能造成了严重的影响。此外,由于只依据与上一个节点的比较结果判断是否重新上传,在一些情况下会导致更新策略失效。例如,当场景中只有两类着色器程序在交替渲染,在这种更新策略下,每次渲染都会进行数据上传的操作,更新策略就失效了,渲染性能就会严重下降。

3、因此,现有技术还存在更新策略粒度过大,只依据与上一个节点的比较结果,来判断是否更新,易导致更新策略失效,及渲染数据分类太过笼统的问题。


技术实现思路

1、有鉴于此,本发明提出一种优化大批量节点数据上传的方法及系统,按照数据更新频率细化了渲染数据的分类,配合优化之后的更新策略,减少了每帧之内的冗余数据更新,cpu到gpu的数据传输操作,提高了渲染性能。

2、本发明第一方面提出的一种优化大批量节点数据上传的方法,该方法包括:渲染前,根据数据更新频率和数据相关度,分类收集渲染相关数据,其中,所述渲染相关数据包括场景数据、相机数据和灯光数据;渲染时,获取当前渲染的节点使用的着色器程序所使用的渲染数据,基于收集到的所述渲染相关数据,更新当前渲染的节点使用的着色器程序所使用的渲染数据,并将更新后的渲染数据重新上传。

3、进一步的,所述根据数据更新频率和数据相关度,分类收集渲染相关数据包括:根据数据更新频率和数据相关度,分别从场景中、相机中以及场景中的所有灯光对象中对场景数据、相机数据和灯光数据进行单独提取和整理,并分别标记场景数据、相机数据和灯光数据的版本号。

4、进一步的,所述场景数据是从场景中提取、整理出的锚点矩阵、采样设置、对数深度设置、雾效及全局反射图设置、剪裁面设置的渲染相关数据及设置的数据集合。

5、进一步的,所述相机数据是从相机中提取、整理出的相机远近平面设置、对数深度设置、投影矩阵数据、视图矩阵数据、相机位置数据、视口设置的渲染相关数据及设置的数据集合。

6、进一步的,所述灯光数据是从场景中的所有灯光对象中提取、整理出的环境光设置、平行光设置、点光源设置、聚光灯设置的渲染相关数据及设置的数据集合。

7、进一步的,所述渲染时,获取当前渲染的节点使用的着色器程序所使用的渲染数据,基于收集到的所述渲染相关数据,更新当前渲染的节点使用的着色器程序所使用的渲染数据包括:渲染时,获取并记录当前渲染的节点使用的着色器程序所使用的渲染数据,包括灯光数据、相机数据及场景数据;基于收集到的渲染相关数据及标记的版本号,判断当前渲染的节点使用的着色器程序所使用的渲染数据是否为收集到的渲染相关数据,若不是,则更新当前渲染的节点使用的着色器程序所使用的渲染数据;或者,判断当前渲染的节点使用的着色器程序所使用的渲染数据版本是否发生了变化,若渲染数据版本发生了变化,则更新当前渲染的节点使用的着色器程序所使用的渲染数据。

8、进一步的,所述判断当前渲染的节点使用的着色器程序所使用的渲染数据是否为收集到的渲染相关数据包括:根据当前渲染的节点使用的着色器程序所使用的灯光数据和收集到的渲染相关数据中的灯光数据,判断当前渲染的节点使用的着色器程序所使用的灯光数据是否为收集到的渲染相关数据中的灯光数据;若当前渲染的节点使用的着色器程序所使用的灯光数据不是收集到的渲染相关数据中的灯光数据,则对灯光数据进行更新;根据当前渲染的节点使用的着色器程序所使用的相机数据和收集到的渲染相关数据中的相机数据,判断当前渲染的节点使用的着色器程序所使用的相机数据是否为收集到的渲染相关数据中的相机数据;若当前渲染的节点使用的着色器程序所使用的相机数据不是收集到的渲染相关数据中的相机数据,则对相机数据进行更新;根据当前渲染的节点使用的着色器程序所使用的场景数据和收集到的渲染相关数据中的场景数据,判断当前渲染的节点使用的着色器程序所使用的场景数据是否为收集到的渲染相关数据中的场景数据;若当前渲染的节点使用的着色器程序所使用的场景数据不是收集到的渲染相关数据中的场景数据,则对场景数据进行更新。

9、进一步的,所述判断当前渲染的节点使用的着色器程序所使用的渲染数据版本是否发生了变化包括:将当前渲染的节点使用的着色器程序所使用的灯光数据版本号与收集到的渲染相关数据中的灯光数据版本号进行对比,判断当前渲染的节点使用的着色器程序所使用的灯光数据版本有无更新;若当前渲染的节点使用的着色器程序所使用的灯光数据版本有更新,则对灯光数据进行更新;将当前渲染的节点使用的着色器程序所使用的相机数据版本号与收集到的渲染相关数据中的相机数据版本号进行对比,判断当前渲染的节点使用的着色器程序所使用的相机数据版本有无更新;若当前渲染的节点使用的着色器程序所使用的相机数据版本有更新,则对相机数据进行更新;将当前渲染的节点使用的着色器程序所使用的场景数据版本号与收集到的渲染相关数据中的场景数据版本号进行对比,判断当前渲染的节点使用的着色器程序所使用的场景数据版本有无更新;若当前渲染的节点使用的着色器程序所使用的场景数据版本有更新,则对场景数据进行更新。

10、进一步的,该方法还包括:对材质数据进行分类;获取当前渲染的节点的材质数据,判断当前渲染的节点的材质数据与上一节点的材质数据相比是否发生改变;若发生改变,则按分类结果依次更新材质数据,并按分类结果重新上传更新后的材质数据。

11、本发明第二方面提供一种优化大批量节点数据上传的系统,该系统包括:处理器和存储器;所述存储器上存储有可被所述处理器执行的计算机可读程序;所述处理器执行所述计算机可读程序时实现如上所述的优化大批量节点数据上传的方法中的步骤。

12、上述的优化大批量节点数据上传的方法及系统,对着色器程序使用的灯光、相机、场景数据进行了记录,并使用版本号控制对渲染数据进行了标脏,只有当着色器程序改变了使用过的灯光、相机、场景数据或者数据版本发生了变化,本实施例才会进行相关更新,以解决一切换着色器程序就会大范围更新的问题。



技术特征:

1.一种优化大批量节点数据上传的方法,其特征在于,包括:

2.根据权利要求1所述的优化大批量节点数据上传的方法,其特征在于,所述根据数据更新频率和数据相关度,分类收集渲染相关数据包括:

3.根据权利要求2所述的优化大批量节点数据上传的方法,其特征在于,所述场景数据是从场景中提取、整理出的锚点矩阵、采样设置、对数深度设置、雾效及全局反射图设置、剪裁面设置的渲染相关数据及设置的数据集合。

4.根据权利要求2所述的优化大批量节点数据上传的方法,其特征在于,所述相机数据是从相机中提取、整理出的相机远近平面设置、对数深度设置、投影矩阵数据、视图矩阵数据、相机位置数据、视口设置的渲染相关数据及设置的数据集合。

5.根据权利要求2所述的优化大批量节点数据上传的方法,其特征在于,所述灯光数据是从场景中的所有灯光对象中提取、整理出的环境光设置、平行光设置、点光源设置、聚光灯设置的渲染相关数据及设置的数据集合。

6.根据权利要求1所述的优化大批量节点数据上传的方法,其特征在于,所述渲染时,获取当前渲染的节点使用的着色器程序所使用的渲染数据,基于收集到的所述渲染相关数据,更新当前渲染的节点使用的着色器程序所使用的渲染数据包括:

7.根据权利要求6所述的优化大批量节点数据上传的方法,其特征在于,所述判断当前渲染的节点使用的着色器程序所使用的渲染数据是否为收集到的渲染相关数据包括:

8.根据权利要求6所述的优化大批量节点数据上传的方法,其特征在于,所述判断当前渲染的节点使用的着色器程序所使用的渲染数据版本是否发生了变化包括:

9.根据权利要求1所述的优化大批量节点数据上传的方法,其特征在于,还包括:

10.一种优化大批量节点数据上传的系统,其特征在于,包括:处理器和存储器;所述存储器上存储有可被所述处理器执行的计算机可读程序;所述处理器执行所述计算机可读程序时实现如权利要求1-9中任一项所述的优化大批量节点数据上传的方法中的步骤。


技术总结
本发明提供一种优化大批量节点数据上传的方法及系统,该方法包括:渲染前,根据数据更新频率和数据相关度,分类收集渲染相关数据,其中,所述渲染相关数据包括场景数据、相机数据和灯光数据;渲染时,获取当前渲染的节点使用的着色器程序所使用的渲染数据,基于收集到的所述渲染相关数据,更新当前渲染的节点使用的着色器程序所使用的渲染数据,并将更新后的渲染数据重新上传。本发明按照数据更新频率细化了渲染数据的分类,对着色器程序使用的灯光、相机、场景数据进行了记录,并使用版本号控制对渲染数据进行了标脏,只有当着色器程序改变了使用过的灯光、相机、场景数据或者数据版本发生了变化,本实施例才会进行相关更新。

技术研发人员:王鑫,谢帅,吴俊华,井刚,李鉴,芦世鹏
受保护的技术使用者:北京优锘科技股份有限公司
技术研发日:
技术公布日:2024/2/1
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1