图像渲染的方法与流程

文档序号:34247415发布日期:2023-05-25 01:53阅读:141来源:国知局
图像渲染的方法与流程

本技术涉及图像渲染领域,具体而言本技术实施例涉及图像渲染的方法。


背景技术:

1、随着计算机硬件的不断发展,算力的不断提高,电脑及手机等平台的渲染能力大大增强。在游戏,影视,vr等诸多领域对渲染效果都有越来越高的要求。在用户端,游戏玩家们开始追求在游戏场景内也有影视级的效果,以及开放大世界的玩法。在美术资源的生产端,相关人员制作的贴图,模型,场景也趋向于更高的精度。在制作端,各大游戏生产厂商的产品在主流的游戏玩法确定下来后,也开始追求用更细致写实的画面表现力来阐述作品。

2、以游戏场景为例,在现有游戏引擎中,cpu负责着游戏各个逻辑系统的更新(例如物理系统,特效系统,ai系统,资源管理,数据通信),承担着很大的计算压力。同时cpu还负责驱动整个渲染流程的进行,这时当面对新一代的游戏需求儿带来的大量高精度模型,大世界的玩法时,cpu往往成为性能的瓶颈,造成系统卡顿。


技术实现思路

1、本技术实施例的目的在于提供图像渲染的方法,通过本技术的一些实施例可以在cpu侧实现更细粒度的剔除减少向gpu提供的数据量,且cpu可通过与材质种类相同次数的渲染命令启动gpu的渲染过程减少了以模型为渲染命令时过多的接口调用过程,且本技术的一些实施例在gpu侧以材质标识进行像素点着色以及分块着色显著提升了像素着色的速度。

2、第一方面,本技术的一些实施例提供一种图像渲染的方法,应用于cpu处理器上,所述方法包括:获取与各待渲染模型对应的初始簇集合,其中,所述初始簇集合是对相应模型的网格数据进行拆分得到的,所述初始簇集合的每个簇均包括设定数量的三角形,所述各待渲染模型属于待更新或待加载的第i帧(i为大于或等于1的整数)中的模型且所述待渲染模型是通过场景树剔除处理后的模型,所述设定数量与图像处理器为流多处理器sm设置的缓存单元的大小相关;以簇为剔除单位对与所述各待渲染模型对应的初始簇集合分别进行背面剔除,得到与所述各待渲染模型对应的目标簇集合;向图像处理器提供与所述目标簇集合对应的待渲染簇数据,以使所述图像处理器进行绘制处理。

3、本技术的实施例通过以簇为单位的簇背面剔除减小了向gpu传输数据的量,在减小数据传输量同时提升数据传输的速度。

4、在一些实施例中,所述初始簇集合的每个簇均包括设定数量的三角形,所述各待渲染模型属于待更新或待加载的第i帧中的模型且所述待渲染模型是通过场景树剔除处理后的模型。

5、在一些实施例中,第一待渲染模型属于在所述第i帧中加载的待渲染模型,其中,所述获取第i帧中与各待渲染模型对应的初始簇集合,包括:启动拆分线程;通过所述拆分线程,将与所述第一待渲染模型对应的网格数据拆分为多簇,得到与所述第一待渲染模型对应的初始簇集合;或者,第二待渲染模型属于在历史帧中加载的待渲染模型,其中,所述获取第i帧中与各待渲染模型对应的初始簇集合,包括:从存储单元读取与所述第二待渲染模型对应的初始簇集合。

6、本技术的一些实施例通过建立分线程进行与模型对应的网格数据拆分,得到与各模型对应的多个簇,这样可以在cpu侧实现背面剔除而不是仅仅以场景树为基础的模型剔除。

7、在一些实施例中,在所述获取第i帧中与各待渲染模型对应的初始簇集合之前,所述方法包括:对与所述第i帧对应的原始数据进行基于场景树的模型剔除,得到所述各待渲染模型。

8、本技术的一些实施例需要通过场景树进行模型剔除,剔除后得到待渲染模型,之后再对这些模型进行基于簇的簇背面剔除。

9、在一些实施例中,所述设定数量与所述图像处理器为流多处理器sm设置的缓存单元的大小相关。

