一种区域划分的渲染优化方法及终端与流程

文档序号:21277368发布日期:2020-06-26 23:21阅读:190来源:国知局
一种区域划分的渲染优化方法及终端与流程

本发明涉及一种计算机软件领域,尤其涉及一种区域划分的渲染优化方法及终端。



背景技术:

在对虚拟场景中的模型进行渲染时,一般是获取场景内的所有模型的数据,对所有模型进行渲染,渲染的数据量极大,从而导致渲染过程中发生卡顿的现象,且渲染的效率较低。



技术实现要素:

(一)要解决的技术问题

为了解决现有技术的上述问题,本实用新提供一种区域划分的渲染优化方法及终端,能够提高渲染效率。

(二)技术方案

为了达到上述目的,本发明采用的一种技术方案为:一种区域划分的渲染优化方法,包括:

s1、根据场景大小划分为多个单元区域,将场景中不需要频繁更新的可渲染模型标记为静态模型;

s2、建立与各个单元区域对应的模型批次集合,在所述模型批次集合中建立映射表,所述映射表以静态模型的材质为键,以各个模型批次的批次数据为值,所述批次数据包括所述静态模型的顶点缓存和索引缓存;

s3、依次获取各个单元区域内的静态模型,判断所述映射表的键是否存在与所述静态模型相同的材质;

若否,则新建一个模型批次,并建立所述模型批次的顶点缓存和索引缓存,计算所述静态模型的顶点缓存数据和索引缓存数据并分别写入所述顶点缓存和索引缓存中,在所述映射表的键中新增所述静态模型的材质,并在与所述键对应的值中添加所述模型批次的批次数据;

若是,则将所述静态模型的顶点缓存数据和索引缓存数据合并写入与所述键对应的批次数据的顶点缓存和索引缓存中;

s4、获取虚拟相机的位置,根据所述虚拟相机的位置确定所在的单元区域,根据所述单元区域的模型批次集合的映射表渲染对应的模型批次。

本发明采用的另一种技术方案为:一种区域划分的渲染优化的终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

s1、根据场景大小划分为多个单元区域,将场景中不需要频繁更新的可渲染模型标记为静态模型;

s2、建立与各个单元区域对应的模型批次集合,在所述模型批次集合中建立映射表,所述映射表以静态模型的材质为键,以各个模型批次的批次数据为值,所述批次数据包括所述静态模型的顶点缓存和索引缓存;

s3、依次获取各个单元区域内的静态模型,判断所述映射表的键是否存在与所述静态模型相同的材质;

若否,则新建一个模型批次,并建立所述模型批次的顶点缓存和索引缓存,计算所述静态模型的顶点缓存数据和索引缓存数据并分别写入所述顶点缓存和索引缓存中,在所述映射表的键中新增所述静态模型的材质,并在与所述键对应的值中添加所述模型批次的批次数据;

若是,则将所述静态模型的顶点缓存数据和索引缓存数据合并写入与所述键对应的批次数据的顶点缓存和索引缓存中;

s4、获取虚拟相机的位置,根据所述虚拟相机的位置确定所在的单元区域,根据所述单元区域的模型批次集合的映射表渲染对应的模型批次。

(三)有益效果

本发明的有益效果是:通过对场景进行区域的划分,并对各个区域内的静态模型按材质来划分形成各个模型批次,在渲染时只要确定需要渲染的单元区域,并对单元区域对应的模型批次集合中的各个模型批次进行渲染即可,不需要对整个场景进行渲染,避免了渲染过程中发生卡顿的现象,提高了渲染效率。

附图说明

图1为本发明的区域划分的渲染优化方法的流程图;

图2为本发明的区域划分的渲染优化终端的结构示意图;

【附图标记说明】

1、区域划分的渲染优化终端;2、存储器;3、处理器。

具体实施方式

为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。

请参照图1所示,一种区域划分的渲染优化方法,包括:

s1、根据场景大小划分为多个单元区域,将场景中不需要频繁更新的可渲染模型标记为静态模型;

s2、建立与各个单元区域对应的模型批次集合,在所述模型批次集合中建立映射表,所述映射表以静态模型的材质为键,以各个模型批次的批次数据为值,所述批次数据包括所述静态模型的顶点缓存和索引缓存;

s3、依次获取各个单元区域内的静态模型,判断所述映射表的键是否存在与所述静态模型相同的材质;

若否,则新建一个模型批次,并建立所述模型批次的顶点缓存和索引缓存,计算所述静态模型的顶点缓存数据和索引缓存数据并分别写入所述顶点缓存和索引缓存中,在所述映射表的键中新增所述静态模型的材质,并在与所述键对应的值中添加所述模型批次的批次数据;

