当前位置: 首页 > 专利查询>同济大学专利>正文

一种基于OpenCL的Unity3D渲染加速方法技术

技术编号:21737004 阅读:35 留言:0更新日期:2019-07-31 19:35
本发明专利技术涉及一种基于OpenCL的Unity3D渲染加速方法,包括:S1、在渲染过程的主机端加载场景数据,将场景数据传输到OpenCL设备端;S2、将图像中的像素点映射到OpenCL的工作项中;S3、为OpenCL设备端加载计算任务;S4、利用所有OpenCL的工作项同步执行内核函数,实现对Unity3D渲染过程的并行计算优化;S5、将内核函数的计算结果写回到全局内存空间中,完成图像中的每个像素点信息的更新;S6、完成后续渲染过程。与现有技术相比,本发明专利技术实现了对Unity3D渲染过程的并行化优化加速,减少了Unity 3D在渲染过程中的计算负担,在保证渲染质量的前提下,运算速度加快了近10倍。

A Unity3D Rendering Acceleration Method Based on OpenCL

【技术实现步骤摘要】
一种基于OpenCL的Unity3D渲染加速方法
本专利技术涉及OpenCL并行计算领域,尤其是涉及一种基于OpenCL的Unity3D渲染加速方法。
技术介绍
随着信息时代的发展,人们面对的数据量越来越庞大,对计算性能的需求也随之急剧地增加。过去的计算性能的提升主要靠提高处理器频率或是增加处理器的核心数,然而,在CPU上进行的串行计算目前已经达到了计算效率的瓶颈,即使是多核CPU也难以满足当今的计算需求。而GPU从最初的只用于图形处理的处理器已经发展成了可以编程的计算平台,其具有更强的浮点计算能力和并行计算能力。GPU平台中的OpenCL并行计算框架就在这一背景下得到人们的广泛关注。Unity3D渲染的实质工作是在计算机中模拟现实生活场景中真实物体的物理特性,包含物体形态、光照阴影变化、几何纹理以及材质等,并根据视点以及模型的位置变化、遮挡影响以及光源变换引起的色彩变化,并将最终的计算结果显示在二维平面上,是一个非常复杂的计算过程。目前的解决方案多是基于CPU平台,利用Unity所提供的图形接口和封装函数,对算法和模型进行优化,从而实现对渲染过程的控制和改进。然而,随着对图像分辨率和实时性的要求越来越高,给CPU带来了巨大的计算负担,仅仅依靠CPU的计算能力已经难以满足用户的需求。
技术实现思路
本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种基于OpenCL的Unity3D渲染加速方法。本专利技术的目的可以通过以下技术方案来实现:一种基于OpenCL的Unity3D渲染加速方法,包括以下步骤:S1、在渲染过程的主机端加载场景数据,将场景数据传输到OpenCL设备端;S2、将图像中的像素点映射到OpenCL的工作项中;S3、为OpenCL设备端加载计算任务;S4、利用所有OpenCL的工作项同步执行内核函数,实现对Unity3D渲染过程的并行计算优化;S5、将内核函数的计算结果写回到全局内存空间中,完成图像中的每个像素点信息的更新;S6、完成后续渲染过程。优选的,所述步骤S2中采用阶段式映射方法将图像中的像素点映射到OpenCL的工作项中。优选的,所述阶段式映射方法具体包括:将一个图像中的像素点映射到一个工作组中,一个工作组对应着一个计算单元,工作组根据硬件的特性自动调整其所包含的工作项的数目和工作项所包含的像素点的数目。优选的,所述阶段式映射方法的访存模式为:设一个工作项包含n个像素,每个工作项读取n个像素点,组成长度为n的向量,每个工作项以其全局索引值为相对起始读取地址,每次读取都相隔128个字节。优选的,所述步骤S4具体包括:在OpenCL执行模型中将具有内存冲突的任务分解为多个相互独立的子任务,这些子任务通过多个内核函数的形式进入命令队列中,顺序执行命令队列得到子任务的计算结果,最后进行并行统计指令,将这些子任务的计算结果合并求解。优选的,所述步骤S1具体包括:在渲染过程的主机端加载场景数据并存储到图像缓存区中,将图像缓存区加载到主机端指针中,并将host_ptr指针拷贝到OpenCL设备端中,完成主机端到OpenCL设备端场景数据的传输。与现有技术相比,本专利技术具有以下优点:1、基于OpenCL并行计算,减少了Unity3D在渲染过程中的计算负担,可以充分挖掘GPU中的巨大的计算资源,渲染速度得到了显著的提升,同时渲染效果更加真实,在保证渲染质量的前提下,与Unity中初始的渲染过程相比,运算速度加快了近10倍,可以明显缩短对大规模场景的渲染过程。2、像素点与工作项采用阶段式映射方法,工作组可以根据硬件的特性自动调整其所包含的工作项的数目和工作项所包含的像素点的数目,从而充分发挥工作项和工作组对内存的读写能力。附图说明图1为本专利技术方法的框架图;图2为本专利技术中像素点到工作项的阶段式映射方法示意图;图3为本专利技术中利用分而治之的方法解决内存冲突的示意图。具体实施方式下面结合附图和具体实施例对本专利技术进行详细说明。本实施例以本专利技术技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本专利技术的保护范围不限于下述的实施例。如图1所示,本申请提出一种基于OpenCL的Unity3D渲染加速方法,该方法对渲染过程中的顶点变换和光照计算过程进行加速,有利于提高Unity3D渲染过程中的计算时间,从而有效的提高对复杂场景的渲染效率。该方法包括以下步骤:S1、在渲染过程的主机端加载场景数据,将场景数据传输到OpenCL设备端;S2、将图像中的像素点映射到OpenCL的工作项中;S3、为OpenCL设备端加载计算任务;S4、利用所有OpenCL的工作项同步执行内核函数,实现对Unity3D渲染过程的并行计算优化;S5、将内核函数的计算结果写回到全局内存空间中,完成图像中的每个像素点信息的更新;S6、完成后续渲染过程。步骤S1具体包括:在渲染过程的主机端加载场景数据并存储到图像缓存区中,将图像缓存区加载到主机端指针中,并将host_ptr指针拷贝到OpenCL设备端中,完成主机端到OpenCL设备端场景数据的传输。步骤S2中采用阶段式映射方法将图像中的像素点映射到OpenCL的工作项中,具体包括:将一个图像中的像素点映射到一个工作组中,一个工作组对应着一个计算单元,工作组根据硬件的特性自动调整其所包含的工作项的数目和工作项所包含的像素点的数目。步骤S4中提出了分而治之的计算方法以避免OpenCL并行计算中的内存冲突问题,具体包括:在OpenCL执行模型中将具有内存冲突的任务分解为多个相互独立的子任务,每个子任务都具备并行执行不造成内存冲突的特点,这些子任务通过多个内核函数的形式进入命令队列中,顺序执行命令队列得到子任务的计算结果,最后进行并行统计指令,将这些子任务的计算结果合并求解。实施例一本实施例中以Unity3D阴影渲染为例,用本申请提出的方法对Unity3D中所使用的阴影贴图技术进行优化,具体按以下步骤进行:(1)、确定硬件环境和软件平台:本实施例中,渲染过程的主机端采用Intel(R)Core(TM)i5-6300HQCPU@2.30Hz,Unity3D采用2018.1.2版本,OpenCL设备端采用NVIDIAGeForceGTX965M显卡。(2)、主机端加载场景数据,并存储到32位的RGBA的图像缓存区中,RGBA代表四个图像通道,每个通道大小为8个比特,根据通道次序CL_RGBA和通道数据类型CL_SIGNED_INT8建立cl_image_format结构,最后使用clCreateImage3D()创建图像。(3):将步骤(2)中的图像缓存区加载到主机端指针中,并将host_ptr指针拷贝到OpenCL设备中,完成主机端到OpenCL设备端场景数据的传输。(4)、在OpenCL运行时,创建NDRange索引空间,索引空间中的各个点对应着一个工作项。工作项在该索引空间内具有唯一的全局ID表示。通过索引空间,可以更好地对工作项进行管理和控制。(5)、像素点采用阶段式映射方法映射到工作项中,工作组中的OpenCL工作项在局部内存中开辟存储空间,用以存储图像中的阴影信息。(6)、将Unity中的阴影映射算法加载到OpenCL设备端中,在OpenCL中,将阴影映射算法分为深度图计算、光源距离本文档来自技高网...