10、本技术的一些实施例根据cpu的硬件特征确定各簇的大小,提升簇在gpu上的处理速度。

11、在一些实施例中,所述缓存单元大小为a,所述每个簇均包括k*a个三角形,所述k为正整数。

12、在一些实施例中,第三待渲染模型属于所述第i帧中的任意一个待渲染模型,其中,所述以簇为剔除单位对与所述各待渲染模型对应的初始簇集合分别进行背面剔除,得到与所述各待渲染模型对应的目标簇集合,包括:获取与所述第三待渲染模型对应的初始簇集合中各簇的测试锥和锥体开放角;根据所述测试锥和所述锥体开放角对对应簇进行测试,若测试通过则将所述对应簇作为所述目标簇集合中的簇。

13、本技术的一些实施例通过获取各簇的测试锥和锥体开放角,再依据这些信息进行背面剔除。

14、在一些实施例中,第一簇为通过测试的簇,其中,所述向图像处理器提供与所述目标簇集合对应的待渲染簇数据,包括:若确认所述图像处理器上未设置有用于存储与所述第一簇对应的待渲染簇数据的存储单元,则为与所述第一簇对应的待渲染簇数据分配所述图像处理器上的存储地址,并将与所述第一簇对应的待渲染簇数据作为分块更新数据;重复上述过程得到所有通过测试的簇的分块更新数据,并向所述图像处理器发送所有分块更新数据。

15、本技术的一些实施例通过识别需要更新的簇再将这些簇对应的数据提供给gpu,减少传输数据所需的带宽。

16、在一些实施例中,所述待渲染簇数据包括如下信息中的至少一项:簇包围盒信息、簇顶点信息、簇索引信息、簇材质信息和簇旋转缩放偏移矩阵信息,其中,所述簇包围盒信息用于所述图像处理器进行视锥体剔除,所述视锥体剔除以簇为剔除单位,所述簇旋转缩放偏移矩阵信息用于记录对应簇的空间位置,所述图像处理器根据所述簇旋转缩放偏移矩阵信息得到相应簇中各顶点在屏幕上的坐标。

17、本技术的一些实施例cpu需要向gpu发送的待渲染簇数据包括簇的各种信息以及簇顶点数据,以使gpu可以以簇为渲染对象,实现高速渲染。

18、在一些实施例中,所述簇包围盒信息用于表征对应簇的包围盒中心位置和包围盒半径。

19、本技术的一些实施例采用簇的包围盒中心位置和包围盒半径作为簇包围盒信息。

20、在一些实施例中,所述簇材质信息是从材质信息备选集中获取的,所述材质信息备选集包括多种材质标识号,所述多种材质标识号是通过如下策略获取的:遍历各帧中所有对象的材质属性,合并相同材质信息并为合并后的每种材质分配唯一的一个材质标识号,所述图像处理器通过比较所述簇材质信息与渲染命令携带的待渲染材质信息进行比较完成像素点着色处理,所述待渲染材质信息与所述第i帧中的一种材质对应。

21、本技术的一些实施例会为各种不同的材质分别分配一个唯一的标识,得到材质标识号(或称为材质标识),之后绘制命令也以不同的材质标识号进行区分,gpu每次渲染都是以不同的材质标识驱动的。

22、在一些实施例中,所述图像处理器将所述第i次渲染命令携带的待渲染材质信息作为深度值与屏幕上待渲染像素点记录的材质信息进行比较完成像素点着色处理。

23、在一些实施例中,在所述向图像处理器提供与所述目标簇集合对应的待渲染簇数据之后,所述方法还包括:以所述第i帧包括的任一材质标识为参数向所述图像处理器发起的渲染命令,其中,所述任一材质标识用于表征所述目标簇集合包括的所有不同材质对应的各材质标识号中的一个,所述图像处理器通过比较记录的所述第i帧中像素点的材质标识号与所述任一材质标识号确定是否对相应像素点进行着色处理。

24、本技术的一些实施例cpu以不同材质标识来向gpu发送不同的绘制命令。