若是,则将所述静态模型的顶点缓存数据和索引缓存数据合并写入与所述键对应的批次数据的顶点缓存和索引缓存中;

s4、获取虚拟相机的位置,根据所述虚拟相机的位置确定所在的单元区域,根据所述单元区域的模型批次集合的映射表渲染对应的模型批次。

从上述描述可知,本发明的有益效果在于:通过对场景进行区域的划分,并对各个区域内的静态模型按材质来划分形成各个模型批次,在渲染时只要确定需要渲染的单元区域,并对单元区域对应的模型批次集合中的各个模型批次进行渲染即可,不需要对整个场景进行渲染,避免了渲染过程中发生卡顿的现象,提高了渲染效率。

进一步地,所述s3包括:

依次获取各个单元区域内的静态模型,判断所述映射表的键是否存在与所述静态模型相同的材质;

若否,则新建一个模型批次,建立所述模型批次的顶点缓存和索引缓存,在cpu中将所述静态模型所在的本地空间坐标系转换为世界空间坐标系,替换原有的与本地空间坐标系适配的顶点着色器为与所述世界空间坐标系适配的顶点着色器,计算所述静态模型在所述世界空间坐标系下的顶点缓存数据和索引缓存数据,根据所述顶点着色器获取所述静态模型的颜色信息,将所述静态模型的顶点缓存数据和材质中的颜色信息写入顶点缓存中,将所述静态模型的索引缓存数据写入索引缓存中,在所述映射表的键中新增所述静态模型的材质,并在与所述键对应的值中添加所述模型批次的批次数据;

若是,则在cpu中将所述静态模型所在的本地空间坐标系转换为世界空间坐标系,计算所述静态模型在所述世界空间坐标系下的顶点缓存数据和索引缓存数据,则将所述静态模型的顶点缓存数据和索引缓存数据合并写入与所述键对应的批次数据的顶点缓存和索引缓存中。

从上述描述可知,通过将静态模型所在的本地空间坐标系转换为世界空间坐标系,能够将所有的静态模型统一到同一个坐标系下,在材质中包含有颜色信息外的其他信息,只要静态模型的材质的其他信息都相同,只有颜色信息不同的情况,则也能将该静态模型进行材质上的合并,从而能够将更多的静态模型合并至同一个模型批次中,从而能够在渲染时提高效率。

进一步地,在所述s4之前还包括:

s31、为每个模型批次集合的模型批次设置批次渲染顺序,当渲染到批次渲染顺序为n+1的模型批次之前,提交批次渲染顺序为n的批次。

从上述描述可知,通过为每个模型批次集合的模型批次设置批次渲染顺序,能够保证每个模型批次可以在正确的顺序下被渲染。

进一步地,所述s4包括:

获取各个单元区域的世界空间位置信息,并获取所述虚拟相机的视口大小,将所述视口的左上、左下、右上、右下四个点的屏幕空间坐标转换为世界空间坐标,根据所述世界空间坐标与所述单元区域的世界空间位置信息的相交计算结果确定渲染的单元区域,根据所述单元区域的模型批次集合的映射表渲染对应的模型批次。

从上述描述可知,通过上述方法获取虚拟相机的世界空间坐标与所述单元区域的世界空间位置信息的相交计算结果确定渲染的单元区域,方法简单效率快。

进一步地,所述s4还包括:

当发生静态模型的新增/删除和隐藏/显示时所述静态模型的状态会发生改变,在对各个模型批次进行渲染时,检查所述模型批次内的各静态模型的状态是否发生改变,若是,则标记该静态模型所在的单元区域中对应的模型批次为需要更新,在下一帧渲染时对所述单元区域中对应的模型批次进行重建。

从上述描述可知,当渲染时发现静态模型的状态发生改变才会触发模型批次的更新操作,其更新操作所造成变动的计算量也只是某个单元区域中对应的某个批次进行重建,更新的代建很小且更新效率高。

请参照图2所示,一种区域划分的渲染优化的终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

s1、根据场景大小划分为多个单元区域,将场景中不需要频繁更新的可渲染模型标记为静态模型;

s2、建立与各个单元区域对应的模型批次集合,在所述模型批次集合中建立映射表,所述映射表以静态模型的材质为键,以各个模型批次的批次数据为值,所述批次数据包括所述静态模型的顶点缓存和索引缓存;

s3、依次获取各个单元区域内的静态模型,判断所述映射表的键是否存在与所述静态模型相同的材质;

若否,则新建一个模型批次,并建立所述模型批次的顶点缓存和索引缓存,计算所述静态模型的顶点缓存数据和索引缓存数据并分别写入所述顶点缓存和索引缓存中,在所述映射表的键中新增所述静态模型的材质,并在与所述键对应的值中添加所述模型批次的批次数据;