【技术保护点】
1.一种基于OpenCL的Unity3D渲染加速方法,其特征在于,包括以下步骤:S1、在渲染过程的主机端加载场景数据,将场景数据传输到OpenCL设备端;S2、将图像中的像素点映射到OpenCL的工作项中;S3、为OpenCL设备端加载计算任务;S4、利用所有OpenCL的工作项同步执行内核函数,实现对Unity3D渲染过程的并行计算优化;S5、将内核函数的计算结果写回到全局内存空间中,完成图像中的每个像素点信息的更新;S6、完成后续渲染过程。

【技术特征摘要】
1.一种基于OpenCL的Unity3D渲染加速方法,其特征在于,包括以下步骤:S1、在渲染过程的主机端加载场景数据,将场景数据传输到OpenCL设备端;S2、将图像中的像素点映射到OpenCL的工作项中;S3、为OpenCL设备端加载计算任务;S4、利用所有OpenCL的工作项同步执行内核函数,实现对Unity3D渲染过程的并行计算优化;S5、将内核函数的计算结果写回到全局内存空间中,完成图像中的每个像素点信息的更新;S6、完成后续渲染过程。2.根据权利要求1所述的一种基于OpenCL的Unity3D渲染加速方法,其特征在于,所述步骤S2中采用阶段式映射方法将图像中的像素点映射到OpenCL的工作项中。3.根据权利要求2所述的一种基于OpenCL的Unity3D渲染加速方法,其特征在于,所述阶段式映射方法具体包括:将一个图像中的像素点映射到一个工作组中,一个工作组对应着一个计算单元,工作组根据硬件的特性自动调整其所包含的工作项的数目和工作项所包含的像素点的数目...

【专利技术属性】
技术研发人员:喻斌
申请(专利权)人:同济大学
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1