25、第二方面,本技术的一些实施例提供一种图像渲染的方法,应用于gpu处理器上,所述方法包括:接收采用如第一方面任意实施例得到的第i帧的待渲染簇数据;接收携带第j材质标识号的渲染命令,其中,所述第j材质标识号用于表征所述第i帧中一种材质,所述第i帧的不同材质采用不同标识进行表征;根据所述渲染命令和所述待渲染簇数据完成绘制。

26、本技术的一些实施例通过从cpu接收的各簇的待渲染簇数据和绘制指令进行绘制。

27、在一些实施例中,所述根据所述渲染命令和所述待渲染簇数据完成绘制,包括:以簇为剔除单位,根据所述待渲染簇数据对各待渲染模型进行视锥体剔除以剔除与所述各待渲染模型对应的目标簇集合中的簇,得到与所述各待渲染模型对应的目标待渲染簇集合,其中,所述目标簇集合是对初始簇集合进行以簇为剔除单位的背面剔除得到的,所述初始簇集合中的各簇是对待渲染模型的网格数据包括的所有三角形进行分簇处理后得到的;根据所述目标待渲染簇集合和所述渲染命令进行绘制。

28、本技术的一些实施例以簇为单位进行视锥体剔除。

29、在一些实施例中,所述待渲染簇数据包括:与任意一个待渲染模型对应各簇的簇包围盒信息,其中,所述根据所述待渲染簇数据对各待渲染模型进行视锥体剔除,包括:根据所述各簇的簇包围盒信息进行视锥体剔除,得到所述目标待渲染簇集合。

30、本技术的一些实施例通过接收来自于cpu的簇的簇包围盒信息进行视锥体剔除。

31、在一些实施例中,所述根据所述目标待渲染簇集合和所述绘制指令进行绘制,包括:根据与所述目标待渲染簇集合对应的待渲染簇数据得到屏幕上各像素点的材质标识号;通过比较所述第j材质标识号与至少部分像素点的材质标识号,完成像素点着色。

32、本技术的一些实施例通过比较屏幕上各像素点的材质标识号与对应绘制命令携带的第j材质标识号是否相同来确定是否对该相似点进行着色,实现了以材质标识为参量的像素点着色,与相关技术以模型为单位的像素点着色方案相比减少了cpu对gpu接口调用的次数。

33、在一些实施例中,所述根据所述目标待渲染簇集合和所述渲染命令进行绘制,包括:根据与所述目标待渲染簇集合对应的待渲染簇数据得到屏幕上各像素点的材质标识号;将所述屏幕划分为多个块并确定与每个块对应的材质标识号的覆盖范围;根据所述第j材质标识号(j为大于或等于1的整数)和所述覆盖范围,从所述多个块中选择至少一个块作为目标待渲染块,其中,所述第j材质标识号位于与所述目标待渲染块对应的覆盖范围内;通过比较所述第j材质标识号与所述目标待渲染块上的每个像素点的材质标识号,完成着色。

34、本技术一些实施例通过将屏幕划分为多块,并识别第j材质标识号可着色的对应块,提升像素点着色的速度。

35、在一些实施例中,所述根据所述目标待渲染簇集合和所述绘制指令进行绘制,包括:在顶点绘制过程中,获取与所有目标待渲染簇集合对应的各顶点在屏幕上的坐标,并根据所述坐标在所述屏幕上绘制相应顶点。

36、本技术的一些实施例一次性绘制视锥体剔除后剩余所有顶点进行顶点绘制,与相关技术以模型为单位的顶点绘制方式提升了顶点绘制的效率。

37、在一些实施例中,其中,所述根据所述目标待渲染簇集合据进行绘制,还包括:在像素着色过程中,根据所述目标待渲染簇集合得到可见图和材质图,其中,所述可见图的大小等于屏幕分辨率且所述可见图上的每个像素点存有对应像素点所在三角形的贴图采样坐标和法线值,所述材质图的大小等于所述屏幕分辨率且在所述材质图上每个像素点存的是对应像素点所在三角形的材质标识号;根据所述材质图生成材质范围图,其中,所述材质范围图是通过如下策略得到的:将所述屏幕划分为多个块并在每个块上存储对应块的第一材质标识值和第二材质标识值,所述第一材质标识值和第二材质标识值用于表征对应块上所有材质所覆盖的材质标识号的范围;将所述第j材质标识号与所述材质范围图上各块分别进行比较,将位于所述材质范围图上且与所述第j材质标识号匹配的块确定为本次的目标待渲染分块;从所述材质图上获取与所述目待待渲染分块对应块的分块图像,得到目标分块图像;通过比较所述第j材质标识号和所述目标分块图像上各像素点的值完成像素点着色。