若是,则将所述静态模型的顶点缓存数据和索引缓存数据合并写入与所述键对应的批次数据的顶点缓存和索引缓存中;

s4、获取虚拟相机的位置,根据所述虚拟相机的位置确定所在的单元区域,根据所述单元区域的模型批次集合的映射表渲染对应的模型批次。

从上述描述可知,本发明的有益效果在于:通过对场景进行区域的划分,并对各个区域内的静态模型按材质来划分形成各个模型批次,在渲染时只要确定需要渲染的单元区域,并对单元区域对应的模型批次集合中的各个模型批次进行渲染即可,不需要对整个场景进行渲染,避免了渲染过程中发生卡顿的现象,提高了渲染效率。

进一步地,所述s3包括:

依次获取各个单元区域内的静态模型,判断所述映射表的键是否存在与所述静态模型相同的材质;

若否,则新建一个模型批次,建立所述模型批次的顶点缓存和索引缓存,在cpu中将所述静态模型所在的本地空间坐标系转换为世界空间坐标系,替换原有的与本地空间坐标系适配的顶点着色器为与所述世界空间坐标系适配的顶点着色器,计算所述静态模型在所述世界空间坐标系下的顶点缓存数据和索引缓存数据,根据所述顶点着色器获取所述静态模型的颜色信息,将所述静态模型的顶点缓存数据和材质中的颜色信息写入顶点缓存中,将所述静态模型的索引缓存数据写入索引缓存中,在所述映射表的键中新增所述静态模型的材质,并在与所述键对应的值中添加所述模型批次的批次数据;

若是,则在cpu中将所述静态模型所在的本地空间坐标系转换为世界空间坐标系,计算所述静态模型在所述世界空间坐标系下的顶点缓存数据和索引缓存数据,则将所述静态模型的顶点缓存数据和索引缓存数据合并写入与所述键对应的批次数据的顶点缓存和索引缓存中。

从上述描述可知,通过将静态模型所在的本地空间坐标系转换为世界空间坐标系,能够将所有的静态模型统一到同一个坐标系下,在材质中包含有颜色信息外的其他信息,只要静态模型的材质的其他信息都相同,只有颜色信息不同的情况,则也能将该静态模型进行材质上的合并,从而能够将更多的静态模型合并至同一个模型批次中,从而能够在渲染时提高效率。

进一步地,在所述s4之前还包括:

s31、为每个模型批次集合的模型批次设置批次渲染顺序,当渲染到批次渲染顺序为n+1的模型批次之前,提交批次渲染顺序为n的批次。

从上述描述可知,通过为每个模型批次集合的模型批次设置批次渲染顺序,能够保证每个模型批次可以在正确的顺序下被渲染。

进一步地,所述s4包括:

获取各个单元区域的世界空间位置信息,并获取所述虚拟相机的视口大小,将所述视口的左上、左下、右上、右下四个点的屏幕空间坐标转换为世界空间坐标,根据所述世界空间坐标与所述单元区域的世界空间位置信息的相交计算结果确定渲染的单元区域,根据所述单元区域的模型批次集合的映射表渲染对应的模型批次。

从上述描述可知,通过上述方法获取虚拟相机的世界空间坐标与所述单元区域的世界空间位置信息的相交计算结果确定渲染的单元区域,方法简单效率快。

进一步地,所述s4还包括:

当发生静态模型的新增/删除和隐藏/显示时所述静态模型的状态会发生改变,在对各个模型批次进行渲染时,检查所述模型批次内的各静态模型的状态是否发生改变,若是,则标记该静态模型所在的单元区域中对应的模型批次为需要更新,在下一帧渲染时对所述单元区域中对应的模型批次进行重建。

从上述描述可知,当渲染时发现静态模型的状态发生改变才会触发模型批次的更新操作,其更新操作所造成变动的计算量也只是某个单元区域中对应的某个批次进行重建,更新的代建很小且更新效率高。

实施例一

请参照图1所示,一种区域划分的渲染优化方法,包括:

s1、根据场景大小划分为多个单元区域,将场景中不需要频繁更新的可渲染模型标记为静态模型;

其中,若场景为三维场景,则将三维场景根据场景大小的需求划分为x*y*z个区域,若为二维场景,则将二维场景划分为x*y个区域。由于带骨骼的模型不支持批次合并,因此若该模型为带骨骼的模型,则不标记该模型为静态模型。

