一种基于多线程并行化的3D引擎系统.pdf

上传人:e2 文档编号:628051 上传时间:2018-02-27 格式:PDF 页数:9 大小:905.86KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410342073.9

申请日:

2014.07.18

公开号:

CN104102488A

公开日:

2014.10.15

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/44申请日:20140718|||公开

IPC分类号:

G06F9/44; G06T15/00(2011.01)I

主分类号:

G06F9/44

申请人:

无锡梵天信息技术股份有限公司

发明人:

张翼

地址:

214000 江苏省无锡市新区太科园传感网大学科技园立业楼E区711号

优先权:

专利代理机构:

北京中恒高博知识产权代理有限公司 11249

代理人:

宋敏

PDF下载: PDF下载
内容摘要

本发明公开了一种基于多线程并行化的3D引擎系统,主要包括基于无锁的多线程并发处理机制设置的主线程、帧更新线程、动态加载线程和监听网络服务器线程,其中:主线程,主要用于渲染上一帧中帧线程检测到的可见性对象列表;帧更新线程,与所述主线程同步,主要用于对当前帧中的对象进行更新;动态加载线程,主要用于动态加载场景资源、模型资源、特效、OBJ文件和ANI文件;监听网络服务器线程,主要用于当有线程触发或唤醒时,接收服务器发送过来的消息包并插入到消息队列中,供主线程处理。本发明所述基于多线程并行化的3D引擎系统,可以克服现有技术中成本高、维护难度大和灵活性差等缺陷,以实现成本低、维护难度小和灵活性好的优点。

权利要求书

1.  一种基于多线程并行化的3D引擎系统,其特征在于,主要包括基于无锁的多线程并发处理机制设置的主线程、帧更新线程、动态加载线程和监听网络服务器线程,其中:
所述主线程,主要用于渲染上一帧中帧线程检测到的可见性对象列表;
所述帧更新线程,与所述主线程同步,主要用于对当前帧中的对象进行更新;
所述动态加载线程,主要用于动态加载场景资源、模型资源、特效、OBJ文件和ANI文件;当动态加载线程加载完成时,通知主线程已加载场景资源的可用性;主线程根据动态加载线程的通知,对相应场景资源的可用性进行判断并通知其他线程;
所述监听网络服务器线程,主要用于遍历所有消息,当有线程触发或唤醒时,接受消息的子线程接收服务器发送过来的消息包,将接收到的消息包插入到消息队列中,供主线程处理。

2.
  根据权利要求1所述的基于多线程并行化的3D引擎系统,其特征在于,该3D引擎系统,还包括能够与所述主线程、帧更新线程、动态加载线程和监听网络服务器线程并发处理的遮挡剔除线程;
所述遮挡剔除线程,具体包括能够进行遮挡剔除处理的功能相似的多个线程;主要用于基于SSE加速指令以及多线程并发生成的深度缓存和需要剔除对象的包围盒,比较剔除哪些物体是被遮挡物。

3.
  根据权利要求2所述的基于多线程并行化的3D引擎系统,其特征在于,所述遮挡剔除线程用于基于SSE加速指令以及多线程并发生成的深度缓存和需要剔除对象的包围盒,比较剔除哪些物体是被遮挡物的操作,具体包括:
多线程并发生成在低分辨率下的深度缓存,即一个二维的画布,把画布虚拟的划分为类似九宫格的分配机制,每个格子都会提供一个线程来处理,每个格子都会生成一个深度缓冲;
按照程序分格子的个数生成一定格子数量的深度缓冲,对需要剔除对象的包围盒和深度缓冲做比较,决定要剔除被遮挡的物体,主线程不会绘制该部分;未被剔除的对象保留其可见性。

4.
  根据权利要求1-3中任一项所述的基于多线程并行化的3D引擎系统,其特征在于,所述主线程渲染上一帧中帧线程检测到的可见性对象列表的操作,具体包括:
对三维图形进行渲染,对动态加载线程加载资源的判断,处理帧线程中更新的消息队列;以及,
遍历监听网络服务器线程中消息队列、并处理响应的消息回调函数和上层的逻辑。

5.
  根据权利要求4所述的基于多线程并行化的3D引擎系统,其特征在于,所述主线程对三维图形进行渲染的操作,具体包括:
对三维图像进行包括光影效果、材质渲染、UI和物理系统的渲染计算。

6.
  根据权利要求1-3中任一项所述的基于多线程并行化的3D引擎系统,其特征在于,所述帧更新线程对当前帧中的对象进行更新的操作,具体包括:
对动态加载线程中的对象进行遮挡剔除、视锥体剔除、室内室外的可见性剔除,更新特效、粒子和动画;
同时,对主线程基于物理的系统进行解算。

7.
  根据权利要求1-3中任一项所述的基于多线程并行化的3D引擎系统,其特征在于,所述动态加载线程动态加载场景资源、模型资源、特效、OBJ文件和ANI文件的操作中,所述场景资源包含静态对象、地形、水、雾和贴花,I/O,所述模型资源主要包括角色、换装和装备。

8.
  根据权利要求1-3中任一项所述的基于多线程并行化的3D引擎系统,其特征在于,所述监听网络服务器线程,还用于:
在没有消息时,处于等待或睡眠状态,直到有线程触发或唤醒;该消息包包含消息头和消息内容。

9.
  根据权利要求2或3所述的基于多线程并行化的3D引擎系统,其特征在于,该3D引擎系统,还包括能够与所述主线程、帧更新线程、动态加载线程、监听网络服务器线程和遮挡剔除线程相辅助的工具编辑器,其目的可以加快游戏开发时间。

10.
  根据权利要求9所述的基于多线程并行化的3D引擎系统,其特征在于,所述工具编辑器,主要包括场景编辑器、模型编辑器、任务编辑器,特效编辑器和界面编辑器,其中:
所述场景编辑器,主要用于基于DirectX渲染,支持室外、电光源、聚光灯阴影以及软阴影的实现,基于物理光照积分的IBL效果,基于蒙特卡洛积分的高光计算,基于深度图的视差映射技术;支持对模型材质的编辑操作,基于平滑地形高度的生成,基于自己渲染模块场景文件以供游戏的读取和渲染;
所述模型编辑器,主要用于对三维软件导入的模型进行变换,包括模型动画的实现、模型特效的绑定、模型的换装系统和材质、以及声音的修改和编辑;
所述特效编辑器,主要用于对特效进行浏览、编辑和绑定,设定特效的播放时间,多种特效的混合模式;
所述界面编辑器,主要用于对游戏的主界面和角色属性界面进行交互、传达信息、以及对界面的逻辑进行相应的事件编辑。

说明书

一种基于多线程并行化的3D引擎系统
 
技术领域
本发明涉及计算机技术领域,具体地,涉及一种基于多线程并行化的3D引擎系统。
背景技术
随着计算机的不断发展和显卡的普及应用,计算机游戏也得到的飞快的发展,游戏可以说是结合了当前时代最先进的硬件和最近的编程思想。而一个游戏的核心是游戏引擎,它用于控制游戏功能的主要程序;游戏引擎好比汽车的发动机,显卡就是其辅助设备,没有强大的发动力,在好的汽车外观设计也难以发挥汽车的极限,因此它决定这游戏质量的关键。
引擎同时也是一个架构,而这个架构包含的很多功能的模块,每个模块管理者游戏的不同的功能实现。它的目的是让开发者只做游戏逻辑的编写,而尽量减少底层的编写。目前有一些开源的免费引擎和价格高昂的引擎,他们之间存在这底层工具以及兼容性不完整的问题,对于收费引擎虽然能实现较好的游戏画面和跨平台等各种功能,但是价格随版本的升级和功能增多价格也不同以及后期更新维护费较高。
在实现本发明的过程中,发明人发现现有技术中至少存在成本高、维护难度大和灵活性差等缺陷。
发明内容
本发明的目的在于,针对上述问题,提出一种基于多线程并行化的3D引擎系统,以实现成本低、维护难度小和灵活性好的优点。
为实现上述目的,本发明采用的技术方案是:一种基于多线程并行化的3D引擎系统,主要包括基于无锁的多线程并发处理机制设置的主线程、帧更新线程、动态加载线程和监听网络服务器线程,其中:
所述主线程,主要用于渲染上一帧中帧线程检测到的可见性对象列表;
所述帧更新线程,与所述主线程同步,主要用于对当前帧中的对象进行更新;
所述动态加载线程,主要用于动态加载场景资源、模型资源、特效、OBJ文件和ANI文件;当动态加载线程加载完成时,通知主线程已加载场景资源的可用性;主线程根据动态加载线程的通知,对相应场景资源的可用性进行判断并通知其他线程;
所述监听网络服务器线程,主要用于遍历所有消息,当有线程触发或唤醒时,接收服务器发送过来的消息包,将接收到的消息包插入到消息队列中,供主线程处理。
进一步地,该3D引擎系统,还包括能够与所述主线程、帧更新线程、动态加载线程和监听网络服务器线程并发处理的遮挡剔除线程;
所述遮挡剔除线程,具体包括能够进行遮挡剔除处理功能相似的多个线程;主要用于基于SSE加速指令以及多线程并发生成的深度缓存和需要剔除对象的包围盒,比较剔除哪些物体是被遮挡物。
进一步地,所述遮挡剔除线程用于基于SSE加速指令以及多线程并发生成的深度缓存和需要剔除对象的包围盒,比较剔除哪些物体是被遮挡物的操作,具体包括:
多线程并发生成在低分辨率下的深度缓存,即一个二维的画布,把画布虚拟的划分为类似九宫格的分配机制,每个格子都会提供一个线程来处理,每个格子都会生成一个深度缓冲;
按照程序分格子的个数生成一定格子数量的深度缓冲,对需要剔除对象的包围盒和深度缓冲做比较,决定要剔除被遮挡的物体,主线程不会绘制该部分;未被剔除的对象保留其可见性。
进一步地,所述主线程渲染上一帧中帧线程检测到的可见性对象列表的操作,具体包括:
对三维图形进行渲染,对动态加载线程加载资源的判断,处理帧线程中更新的消息队列;以及,
遍历监听网络服务器线程中消息队列、并处理响应的消息回调函数和上层的逻辑。
进一步地,所述主线程对三维图形进行渲染的操作,具体包括:
对三维图像进行包括光影效果、材质渲染、UI和物理系统的渲染计算。
进一步地,所述帧更新线程对当前帧中的对象进行更新的操作,具体包括:
对动态加载线程中的对象进行遮挡剔除、视锥体剔除、室内室外的可见性剔除,更新特效、粒子和动画;
同时,对主线程基于物理的系统进行解算。
进一步地,所述动态加载线程动态加载场景资源、模型资源、特效、OBJ文件和ANI文件的操作中,所述场景资源包含静态对象、地形、水、雾和贴花,I/O,所述模型资源主要包括角色、换装和装备。
进一步地,所述监听网络服务器线程,还用于:
在没有消息时,处于等待或睡眠状态,直到有线程触发或唤醒;该消息包包含消息头和消息内容。
进一步地,该3D引擎系统,还包括能够与所述主线程、帧更新线程、动态加载线程、监听网络服务器线程和遮挡剔除线程匹配设置的工具编辑器。
进一步地,所述工具编辑器,主要包括场景编辑器、模型编辑器、任务编辑器,特效编辑器和界面编辑器,其中:
所述场景编辑器,主要用于基于DirectX渲染,支持室外、电光源、聚光灯阴影以及软阴影的实现,基于物理光照积分的IBL效果,基于蒙特卡洛积分的高光计算,基于深度图的视差映射技术;支持对模型材质的编辑操作,基于平滑地形高度的生成,基于自己渲染模块场景文件以供游戏的读取和渲染;
所述模型编辑器,主要用于对三维软件导入的模型进行变换,包括模型动画的实现、模型特效的绑定、模型的换装系统和材质、以及声音的修改和编辑;
所述特效编辑器,主要用于对特效进行浏览、编辑和绑定,设定特效的播放时间,多种特效的混合模式;
所述界面编辑器,主要用于对游戏的主界面和角色属性界面进行交互、传达信息、以及对界面的逻辑进行相应的事件编辑。
本发明各实施例的基于多线程并行化的3D引擎系统,由于主要包括基于无锁的多线程并发处理机制设置的主线程、帧更新线程、动态加载线程和监听网络服务器线程,其中:主线程,主要用于渲染上一帧中帧线程检测到的可见性对象列表;帧更新线程,与所述主线程同步,主要用于对当前帧中的对象进行更新;动态加载线程,主要用于动态加载场景资源、模型资源、特效、OBJ文件和ANI文件;监听网络服务器线程,主要用于当有线程触发或唤醒时,接收服务器发送过来的消息包并插入到消息队列中,供主线程处理;从而可以克服现有技术中成本高、维护难度大和灵活性差的缺陷,以实现成本低、维护难度小和灵活性好的优点。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明基于多线程并行化的3D引擎系统的游戏引擎架构设计示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
基于当下计算机发展的速度和技术知识的快速更新,而现在的技术人员可以掌握最近的游戏开发技术,能够在短时间内缩小与世界级游戏水平的差异甚至可以超越国际水平,本发明提供了一种基于DirectX 9的API之上的多线程并行处理3d游戏引擎架构,其优点大大降低了成本和开发周期,维护容易,灵活性高同时能提供大规模的并行执行,保证多核处理其性能。
根据本发明实施例,如图1所示,提供了一种基于多线程并行化的3D引擎系统,具体涉及到一种多线程3D引擎架构设计。
目前的3D游戏框架都有自己明确的架构分析,对于大多数的引擎架构大本大部分都相同,本发明提供以一种多线程并行处理数据的架构系统。
在本发明的技术方案中,并行化处理各个线程,是利用开发平台上所有处理其来提高性能,在游戏引擎中各个功能之间数据是相互通信的,通常会引起访问的错误,我们需要创建这些线程对模块进行管理操作,尽管数据之间需要共享,对所有的线程执行结束的时候,会把数据送到响应线程的线程里处理,同时更新线程内部的数据结构,以便接收下一条的消息的处理。这样的设计就会使各个线程更加有序、高效独立的运行。
游戏引擎的构成是由框架和管理模块组成的。框架主要用于游戏中多次重复利用的实例部分,它是将不同的部分联合起来。功能模块主要是独立处理逻辑功能。
在本发明的技术方案中,关于框架的详细说明如下:
本发明引擎的框架设计,我们采用了无锁的多线程并发处理机制,具体的线程如下:
1.一个主线程;
2.帧更新线程;
3.动态加载线程;
4.监听网络服务器线程;
5.遮挡剔除线程。
主线程主要用于渲染,而本发明的渲染器是基于DirectX,DirectX渲染器使用微软的DirectX库。它是引擎的核心部分,基于微软提供的底层图形应用程序接口(API)它负责与硬件的通信,主要处理3D物体绘制到屏幕上。主要分为硬件的渲染和软件的渲染,而硬件的渲染主要是实时渲染 。软件渲染主要利用CPU的处理数据的能力,能够提供各种算法以达到照片级的效果。 它主要提供三维图形的渲染,光影效果的实现,材质渲染,UI 等渲染,在程序中是处理任务最多,计算最复杂的线程;而各个线程都有其交互的功能。而主线程对游戏中光影效果的控制,应用了物理学中折射、反射等基本的光学原理以及动态光源等高级效果,当处理基于物理光照计算时,模拟真实的光照现象;具体的光照模型:Unlit、Lambertian、 Microfiber、Skin、Dota Diffuse、Mirror、Blinn-Phong、Anisotropic光照模型,这些光照模型在主线程中运行。同时主线程还会处理复杂的逻辑运算,遍历服务器中消息队列和上层逻辑(AI和GUI),处理响应的消息回调函数。
当在程序开始时,首先要触发动态加载线程进行游戏资源加载,先加载场景资源后加载模型资源;场景资源包含静态对象,地形,水,雾,贴花等,模型资源主要包括角色,换装,装备等;同时还加载文件I/O的读写等文件操作(比如日志文件)等。当动态加载线程加载完成时,会通知主线程这些场景的所有资源是可用的,主线程判断对其进行判断,以便其他线程可以利用这些资源。
帧线程主要起到更新的作用,它和主线程是相辅相成并发执行,帧线程是对以加载好对象包围盒AABB进行遮挡剔除,视锥体剔除,室内室外的可见性剔除,特效更新,粒子更新,动画更新等,与此同时,主线程是渲染上一帧中帧线程检测到可见性对象列表,而帧线程则是更新的当前帧的对象,帧线程同时会处理在主线程中的光照模型,解算物理光照的运行状态。
监听网络服务器线程:接收服务器发送过来的消息包,包含消息头和消息内容,这些消息包插入到消息队列里,当监听有消息到来时,遍历所有的消息,没有消息的时候就等待或者睡眠直到有线程触发这个线程。
遮挡处理线程:遮挡剔除可以由多个线程并发处理,我们把这些功能相似的线程统称为遮挡处理线程。它是基于SSE加速指令以及多线程并发生成的深度缓存检测对象的可见性。多线程并发生成在低分辨率下的深度缓存,即一个二维的画布,把画布虚拟的划分为类似九宫格的分配机制,每个格子都会提供一个线程来处理,每个格子都会生成一个深度缓冲,就会按照程序分格子的个数生成一定格子数量的深度缓冲,对需要剔除对象的包围盒和深度缓冲做比较,决定要剔除被遮挡的物体,主线程不会绘制该部分,未被剔除的对象保留其可见性。
综上所述,以上讲述了本发明基于多线程的框架的设计,为了加快引擎的开发速度,本发明还提供了一些工具编辑器。具体有:场景编辑器、模型编辑器、任务编辑器,特效编辑器、界面编辑器。
场景编辑器主要是基于DirectX渲染,支持室外,电光源,聚光灯阴影以及软阴影的实现,基于物理光照积分的IBL效果,基于蒙特卡洛积分的高光计算,基于深度图的视差映射技术,可实现对三维软件模型的导入、导出和转化功能;支持对模型材质的编辑操作,基于平滑地形高度的生成,基于自己渲染模块场景文件以供游戏的读取和渲染。
模型编辑器:主要是对三维软件导入的模型进行变换,包括模型动画的实现,模型特效的绑定,模型的换装系统和材质,声音等修改和编辑。以方便美术人员编辑,提高开发效率。
特效编辑器:主要对特效进行浏览,编辑和绑定,设定特效的播放时间,多种特效的混合模式。
界面编辑器:一般包括游戏的主界面和角色属性界面。他们主要用于交互,传达信息。主要对界面的逻辑进行相应的事件的编辑。
本发明的技术方案,至少可以达到的有益效果包括:
⑴基于无锁的多线程机制,高效处理物理逻辑能力;
⑵稳定安全的引擎架构,能够高效并发处理各个客户端的请求;
⑶自主研发很多功能模块,能够耦合多种引擎系统;
⑷设计简单,程序响应更快,资源利用率高性能稳定,便于性能的优化。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