38、本技术的一些实施例通过构建多张图(即存储多张图的各像素点的数据)实现了分块像素点着色以及以材质标识确定是否对某个像素点着色的技术方案,提升了像素点着色的速度。

39、在一些实施例中,所述根据所述目标待渲染簇集合得到可见图和材质图,包括:从所述待渲染簇数据包括的所有簇顶点数据中删除与被剔除的簇对应的簇顶点数据,得到目标簇顶点数据,其中,所述被剔除的簇是通过视锥体剔除操作得到的;从所述待渲染簇数据包括的所有簇的簇索引信息中删除与所述被剔除的簇对应的簇索引信息,得到目标簇索引信息;根据所述目标簇顶点数据和所述目标簇索引信息得到所述可见图。

40、本技术的一些实施例通过删除来自于cpu的待渲染簇数据中携带的部分数据(即通过视锥体剔除的簇的顶点对应的数据)得到目标待渲染簇数据,并根据这些数据构建可见图。

41、在一些实施例中,所述根据所述目标待渲染簇集合得到可见图和材质图,包括:从所述待渲染簇数据包括的所有簇的材质标识信息中删除与所述被剔除的簇对应的材质信息,并从所述待渲染簇数据包括的所有簇的矩阵信息中删除与所述被剔除的簇对应的簇旋转缩放偏移矩阵信息,得到目标簇矩阵和材质信息;根据所述目标簇矩阵和材质信息以及所述目标簇索引信息得到所述材质图。

42、本技术的一些实施例通过删除来自于cpu的待渲染簇数据中携带的部分数据(即通过视锥体剔除的簇的顶点对应的数据)得到目标待渲染簇数据,并根据这些数据构建材质图。

43、在一些实施例中,所述待渲染簇数据包括的各簇的簇包围盒信息存储在簇包围盒存储单元中;所述待渲染簇数据包括的所有簇顶点数据存储在顶点数据存储单元中;所述待渲染簇数据包括的所有簇的簇索引信息存储在索引信息存储单元中;所述待渲染簇数据包括的所有簇的材质标识信息和所述待渲染簇数据包括的所有簇的矩阵信息存储在矩阵材质存储单元上。

44、本技术的一些实施例通过在gpu上设置多个存储单元来存储来自于cpu的各簇的待渲染簇数据。

45、第三方面,本技术的一些实施例提供一种中央处理器,所述处理器包括:初始簇集合获取模块,被配置为获取第i帧中与各待渲染模型对应的初始簇集合,其中,所述初始簇集合是对相应模型的网格数据进行拆分得到的,所述初始簇集合的每个簇均包括设定数量的三角形,所述待渲染模型是通过场景树剔除处理后的模型;背面剔除模块,被配置为以簇为剔除单位对与所述各待渲染模型对应的初始簇集合分别进行背面剔除,得到与所述各待渲染模型对应的目标簇集合;提供模块,被配置为向图像处理器提供与所述目标簇集合对应的待渲染簇数据,以使所述图像处理器进行绘制处理。

46、第四方面,本技术的一些实施例提供一种图像处理器,所述处理器包括:待渲染簇数据接收模块,被配置为接收采用如中央处理器得到的所述待渲染簇数据中的第i帧的待渲染簇数据;渲染命令接收模块,被配置为接收携带第j材质标识号的渲染命令,其中,所述第j材质标识号用于表征所述第i帧中一种材质,所述第i帧的不同材质采用不同标识进行表征;渲染执行模块,被配置为根据所述渲染命令和所述待渲染簇数据完成绘制。

47、第五方面,本技术的一些实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时可实现如第一方面和第二方面任意实施例所述的方法。

48、第六方面,本技术的一些实施例提供一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述程序时可实现如第一方面或第二方面任意实施例所述的方法。

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