游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:786

当前位置:游戏蛮牛 技术专区 教程分享

查看: 831|回复: 5

[基础知识] Unity2018新功能抢鲜 | 粒子系统改进

[复制链接]  [移动端链接]
2初来乍到
110/150

38

主题

40

帖子

110

积分

Rank: 2Rank: 2

UID
24181
好友
0
蛮牛币
352
威望
0
注册时间
2014-5-7
在线时间
42 小时
最后登录
2018-9-21
发表于 2018-4-16 20:18:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 关尔Manic 于 2018-4-16 20:19 编辑

本文首发于“洪流学堂”微信公众号。  转载请注明
Unity2018.1中对粒子系统进行了重大改进,包括功能、性能很多方面,快来看看吧!
GPU网格实例化
粒子系统现在支持GPU实例化来渲染网格。粒子系统使用Procedural Instancing,可以在此处详细解释:https://docs.unity3d.com/Manual/GPUInstancing.html
实例化支持已添加到“Particle Standard Shaders”中,并将在所有新内容中默认启用。旧版内容升级到Unity 2018.1后,可以使用Renderer模块中的复选框启用GPU实例化。
还可以将粒子实例化功能添加到自定义的着色器中。这是一个简单的例子:
[C#] 纯文本查看 复制代码
Shader "Instanced/ParticleMeshesCustom"
{
    Properties
    {
        _MainTex("Albedo", 2D) = "white" {}
        [Toggle(_FLIPBOOK_BLENDING)] _FlipbookBlending("Flipbook Blending", Int) = 0
    }

    SubShader
    {
        Tags{ "RenderType" = "Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma multi_compile __ _FLIPBOOK_BLENDING
            #pragma multi_compile_instancing
            #pragma instancing_options procedural:vertInstancingSetup
            #include "UnityCG.cginc"
            #include "UnityStandardParticleInstancing.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                fixed4 color : COLOR;
                float2 texcoord : TEXCOORD0;
                UNITY_VERTEX_INPUT_INSTANCE_ID
            };

            struct v2f
            {
                float4 vertex : SV_POSITION;
                fixed4 color : COLOR;
                float2 texcoord : TEXCOORD0;
#ifdef _FLIPBOOK_BLENDING
                float3 texcoord2AndBlend : TEXCOORD1;   
#endif
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

            fixed4 readTexture(sampler2D tex, v2f IN)
            {
                fixed4 color = tex2D(tex, IN.texcoord);
#ifdef _FLIPBOOK_BLENDING
                fixed4 color2 = tex2D(tex, IN.texcoord2AndBlend.xy);
                color = lerp(color, color2, IN.texcoord2AndBlend.z);
#endif
                return color;
            }

            v2f vert(appdata v)
            {
                v2f o;

                UNITY_SETUP_INSTANCE_ID(v);

                o.color = v.color;
                o.texcoord = v.texcoord;

                vertInstancingColor(o.color);
#ifdef _FLIPBOOK_BLENDING
                vertInstancingUVs(v.texcoord, o.texcoord, o.texcoord2AndBlend);
#else
                vertInstancingUVs(v.texcoord, o.texcoord);
#endif

                o.vertex = UnityObjectToClipPos(v.vertex);
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
                half4 albedo = readTexture(_MainTex, i);
                return i.color * albedo;
            }

            ENDCG
        }
    }
}


使用Instancing可以渲染更多的粒子网格,并且CPU性能更好。
这里有10,000个球体网格,使用旧的非实例化技术,10fps:
这里有100,000个球面网格,使用新的实例技术,可以达到100fps:
轨道粒子速度
Unity 2018.1为Velocity over Lifetime模块添加了一些新选项,使您可以使粒子相对于定义的中心点移动。默认情况下,中心与transform对齐,但可以在模块内修改。可以使用Orbital参数使粒子绕中心点行进,并使用Radial参数离开/朝向中心点。
纹理形状模块
Shape模块中的所有形状类型现在都支持纹理。纹理可用于:
  • 控制粒子颜色
  • 控制粒子alpha
  • 根据设置的的阈值和纹理通道丢弃粒子
子发射器
在Unity 2018.1中有两种新的产生子发射器的方法。第一种是通过触发模块,其工作方式类似于子碰撞模块产生子发射器的方式。只需在子发射器模块中选择触发器作为子发射器类型,然后当触发器模块内部满足条件时(例如粒子进入碰撞体积),相应的子发射器将被触发。
触发子发射器的第二种新方法是通过脚本。添加了一个名为TriggerSubEmitter 的新API ,可用于为单个粒子,粒子列表或所有粒子触发子发射器。在子发射器模块中,您可以选择Manual作为生成类型,该生成类型告诉粒子系统该发射器只能通过脚本中的调用触发。也可以使用现有的类型(例如Collision 或Death ),并通过脚本为这些子发射器添加其他触发器。
旧粒子系统退役
继续维护旧粒子系统成了每个Unity版本的开发负担。新引擎功能(如VR和多线程渲染)需要花费更多时间来确保引擎的兼容性。当添加新的引擎功能时,需要花很多时间维护传统粒子系统代码。
这促使Unity开发团队采取下一步措施来淘汰旧粒子系统。因此,在Unity 2018.1中将删除它的Script Bindings。
自Unity 5.4以来,旧粒子系统已被完全弃用,Unity官方的统计显示几乎不存在使用情况。Unity团队的目标是到Unity 2018.3完全删除Legacy Particle System。
如果这会影响到你,你有一些选择:
  • 将遗留粒子系统迁移到Shuriken
  • 使用自动更新脚本来尝试自动转换(https://forum.unity.com/threads/release-legacy-particle-system-updater.510879/
  • 通过(https://forum.unity.com/threads/legacy-particle-system-deprecation.420351/)寻求帮助。
加权切线(动画曲线)
动画团队已加入对加权切线的支持,以支持Unity中的所有曲线编辑。这意味着你也可以在粒子系统中使用这个新功能!
本文首发于“洪流学堂”微信公众号。  转载请注明

[发帖际遇]: 关尔Manic 乐于助人,奖励 3 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

4四处流浪
452/500
排名
5736
昨日变化

0

主题

119

帖子

452

积分

Rank: 4

UID
267103
好友
0
蛮牛币
812
威望
0
注册时间
2018-1-31
在线时间
105 小时
最后登录
2018-9-25
发表于 2018-4-17 08:31:43 | 显示全部楼层

回复

使用道具 举报

5熟悉之中
633/1000
排名
6298
昨日变化
4

2

主题

256

帖子

633

积分

Rank: 5Rank: 5

UID
229218
好友
1
蛮牛币
797
威望
0
注册时间
2017-6-28
在线时间
175 小时
最后登录
2018-9-20
发表于 2018-4-17 10:49:11 | 显示全部楼层
洪流课堂666
[发帖际遇]: 林海 被钱袋砸中进医院,看病花了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

0

主题

5

帖子

14

积分

Rank: 1

UID
247764
好友
0
蛮牛币
6
威望
0
注册时间
2017-10-9
在线时间
9 小时
最后登录
2018-8-8
发表于 2018-4-17 15:47:19 | 显示全部楼层
期待~谢谢分享

回复

使用道具 举报

7日久生情
3541/5000
排名
322
昨日变化

32

主题

800

帖子

3541

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
4392
好友
31
蛮牛币
11032
威望
0
注册时间
2013-9-23
在线时间
981 小时
最后登录
2018-9-20

社区QQ达人

发表于 2018-6-29 14:31:31 | 显示全部楼层
洪流学堂 微信公众号搜不到

回复 支持 反对

使用道具 举报

7日久生情
3541/5000
排名
322
昨日变化

32

主题

800

帖子

3541

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
4392
好友
31
蛮牛币
11032
威望
0
注册时间
2013-9-23
在线时间
981 小时
最后登录
2018-9-20

社区QQ达人

发表于 2018-6-29 14:37:27 | 显示全部楼层
楼主,你的粒子效果可以分享不?

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表