Language:
Page Info
Engine Version:
Share

GPUSprites类型数据

GPUSprites.png

GPUSprite 类型数据模块支持在GPU上模拟粒子。传统CPU系统允许在一帧中出现数千颗粒子。GPU模拟能高效地模拟和渲染数十万颗粒子。

GPU粒子不支持传统CPU粒子的所有功能,但它们拥有一些独特功能,可使效率得到极大提高。粒子发射仍在CPU上发生,以确定生成粒子的位置、时间和数量。CPU也可使用传统CPU粒子方法对大小和速度等初始属性进行指定。

将“GPU Sprites”类型数据模块添加至发射器,在级联中创造出GPU粒子sprite。在级联中创作其他特效后,在发射器上添加并编辑模块,对模拟参数进行修改。模拟随属性变化实时更新。

属性

属性

描述

光束

相机动态模糊量(Camera Motion Blur Amount)

基于摄像机动态模糊设置sprites的拉伸程度。

支持属性

GPU粒子支持以下属性:

初始位置(Initial Location):
初始速度(Initial Velocity):
加速度(Acceleration):
阻力(Drag):
生命周期(Lifetime):
颜色(Color):
大小(Size):
旋转(Rotation)
自转速率(RotationRate):
子图像索引(SubImageIndex):

重要概念

在场景中使用GPU粒子时,对下列关键概念的理解至关重要。

运动

粒子运动以牛顿动态力学为基准。在每个时间步长中,粒子位置和速度基于其当前位置、当前速度、恒加速度和阻力进行整合。

GPU粒子虽然在细节上和传统CPU粒子不同,但其仍然支持轨道运动。从概念上而言,粒子移动犹如sprite围绕粒子实际位置(一个变量将使此位置发生偏移)进行轨道运动。可利用轨道向粒子添加额外的细节运动。

矢量场

除效率之外,GPU粒子最有趣的特性是矢量域。矢量域是一个由影响粒子运动的矢量组成的统一网格。矢量域作为Actor放置在场景中(整体矢量域),可以像任何其他Actor一样进行平移、旋转和缩放。它们是动态的,可以在任何时候移动。域也可以放置在级联中(局部矢量域),限制其对与其相关联的发射器的影响。当粒子进入矢量域的边界时,粒子的运动将受到矢量域的影响,当粒子离开边界时,矢量域的影响将消失。

默认情况下,矢量域会对其中的粒子施力。矢量域还有一个“紧密度”参数。此参数控制粒子如何直接跟随域中的矢量。当紧密度设置为1时,粒子直接从域中读取其速度,从而准确地跟随域。

静态矢量域是矢量网格永不改变的域。这些域可以从Maya导出并作为体积纹理导入。静态域资源占用低,可以用来向粒子添加有趣的运动,特别是通过对域本身的运动设置动画。

此外,还可以从二维图像重新构建矢量域。在这种情况下,可以导入一个非常类似于法线贴图的图像,通过挤压它或将其围绕体积旋转来重新构建体积纹理。在此重新构建的基础上,可以添加一个静态矢量域,引入一些噪点和随机性。此外,可以通过在图谱纹理中存储单独的帧来对2D图像设置动画。这样做让您可以离线执行流体模拟,并以极低的成本实时重新构建运动。

性能

GPU粒子的CPU开销主要视粒子的生成而定。粒子以传统CPU粒子的相同方式在CPU上生成,所以性能特征十分相似。

粒子的GPU开销主要视粒子的数量而定。少数功能在现有开销外增加了GPU粒子的额外开销。大部分GPU开销来自排序和渲染。排序为可选项,建议只在粒子发射器必需时启用。渲染通常视填充率而定。缩小粒子大小、减少粒子材质上的指令数量、减少粒子总量均能降低开销。粒子极小时,渲染主要视顶点开销而定。在此情况下,减少粒子数量是降低开销的唯一方法。

模拟开销将随与发射器重叠的矢量场的数量而变化。因此,减少重叠的矢量场数量有助于降低模拟开销。

移动设备GPU sprite

GPUSprites_&_Vector_Fields.png

移动设备现已支持GPU粒子和矢量场!然而,此功能需要移动设备支持带MRT的32位浮点渲染目标,所以其只能在以下移动设备上使用。

制造厂商

设备等级

设备名称

Apple

A8+

iPhone 6、iPad Air 2、iPad Mini 4及更新机型。

Android

带Adreno 4xx和Mali-T7xx GPU的6.0设备

Galaxy Note 4、Note 5、S6、S7、Nexus 6P等。

将以下类型数据添加到粒子后,即可让粒子使用此功能。

GPUSprites_VFXC_Setup.png

  • GPU Sprites 类型数据

  • Global Vector Fields 类型数据

此外还需要将一个 矢量域 添加到粒子系统或放置在关卡中。

移动设备GPU sprite的限制

在移动设备上使用GPU sprite时,需要牢记以下限制。

  • 矢量域交互: 和PC上的矢量域一样,移动设备GPU spirte同时最多只能受4个矢量域所影响。分为1个本地矢量域和最多3个放置在场景中的矢量域。

  • GPU粒子碰撞: 移动GPU sprite 支持任意碰撞选项(如与场景或网格体距离场碰撞),因为移动设备并不支持。