一种基于多线程并行化的3D引擎系统.pdf_第1页
第1页 / 共9页
一种基于多线程并行化的3D引擎系统.pdf_第2页
第2页 / 共9页
一种基于多线程并行化的3D引擎系统.pdf_第3页
第3页 / 共9页
点击查看更多>>
资源描述

《一种基于多线程并行化的3D引擎系统.pdf》由会员分享,可在线阅读,更多相关《一种基于多线程并行化的3D引擎系统.pdf(9页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104102488A43申请公布日20141015CN104102488A21申请号201410342073922申请日20140718G06F9/44200601G06T15/0020110171申请人无锡梵天信息技术股份有限公司地址214000江苏省无锡市新区太科园传感网大学科技园立业楼E区711号72发明人张翼74专利代理机构北京中恒高博知识产权代理有限公司11249代理人宋敏54发明名称一种基于多线程并行化的3D引擎系统57摘要本发明公开了一种基于多线程并行化的3D引擎系统,主要包括基于无锁的多线程并发处理机制设置的主线程、帧更新线程、动态加载线程和监听网络服务器线程。

2、,其中主线程,主要用于渲染上一帧中帧线程检测到的可见性对象列表;帧更新线程,与所述主线程同步,主要用于对当前帧中的对象进行更新;动态加载线程,主要用于动态加载场景资源、模型资源、特效、OBJ文件和ANI文件;监听网络服务器线程,主要用于当有线程触发或唤醒时,接收服务器发送过来的消息包并插入到消息队列中,供主线程处理。本发明所述基于多线程并行化的3D引擎系统,可以克服现有技术中成本高、维护难度大和灵活性差等缺陷,以实现成本低、维护难度小和灵活性好的优点。51INTCL权利要求书2页说明书5页附图1页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书5页附图1页10申请公布号CN。

3、104102488ACN104102488A1/2页21一种基于多线程并行化的3D引擎系统,其特征在于,主要包括基于无锁的多线程并发处理机制设置的主线程、帧更新线程、动态加载线程和监听网络服务器线程,其中所述主线程,主要用于渲染上一帧中帧线程检测到的可见性对象列表;所述帧更新线程,与所述主线程同步,主要用于对当前帧中的对象进行更新;所述动态加载线程,主要用于动态加载场景资源、模型资源、特效、OBJ文件和ANI文件;当动态加载线程加载完成时,通知主线程已加载场景资源的可用性;主线程根据动态加载线程的通知,对相应场景资源的可用性进行判断并通知其他线程;所述监听网络服务器线程,主要用于遍历所有消息,。

4、当有线程触发或唤醒时,接受消息的子线程接收服务器发送过来的消息包,将接收到的消息包插入到消息队列中,供主线程处理。2根据权利要求1所述的基于多线程并行化的3D引擎系统,其特征在于,该3D引擎系统,还包括能够与所述主线程、帧更新线程、动态加载线程和监听网络服务器线程并发处理的遮挡剔除线程;所述遮挡剔除线程,具体包括能够进行遮挡剔除处理的功能相似的多个线程;主要用于基于SSE加速指令以及多线程并发生成的深度缓存和需要剔除对象的包围盒,比较剔除哪些物体是被遮挡物。3根据权利要求2所述的基于多线程并行化的3D引擎系统,其特征在于,所述遮挡剔除线程用于基于SSE加速指令以及多线程并发生成的深度缓存和需要。

5、剔除对象的包围盒,比较剔除哪些物体是被遮挡物的操作,具体包括多线程并发生成在低分辨率下的深度缓存,即一个二维的画布,把画布虚拟的划分为类似九宫格的分配机制,每个格子都会提供一个线程来处理,每个格子都会生成一个深度缓冲;按照程序分格子的个数生成一定格子数量的深度缓冲,对需要剔除对象的包围盒和深度缓冲做比较,决定要剔除被遮挡的物体,主线程不会绘制该部分;未被剔除的对象保留其可见性。4根据权利要求13中任一项所述的基于多线程并行化的3D引擎系统,其特征在于,所述主线程渲染上一帧中帧线程检测到的可见性对象列表的操作,具体包括对三维图形进行渲染,对动态加载线程加载资源的判断,处理帧线程中更新的消息队列;。

6、以及,遍历监听网络服务器线程中消息队列、并处理响应的消息回调函数和上层的逻辑。5根据权利要求4所述的基于多线程并行化的3D引擎系统,其特征在于,所述主线程对三维图形进行渲染的操作,具体包括对三维图像进行包括光影效果、材质渲染、UI和物理系统的渲染计算。6根据权利要求13中任一项所述的基于多线程并行化的3D引擎系统,其特征在于,所述帧更新线程对当前帧中的对象进行更新的操作,具体包括对动态加载线程中的对象进行遮挡剔除、视锥体剔除、室内室外的可见性剔除,更新特效、粒子和动画;同时,对主线程基于物理的系统进行解算。7根据权利要求13中任一项所述的基于多线程并行化的3D引擎系统,其特征在于,权利要求书C。

7、N104102488A2/2页3所述动态加载线程动态加载场景资源、模型资源、特效、OBJ文件和ANI文件的操作中,所述场景资源包含静态对象、地形、水、雾和贴花,I/O,所述模型资源主要包括角色、换装和装备。8根据权利要求13中任一项所述的基于多线程并行化的3D引擎系统,其特征在于,所述监听网络服务器线程,还用于在没有消息时,处于等待或睡眠状态,直到有线程触发或唤醒;该消息包包含消息头和消息内容。9根据权利要求2或3所述的基于多线程并行化的3D引擎系统,其特征在于,该3D引擎系统,还包括能够与所述主线程、帧更新线程、动态加载线程、监听网络服务器线程和遮挡剔除线程相辅助的工具编辑器,其目的可以加快。

8、游戏开发时间。10根据权利要求9所述的基于多线程并行化的3D引擎系统,其特征在于,所述工具编辑器,主要包括场景编辑器、模型编辑器、任务编辑器,特效编辑器和界面编辑器,其中所述场景编辑器,主要用于基于DIRECTX渲染,支持室外、电光源、聚光灯阴影以及软阴影的实现,基于物理光照积分的IBL效果,基于蒙特卡洛积分的高光计算,基于深度图的视差映射技术;支持对模型材质的编辑操作,基于平滑地形高度的生成,基于自己渲染模块场景文件以供游戏的读取和渲染;所述模型编辑器,主要用于对三维软件导入的模型进行变换,包括模型动画的实现、模型特效的绑定、模型的换装系统和材质、以及声音的修改和编辑;所述特效编辑器,主要用。

9、于对特效进行浏览、编辑和绑定,设定特效的播放时间,多种特效的混合模式;所述界面编辑器,主要用于对游戏的主界面和角色属性界面进行交互、传达信息、以及对界面的逻辑进行相应的事件编辑。权利要求书CN104102488A1/5页4一种基于多线程并行化的3D引擎系统0001技术领域0002本发明涉及计算机技术领域,具体地,涉及一种基于多线程并行化的3D引擎系统。背景技术0003随着计算机的不断发展和显卡的普及应用,计算机游戏也得到的飞快的发展,游戏可以说是结合了当前时代最先进的硬件和最近的编程思想。而一个游戏的核心是游戏引擎,它用于控制游戏功能的主要程序;游戏引擎好比汽车的发动机,显卡就是其辅助设备,没。

10、有强大的发动力,在好的汽车外观设计也难以发挥汽车的极限,因此它决定这游戏质量的关键。0004引擎同时也是一个架构,而这个架构包含的很多功能的模块,每个模块管理者游戏的不同的功能实现。它的目的是让开发者只做游戏逻辑的编写,而尽量减少底层的编写。目前有一些开源的免费引擎和价格高昂的引擎,他们之间存在这底层工具以及兼容性不完整的问题,对于收费引擎虽然能实现较好的游戏画面和跨平台等各种功能,但是价格随版本的升级和功能增多价格也不同以及后期更新维护费较高。0005在实现本发明的过程中,发明人发现现有技术中至少存在成本高、维护难度大和灵活性差等缺陷。发明内容0006本发明的目的在于,针对上述问题,提出一种。

11、基于多线程并行化的3D引擎系统,以实现成本低、维护难度小和灵活性好的优点。0007为实现上述目的,本发明采用的技术方案是一种基于多线程并行化的3D引擎系统,主要包括基于无锁的多线程并发处理机制设置的主线程、帧更新线程、动态加载线程和监听网络服务器线程,其中所述主线程,主要用于渲染上一帧中帧线程检测到的可见性对象列表;所述帧更新线程,与所述主线程同步,主要用于对当前帧中的对象进行更新;所述动态加载线程,主要用于动态加载场景资源、模型资源、特效、OBJ文件和ANI文件;当动态加载线程加载完成时,通知主线程已加载场景资源的可用性;主线程根据动态加载线程的通知,对相应场景资源的可用性进行判断并通知其他。

12、线程;所述监听网络服务器线程,主要用于遍历所有消息,当有线程触发或唤醒时,接收服务器发送过来的消息包,将接收到的消息包插入到消息队列中,供主线程处理。0008进一步地,该3D引擎系统,还包括能够与所述主线程、帧更新线程、动态加载线程和监听网络服务器线程并发处理的遮挡剔除线程;所述遮挡剔除线程,具体包括能够进行遮挡剔除处理功能相似的多个线程;主要用于说明书CN104102488A2/5页5基于SSE加速指令以及多线程并发生成的深度缓存和需要剔除对象的包围盒,比较剔除哪些物体是被遮挡物。0009进一步地,所述遮挡剔除线程用于基于SSE加速指令以及多线程并发生成的深度缓存和需要剔除对象的包围盒,比较。

13、剔除哪些物体是被遮挡物的操作,具体包括多线程并发生成在低分辨率下的深度缓存,即一个二维的画布,把画布虚拟的划分为类似九宫格的分配机制,每个格子都会提供一个线程来处理,每个格子都会生成一个深度缓冲;按照程序分格子的个数生成一定格子数量的深度缓冲,对需要剔除对象的包围盒和深度缓冲做比较,决定要剔除被遮挡的物体,主线程不会绘制该部分;未被剔除的对象保留其可见性。0010进一步地,所述主线程渲染上一帧中帧线程检测到的可见性对象列表的操作,具体包括对三维图形进行渲染,对动态加载线程加载资源的判断,处理帧线程中更新的消息队列;以及,遍历监听网络服务器线程中消息队列、并处理响应的消息回调函数和上层的逻辑。0。

14、011进一步地,所述主线程对三维图形进行渲染的操作,具体包括对三维图像进行包括光影效果、材质渲染、UI和物理系统的渲染计算。0012进一步地,所述帧更新线程对当前帧中的对象进行更新的操作,具体包括对动态加载线程中的对象进行遮挡剔除、视锥体剔除、室内室外的可见性剔除,更新特效、粒子和动画;同时,对主线程基于物理的系统进行解算。0013进一步地,所述动态加载线程动态加载场景资源、模型资源、特效、OBJ文件和ANI文件的操作中,所述场景资源包含静态对象、地形、水、雾和贴花,I/O,所述模型资源主要包括角色、换装和装备。0014进一步地,所述监听网络服务器线程,还用于在没有消息时,处于等待或睡眠状态,。

15、直到有线程触发或唤醒;该消息包包含消息头和消息内容。0015进一步地,该3D引擎系统,还包括能够与所述主线程、帧更新线程、动态加载线程、监听网络服务器线程和遮挡剔除线程匹配设置的工具编辑器。0016进一步地,所述工具编辑器,主要包括场景编辑器、模型编辑器、任务编辑器,特效编辑器和界面编辑器,其中所述场景编辑器,主要用于基于DIRECTX渲染,支持室外、电光源、聚光灯阴影以及软阴影的实现,基于物理光照积分的IBL效果,基于蒙特卡洛积分的高光计算,基于深度图的视差映射技术;支持对模型材质的编辑操作,基于平滑地形高度的生成,基于自己渲染模块场景文件以供游戏的读取和渲染;所述模型编辑器,主要用于对三维。

16、软件导入的模型进行变换,包括模型动画的实现、模型特效的绑定、模型的换装系统和材质、以及声音的修改和编辑;所述特效编辑器,主要用于对特效进行浏览、编辑和绑定,设定特效的播放时间,多种特效的混合模式;说明书CN104102488A3/5页6所述界面编辑器,主要用于对游戏的主界面和角色属性界面进行交互、传达信息、以及对界面的逻辑进行相应的事件编辑。0017本发明各实施例的基于多线程并行化的3D引擎系统,由于主要包括基于无锁的多线程并发处理机制设置的主线程、帧更新线程、动态加载线程和监听网络服务器线程,其中主线程,主要用于渲染上一帧中帧线程检测到的可见性对象列表;帧更新线程,与所述主线程同步,主要用于。

17、对当前帧中的对象进行更新;动态加载线程,主要用于动态加载场景资源、模型资源、特效、OBJ文件和ANI文件;监听网络服务器线程,主要用于当有线程触发或唤醒时,接收服务器发送过来的消息包并插入到消息队列中,供主线程处理;从而可以克服现有技术中成本高、维护难度大和灵活性差的缺陷,以实现成本低、维护难度小和灵活性好的优点。0018本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。0019下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。附图说明0020附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解。

18、释本发明,并不构成对本发明的限制。在附图中图1为本发明基于多线程并行化的3D引擎系统的游戏引擎架构设计示意图。具体实施方式0021以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。0022基于当下计算机发展的速度和技术知识的快速更新,而现在的技术人员可以掌握最近的游戏开发技术,能够在短时间内缩小与世界级游戏水平的差异甚至可以超越国际水平,本发明提供了一种基于DIRECTX9的API之上的多线程并行处理3D游戏引擎架构,其优点大大降低了成本和开发周期,维护容易,灵活性高同时能提供大规模的并行执行,保证多核处理其性能。0023根据。

19、本发明实施例,如图1所示,提供了一种基于多线程并行化的3D引擎系统,具体涉及到一种多线程3D引擎架构设计。0024目前的3D游戏框架都有自己明确的架构分析,对于大多数的引擎架构大本大部分都相同,本发明提供以一种多线程并行处理数据的架构系统。0025在本发明的技术方案中,并行化处理各个线程,是利用开发平台上所有处理其来提高性能,在游戏引擎中各个功能之间数据是相互通信的,通常会引起访问的错误,我们需要创建这些线程对模块进行管理操作,尽管数据之间需要共享,对所有的线程执行结束的时候,会把数据送到响应线程的线程里处理,同时更新线程内部的数据结构,以便接收下一条的消息的处理。这样的设计就会使各个线程更加。

20、有序、高效独立的运行。0026游戏引擎的构成是由框架和管理模块组成的。框架主要用于游戏中多次重复利用的实例部分,它是将不同的部分联合起来。功能模块主要是独立处理逻辑功能。0027在本发明的技术方案中,关于框架的详细说明如下说明书CN104102488A4/5页7本发明引擎的框架设计,我们采用了无锁的多线程并发处理机制,具体的线程如下1一个主线程;2帧更新线程;3动态加载线程;4监听网络服务器线程;5遮挡剔除线程。0028主线程主要用于渲染,而本发明的渲染器是基于DIRECTX,DIRECTX渲染器使用微软的DIRECTX库。它是引擎的核心部分,基于微软提供的底层图形应用程序接口(API)它负责。

21、与硬件的通信,主要处理3D物体绘制到屏幕上。主要分为硬件的渲染和软件的渲染,而硬件的渲染主要是实时渲染。软件渲染主要利用CPU的处理数据的能力,能够提供各种算法以达到照片级的效果。它主要提供三维图形的渲染,光影效果的实现,材质渲染,UI等渲染,在程序中是处理任务最多,计算最复杂的线程;而各个线程都有其交互的功能。而主线程对游戏中光影效果的控制,应用了物理学中折射、反射等基本的光学原理以及动态光源等高级效果,当处理基于物理光照计算时,模拟真实的光照现象;具体的光照模型UNLIT、LAMBERTIAN、MICROBER、SKIN、DOTADIFFUSE、MIRROR、BLINNPHONG、ANIS。

22、OTROPIC光照模型,这些光照模型在主线程中运行。同时主线程还会处理复杂的逻辑运算,遍历服务器中消息队列和上层逻辑(AI和GUI),处理响应的消息回调函数。0029当在程序开始时,首先要触发动态加载线程进行游戏资源加载,先加载场景资源后加载模型资源;场景资源包含静态对象,地形,水,雾,贴花等,模型资源主要包括角色,换装,装备等;同时还加载文件I/O的读写等文件操作(比如日志文件)等。当动态加载线程加载完成时,会通知主线程这些场景的所有资源是可用的,主线程判断对其进行判断,以便其他线程可以利用这些资源。0030帧线程主要起到更新的作用,它和主线程是相辅相成并发执行,帧线程是对以加载好对象包围盒。

23、AABB进行遮挡剔除,视锥体剔除,室内室外的可见性剔除,特效更新,粒子更新,动画更新等,与此同时,主线程是渲染上一帧中帧线程检测到可见性对象列表,而帧线程则是更新的当前帧的对象,帧线程同时会处理在主线程中的光照模型,解算物理光照的运行状态。0031监听网络服务器线程接收服务器发送过来的消息包,包含消息头和消息内容,这些消息包插入到消息队列里,当监听有消息到来时,遍历所有的消息,没有消息的时候就等待或者睡眠直到有线程触发这个线程。0032遮挡处理线程遮挡剔除可以由多个线程并发处理,我们把这些功能相似的线程统称为遮挡处理线程。它是基于SSE加速指令以及多线程并发生成的深度缓存检测对象的可见性。多线。

24、程并发生成在低分辨率下的深度缓存,即一个二维的画布,把画布虚拟的划分为类似九宫格的分配机制,每个格子都会提供一个线程来处理,每个格子都会生成一个深度缓冲,就会按照程序分格子的个数生成一定格子数量的深度缓冲,对需要剔除对象的包围盒和深度缓冲做比较,决定要剔除被遮挡的物体,主线程不会绘制该部分,未被剔除的对象保留其可见性。0033综上所述,以上讲述了本发明基于多线程的框架的设计,为了加快引擎的开发速度,本发明还提供了一些工具编辑器。具体有场景编辑器、模型编辑器、任务编辑器,特效说明书CN104102488A5/5页8编辑器、界面编辑器。0034场景编辑器主要是基于DIRECTX渲染,支持室外,电光。

25、源,聚光灯阴影以及软阴影的实现,基于物理光照积分的IBL效果,基于蒙特卡洛积分的高光计算,基于深度图的视差映射技术,可实现对三维软件模型的导入、导出和转化功能;支持对模型材质的编辑操作,基于平滑地形高度的生成,基于自己渲染模块场景文件以供游戏的读取和渲染。0035模型编辑器主要是对三维软件导入的模型进行变换,包括模型动画的实现,模型特效的绑定,模型的换装系统和材质,声音等修改和编辑。以方便美术人员编辑,提高开发效率。0036特效编辑器主要对特效进行浏览,编辑和绑定,设定特效的播放时间,多种特效的混合模式。0037界面编辑器一般包括游戏的主界面和角色属性界面。他们主要用于交互,传达信息。主要对界。

26、面的逻辑进行相应的事件的编辑。0038本发明的技术方案,至少可以达到的有益效果包括基于无锁的多线程机制,高效处理物理逻辑能力;稳定安全的引擎架构,能够高效并发处理各个客户端的请求;自主研发很多功能模块,能够耦合多种引擎系统;设计简单,程序响应更快,资源利用率高性能稳定,便于性能的优化。0039最后应说明的是以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN104102488A1/1页9图1说明书附图CN104102488A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1