在确定各个静态模型与其所属的单元区域的对应关系时,可以根据该静态模型的位置信息计算出对应单元区域的位置,计算方式为:先确定各个单元区域的索引序号,若静态模型的位置为p(x0,y0),二维场景的x,y方向上的最大最小坐标值分别为xmax、xmin、ymax和ymin,由此计算出每个区域的宽高,宽w为(xmax-xmin)/x,高h为(ymax-ymin)/y,则该静态模型模型所在p点的区域坐标为((x0-xmin)/w,(y0-ymin)/h),转换为该模型在场景中的单元区域索引序号为(y0-ymin)/h*y+(x0-xmin)/w,从而确定各个静态模型与其所属的单元区域的对应关系。

s2、建立与各个单元区域对应的模型批次集合,在所述模型批次集合中建立映射表,所述映射表以静态模型的材质为键,以各个模型批次的批次数据为值,所述批次数据包括所述静态模型的顶点缓存和索引缓存;

其中,所述映射表优选为哈希映射表。

s3、依次获取各个单元区域内的静态模型,判断所述映射表的键是否存在与所述静态模型相同的材质;

若否,则新建一个模型批次,并建立所述模型批次的顶点缓存和索引缓存,计算所述静态模型的顶点缓存数据和索引缓存数据并分别写入所述顶点缓存和索引缓存中,在所述映射表的键中新增所述静态模型的材质,并在与所述键对应的值中添加所述模型批次的批次数据;

若是,则将所述静态模型的顶点缓存数据和索引缓存数据合并写入与所述键对应的批次数据的顶点缓存和索引缓存中;

其中,所述s3包括:

依次获取各个单元区域内的静态模型,判断所述映射表的键是否存在与所述静态模型相同的材质;

若否,则新建一个模型批次,建立所述模型批次的顶点缓存和索引缓存,在cpu中将所述静态模型所在的本地空间坐标系转换为世界空间坐标系,替换原有的与本地空间坐标系适配的顶点着色器为与所述世界空间坐标系适配的顶点着色器,计算所述静态模型在所述世界空间坐标系下的顶点缓存数据和索引缓存数据,根据所述顶点着色器获取所述静态模型的颜色信息,将所述静态模型的顶点缓存数据和材质中的颜色信息写入顶点缓存中,将所述静态模型的索引缓存数据写入索引缓存中,在所述映射表的键中新增所述静态模型的材质,并在与所述键对应的值中添加所述模型批次的批次数据;

若是,则在cpu中将所述静态模型所在的本地空间坐标系转换为世界空间坐标系,计算所述静态模型在所述世界空间坐标系下的顶点缓存数据和索引缓存数据,则将所述静态模型的顶点缓存数据和索引缓存数据合并写入与所述键对应的批次数据的顶点缓存和索引缓存中。

其中,索引缓存包含有多个静态模型的索引缓存数据(索引缓存数据包括静态模型的顶点的索引),在静态模型合批的过程中,由于多个静态模型的组合,需要将当前批次的顶点缓存中顶点的数量作为后一个静态模型的索引缓存的偏移量,对每个索引进行偏移的校正,从而保证其索引的有序性。

其中,还包括:

s31、为每个模型批次集合的模型批次设置批次渲染顺序,当渲染到批次渲染顺序为n+1的模型批次之前,提交批次渲染顺序为n的批次。

s4、获取虚拟相机的位置,根据所述虚拟相机的位置确定所在的单元区域,根据所述单元区域的模型批次集合的映射表渲染对应的模型批次。

其中,所述s4包括:

获取各个单元区域的世界空间位置信息,并获取所述虚拟相机的视口大小,将所述视口的左上、左下、右上、右下四个点的屏幕空间坐标转换为世界空间坐标,根据所述世界空间坐标与所述单元区域的世界空间位置信息的相交计算结果确定渲染的单元区域,根据所述单元区域的模型批次集合的映射表渲染对应的模型批次。

其中,所述s4还包括:

当发生静态模型的新增/删除和隐藏/显示时所述静态模型的状态会发生改变,在对各个模型批次进行渲染时,检查所述模型批次内的各静态模型的状态是否发生改变,若是,则标记该静态模型所在的单元区域中对应的模型批次为需要更新,在下一帧渲染时对所述单元区域中对应的模型批次进行重建。

其中,静态模型在初始化时加入所在单元区域对应的模型批次集合中后,每个模型批次的顶点缓存、索引缓存的信息只需要在cpu中预处理一次便提交到gpu端,在其状态无改变的情况下,不需要额外进行批次处理和缓存的工作。

实施例二

请参照图2,一种区域划分的渲染优化终端1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例一中的步骤。

综上所述,本发明提供的一种区域划分的渲染优化方法及终端,通过对场景进行区域的划分,并对各个区域内的静态模型按材质来划分形成各个模型批次,在渲染时只要确定需要渲染的单元区域,并对单元区域对应的模型批次集合中的各个模型批次进行渲染即可,不需要对整个场景进行渲染,避免了渲染过程中发生卡顿的现象,提高了渲染效率。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1