CN103714568A - 一种大规模粒子系统的实现方法 - Google Patents
一种大规模粒子系统的实现方法 Download PDFInfo
- Publication number
- CN103714568A CN103714568A CN201310750468.8A CN201310750468A CN103714568A CN 103714568 A CN103714568 A CN 103714568A CN 201310750468 A CN201310750468 A CN 201310750468A CN 103714568 A CN103714568 A CN 103714568A
- Authority
- CN
- China
- Prior art keywords
- particle
- transmitter
- gpu
- bunch
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本申请公开了一种大规模粒子系统的实现方法,预先定义由GPU处理的粒子属性,该方法包括如下步骤:根据第一层发射器的属性,在CPU中生成簇,初始化簇,更新簇;簇是具有共同属性的多个粒子组成的集合;第一层关键帧数据的颜色、透明度、缩放、姿态、路径影响当前时刻的簇状态;根据第二层发射器的属性,在CPU中生成粒子,初始化粒子,更新粒子;CPU把预先定义的由GPU处理的粒子属性通过常量寄存器传给GPU;GPU通过CPU传过来的数据在顶点着色器内线性运算出粒子属性。本申请方案可以减轻CPU负载。
Description
技术领域
本申请涉及三维计算机图形技术领域,尤其涉及一种大规模粒子系统的实现方法。
背景技术
粒子系统是三维计算机图形学中模拟一些特定的不规则模糊景象的技术,而这些景象用其它传统的渲染技术难以实现的真实感。在粒子系统中,景象被定义为由成千上万个不规则的、随机分布的粒子所组成,而每一个粒子均有一定的生命周期,它们不断改变形状、不断运动,充分地体现了不规则物体的性质。经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、溅血、落叶、云、雾、雪、尘、流星尾迹或者发光轨迹这样的抽象视觉效果等等。粒子系统方法具有良好的随机性和动态性,能逼真地模拟动态景物。因此,利用粒子系统方法模拟自然景物,有着重要的科学意义和广泛的应用前景,在系统仿真、影视特效、三维游戏中有广泛的应用。
经典的粒子系统在中央处理器(CPU,Central Processing Unit)上计算,在图形处理器(GPU,Graphic Processing Unit)上渲染。现有技术中的粒子系统的实现过程如图1所示,包括如下步骤:
步骤101:发射器生成粒子。
步骤102:CPU处理过程:粒子初始化、颜色、缩放、材质等逻辑数据更新。
如果粒子没有死亡,更新粒子的位置、颜色、姿态,修改粒子的生命值;如果粒子生命小于某个阀值(比如0.0),设置粒子状态为死亡,删除死亡的粒子;增加新的粒子到粒子队列中,或者查找生命为死亡的粒子,用计算出的新粒子属性覆盖之。
粒子的行为参数及位置通过发射器控制。发射器主要由一组粒子行为参数以及在三维空间中的位置所表示。发射器参数包括喷射开始的时间,持续时间,喷射间隔喷射数量等;粒子行为参数可以包括粒子生成速度(即单位时间粒子生成的数目)、粒子初始速度向量(例如什么时候向什么方向运动)、粒子寿命(经过多长时间粒子湮灭)、粒子颜色、在粒子生命周期中的变化以及其它参数等等。使用大概值而不是绝对值的模糊参数占据全部或者绝大部分是很正常的,一些参数定义了中心值以及允许的变化。
步骤103:绘制粒子。把没有死亡的粒子的位置信息以及其他相关信息送入显卡中,GPU对粒子进行渲染。
模拟一个复杂的景象需要成千上万,甚到几十万个粒子,计算和渲染分离的结果是CPU负载较重,挤占了其他处理进程的资源。
发明内容
本申请提供了一种大规模粒子系统的实现方法,可以减轻CPU负载。
本申请实施例提供的一种大规模粒子系统的实现方法,预先定义由GPU处理的粒子属性,该方法包括如下步骤:
根据第一层发射器的属性,在CPU中生成簇,初始化簇,更新簇;簇是具有共同属性的多个粒子组成的集合;
第一层关键帧数据的颜色、透明度、缩放、姿态、路径影响当前时刻的簇状态;
根据第二层发射器的属性,在CPU中生成粒子,初始化粒子,更新粒子;
CPU把预先定义的由GPU处理的粒子属性通过常量寄存器传给GPU;
GPU通过CPU传过来的数据在顶点着色器内线性运算出粒子属性。
第一层发射器属性包括喷射开始的时间、持续时间、喷射间隔、簇数量、喷射的最大数量、运动坐标系、喷射簇的最大最小速度、发射器类型(球、长发方体、圆柱、锥、环、等区域发射器和定位点发射器)。
簇中粒子的共同属性包括如下属性之一或其任意组合:出生位置,生命,颜色,透明度,姿态,缩放,路径。
CPU把预先定义的关键帧表数据(包括粒子的颜色、透明度、缩放、姿态)、粒子的材质信息、位置、元素类型、时间信息,通过常量寄存器传给GPU。GPU通过传进来的时间可以得知当前的粒子在哪一个关键帧上,然后查表可得当前粒子的颜色、透明度、缩放、姿态信息、通过传进来的纹理缩放、位置、旋转等信息还原当前时刻的纹理状态,同一类型的粒子共用一个渲染器成队列渲染,同类型的粒子当纹理等属性相同时一次合并渲染。
元素是粒子类型的统称,粒子的类型包括公告板,箭头,叶子片,锥箭头,锥叶子片,静态模型箭头,静态模型叶子片,顶点模型箭头,顶点模型叶子片,贴花,条带,闪电链。
第一层和第二层的球、长发方体、圆柱、锥、环、等区域发射器属性包含区域的起始与结束位置,通过这个可以编辑粒子在区域内或者是表面进行发射。
从以上技术方案可以看出,将现有技术中CPU的部分计算工作转移到GPU上。结构上是固定两层架构,不可无限嵌套,第一层完全CPU运算,第二层发射器在CPU上运算,关键帧、材质在GPU上运算。本申请方案结构上相比以前简单,部分工作转入GPU进行运算,释放了CPU的部分处理资源。
附图说明
图1为现有技术中的粒子系统的实现过程流程图;
图2为本申请实施例提供的大规模粒子系统的实现方法流程图;
图3为基于本申请实施例方案实现的导弹发射与爆炸效果示意图。
具体实施方式
随着计算机硬件技术的不断发展,GPU具有强大的并行处理能力,并且已经具备了浮点计算能力,还提供了编程接口,在GPU上实现通用计算已经成为一个热点研究领域。本申请提供的大规模粒子系统的实现方法,CPU把最终粒子的颜色,透明,姿态,位置,材质等相关信息传给GPU,GPU把粒子还原到当前时刻的状态,CPU主要对粒子进行组合封装工作。
为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。
本申请实施例提供的大规模粒子系统的实现方法流程如图2所示,包括如下步骤:
步骤201:初始化第一层发射器,根据第一层发射器的属性,在CPU中生成簇,初始化簇,更新簇。
簇是具有共同属性的多个粒子组成的集合。一个簇中包含的粒子的数目可以根据实际需要确定。所述第一层发射器的属性包括喷射开始的时间、持续时间、喷射间隔、簇数量等。同一个发射器所发射的簇中粒子的共同属性包括如下属性之一或其任意组合:出生位置,生命,颜色,透明度,姿态,缩放,路径等。
步骤202:第一层关键帧数据赋值、运算。第一层关键帧数据的颜色、透明度、缩放、姿态、路径影响当前时刻的簇状态。CPU的关键帧的数目是不定的,并且各类数据不是都存在的,根据用户的需要编辑相应的的关键帧数据。
步骤203:初始化第二层发射器,根据第二层发射器的属性,在CPU中生成粒子,初始化粒子,更新粒子。第二层发射器的功能与第一层发射器基本相同,只是发射的对象变为粒子。
步骤204:CPU把预先定义的关键帧表数据(包括粒子的颜色、透明度、缩放、姿态)、粒子的材质信息、位置、元素类型、时间信息,通过常量寄存器传给GPU。
本申请实施例中,预先定义的由GPU处理的粒子属性包括颜色,透明,姿态,位置,材质。
步骤205:GPU通过CPU传过来的数据在顶点着色器内线性运算出粒子属性。
在GPU的渲染处理过程中,同一类型的粒子共用一个渲染器,同类型的粒子属性相同时可以一次渲染,当同屏中相同粒子效果越多的时候效率越高。粒子类型包括但不限于:公告板,箭头,叶子片,锥箭头,锥叶子片,静态模型箭头,静态模型叶子片,顶点模型箭头,顶点模型叶子片,贴花,条带,闪电链。
所述第一层发射器和第二层发射器的形态包括但不限于球形发射器、发形发射器、圆柱形发射器、锥形发射器、环形发射器、定位点发射器。粒子或簇可以在发射器表面或者是内部进行发射。
利用本申请方案生成如图3所示导弹从上方区域内发射到地面上然后爆炸的效果。导弹模型和拖尾粒子烟等是一个整体的效果,因为它们的运动轨迹都是相同的,将用于表示导弹模型和拖尾粒子烟的簇挂在同一个第一层发射器上面,簇个数编辑为1,喷射间隔编辑为0.15。这样就每隔0.15秒就发射一个簇,簇里面包含多个第二层发射器一个导弹、拖着的火焰、还有后面拖尾的烟等粒子。粒子其他的属性在GPU上处理,比如粒子的颜色、透明度、缩放、姿态、贴图方式。用另一个第一层发射器模拟在地面上爆炸的效果,同样簇内包含多个第二层发射器有地面的闪光、崩起的落石等,发射频率数据与前一个第一层发射器设置相同,在出生时间上往后延迟。使之落地的时间与爆炸开始的时间基本一样。用于表示爆炸释放的烟雾的粒子的属性同样也是在GPU上进行处理。这样就能很方便地完成一个天上落导弹,到地面上爆炸的效果了。
原有技术所实现的粒子效果比较单一,本申请技术方案中固定的两层架构加上发射器中簇的概念相结合,可以让一个效果中包含更多的粒子,粒子之间相互关联能实现更多游戏中复杂的技能效果。随着GPU发展,运算性能越来越强大,适合计算一些有规律的数据。本申请技术方案将CPU的一部分运算量移到GPU上去做,释放CPU运算量的同时利用了GPU的运算,但是在传输带宽上会有相应的负担,所以只移了粒子的颜色、透明度、缩放、姿态、材质等信息,意在让整个系统对外部硬件的需求都平均,以达到整个系统能更稳定高效的需求。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (9)
1.一种大规模粒子系统的实现方法,其特征在于,预先定义由GPU处理的粒子属性,该方法包括如下步骤:
根据第一层发射器的属性,在CPU中生成簇,初始化簇,更新簇;簇是具有共同属性的多个粒子组成的集合;
第一层关键帧数据的颜色、透明度、缩放、姿态、路径影响当前时刻的簇状态;
根据第二层发射器的属性,在CPU中生成粒子,初始化粒子,更新粒子;
CPU把预先定义的由GPU处理的粒子属性通过常量寄存器传给GPU;
GPU通过CPU传过来的数据在顶点着色器内线性运算出粒子属性。
2.根据权利要求1所述的方法,其特征在于,所述第一层发射器属性包括喷射开始的时间、持续时间、喷射间隔和簇数量。
3.根据权利要求1所述的方法,其特征在于,所述簇中粒子的共同属性包括如下属性之一或其任意组合:出生位置,生命,颜色,透明度,姿态,缩放,路径。
4.根据权利要求1所述的方法,其特征在于,所述GPU处理过程中,同一类型的粒子共用一个渲染器,同类型的粒子属性相同时一次渲染。
5.根据权利要求1所述的方法,其特征在于,粒子的类型包括公告板,箭头,叶子片,锥箭头,锥叶子片,静态模型箭头,静态模型叶子片,顶点模型箭头,顶点模型叶子片,贴花,条带,闪电链。
6.根据权利要求1所述的方法,其特征在于,所述第一层发射器和第二层发射器的形态包括球形发射器、发形发射器、圆柱形发射器、锥形发射器、环形发射器或定位点发射器。
7.根据权利要求1所述的方法,其特征在于,粒子在第二层发射器表面或者内部进行发射。
8.根据权利要求1所述的方法,其特征在于,簇在第一层发射器表面或者内部进行发射。
9.根据权利要求1至8任一项所述的方法,其特征在于,预先定义的由GPU处理的粒子属性包括颜色,透明,姿态,位置,材质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750468.8A CN103714568B (zh) | 2013-12-31 | 2013-12-31 | 一种大规模粒子系统的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750468.8A CN103714568B (zh) | 2013-12-31 | 2013-12-31 | 一种大规模粒子系统的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103714568A true CN103714568A (zh) | 2014-04-09 |
CN103714568B CN103714568B (zh) | 2017-02-15 |
Family
ID=50407509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310750468.8A Active CN103714568B (zh) | 2013-12-31 | 2013-12-31 | 一种大规模粒子系统的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103714568B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104571993A (zh) * | 2014-12-30 | 2015-04-29 | 北京像素软件科技股份有限公司 | 粒子系统的处理方法、显卡和移动应用平台 |
CN104778737A (zh) * | 2015-03-23 | 2015-07-15 | 浙江大学 | 基于gpu的大规模落叶实时渲染方法 |
WO2017198104A1 (zh) * | 2016-05-16 | 2017-11-23 | 腾讯科技(深圳)有限公司 | 一种粒子系统的处理方法及装置 |
CN108921927A (zh) * | 2018-06-12 | 2018-11-30 | 阿里巴巴集团控股有限公司 | 一种基于粒子的烟花特效实现方法、装置以及设备 |
CN109871663A (zh) * | 2019-04-08 | 2019-06-11 | 北京理工大学 | 基于游戏引擎的烟火特效仿真系统 |
CN110047030A (zh) * | 2019-04-10 | 2019-07-23 | 网易(杭州)网络有限公司 | 周期性特效生成方法及装置、电子设备、存储介质 |
CN110675466A (zh) * | 2019-09-27 | 2020-01-10 | 广州华多网络科技有限公司 | 渲染系统及渲染方法、装置、电子设备和存储介质 |
CN111625170A (zh) * | 2020-06-15 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 一种动画显示方法、电子设备和存储介质 |
CN112700517A (zh) * | 2020-12-28 | 2021-04-23 | 北京字跳网络技术有限公司 | 生成烟花视觉效果的方法、电子设备、存储介质 |
CN112785722A (zh) * | 2021-01-22 | 2021-05-11 | 福建天晴在线互动科技有限公司 | 一种实现粒子表现多样化的系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426692A (zh) * | 2011-08-18 | 2012-04-25 | 北京像素软件科技股份有限公司 | 粒子绘制方法 |
CN102722859A (zh) * | 2012-05-31 | 2012-10-10 | 北京像素软件科技股份有限公司 | 一种计算机仿真场景渲染方法 |
CN102982506A (zh) * | 2012-11-13 | 2013-03-20 | 沈阳信达信息科技有限公司 | 基于gpu的粒子系统优化 |
-
2013
- 2013-12-31 CN CN201310750468.8A patent/CN103714568B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426692A (zh) * | 2011-08-18 | 2012-04-25 | 北京像素软件科技股份有限公司 | 粒子绘制方法 |
CN102722859A (zh) * | 2012-05-31 | 2012-10-10 | 北京像素软件科技股份有限公司 | 一种计算机仿真场景渲染方法 |
CN102982506A (zh) * | 2012-11-13 | 2013-03-20 | 沈阳信达信息科技有限公司 | 基于gpu的粒子系统优化 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104571993B (zh) * | 2014-12-30 | 2018-01-30 | 北京像素软件科技股份有限公司 | 粒子系统的处理方法、显卡和移动应用平台 |
CN104571993A (zh) * | 2014-12-30 | 2015-04-29 | 北京像素软件科技股份有限公司 | 粒子系统的处理方法、显卡和移动应用平台 |
CN104778737A (zh) * | 2015-03-23 | 2015-07-15 | 浙江大学 | 基于gpu的大规模落叶实时渲染方法 |
CN104778737B (zh) * | 2015-03-23 | 2017-10-13 | 浙江大学 | 基于gpu的大规模落叶实时渲染方法 |
US10699365B2 (en) | 2016-05-16 | 2020-06-30 | Tencent Technology (Shenzhen) Company Limited | Method, apparatus, and storage medium for processing particle system |
WO2017198104A1 (zh) * | 2016-05-16 | 2017-11-23 | 腾讯科技(深圳)有限公司 | 一种粒子系统的处理方法及装置 |
CN107392835A (zh) * | 2016-05-16 | 2017-11-24 | 腾讯科技(深圳)有限公司 | 一种粒子系统的处理方法及装置 |
CN107392835B (zh) * | 2016-05-16 | 2019-09-13 | 腾讯科技(深圳)有限公司 | 一种粒子系统的处理方法及装置 |
CN108921927A (zh) * | 2018-06-12 | 2018-11-30 | 阿里巴巴集团控股有限公司 | 一种基于粒子的烟花特效实现方法、装置以及设备 |
CN108921927B (zh) * | 2018-06-12 | 2022-12-23 | 创新先进技术有限公司 | 一种基于粒子的烟花特效实现方法、装置以及设备 |
CN109871663A (zh) * | 2019-04-08 | 2019-06-11 | 北京理工大学 | 基于游戏引擎的烟火特效仿真系统 |
CN110047030A (zh) * | 2019-04-10 | 2019-07-23 | 网易(杭州)网络有限公司 | 周期性特效生成方法及装置、电子设备、存储介质 |
CN110047030B (zh) * | 2019-04-10 | 2023-05-16 | 网易(杭州)网络有限公司 | 周期性特效生成方法及装置、电子设备、存储介质 |
CN110675466A (zh) * | 2019-09-27 | 2020-01-10 | 广州华多网络科技有限公司 | 渲染系统及渲染方法、装置、电子设备和存储介质 |
CN111625170A (zh) * | 2020-06-15 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 一种动画显示方法、电子设备和存储介质 |
CN112700517A (zh) * | 2020-12-28 | 2021-04-23 | 北京字跳网络技术有限公司 | 生成烟花视觉效果的方法、电子设备、存储介质 |
CN112700517B (zh) * | 2020-12-28 | 2022-10-25 | 北京字跳网络技术有限公司 | 生成烟花视觉效果的方法、电子设备、存储介质 |
CN112785722A (zh) * | 2021-01-22 | 2021-05-11 | 福建天晴在线互动科技有限公司 | 一种实现粒子表现多样化的系统 |
CN112785722B (zh) * | 2021-01-22 | 2023-06-16 | 福建天晴在线互动科技有限公司 | 一种实现粒子表现多样化的系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103714568B (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103714568A (zh) | 一种大规模粒子系统的实现方法 | |
Lewis et al. | Game engines | |
CN102722859B (zh) | 一种计算机仿真场景渲染方法 | |
CN101706967B (zh) | 一种真实感云层的综合模拟方法 | |
CN105913471B (zh) | 图片处理的方法和装置 | |
CN102243770A (zh) | 一种基于osg的虚拟海战场真实感图形快速绘制方法 | |
US11704868B2 (en) | Spatial partitioning for graphics rendering | |
CN113559504B (zh) | 信息处理方法、装置、存储介质及电子设备 | |
Lee | Learning unreal engine game development | |
Zhang et al. | Game special effect simulation based on particle system of Unity3D | |
CN110415326A (zh) | 一种粒子效果的实现方法及装置 | |
Lazaridis et al. | Hitboxes: A survey about collision detection in video games | |
Fan et al. | Simulation and rendering for millions of grass blades | |
CN115082607A (zh) | 虚拟角色头发渲染方法、装置、电子设备和存储介质 | |
CN114470775A (zh) | 虚拟场景中的对象处理方法、装置、设备及存储介质 | |
Joselli et al. | Techniques for designing GPGPU games | |
Dong et al. | Firework simulation based on particle system in virtual scene | |
Lin et al. | Design and implementation of an OpenGL based 3D first person shooting game | |
Joselli et al. | Gpuwars: Design and implementation of a gpgpu game | |
Zhang et al. | Real-time hair simulation on mobile device | |
Macedonia | Why graphics power is revolutionizing physics | |
Zhao et al. | Fireworks controller | |
CN116688501A (zh) | 虚拟对象的控制方法、装置、设备、介质及程序产品 | |
GRÖNQVIST et al. | Baa! A procedural game based on real-time flocking behaviour | |
Xiao et al. | Real-time simulation of fireworks based on GPU and particle system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |