Unity 粒子特效材质发光 HDR ShaderGraph图文教程

发布日期:2023-10-12

准备工作--在hdr模式下,关闭Directional Light ,相机设置移动球挂一个点光源作为子节点,设置自行调节

OWkzIg.jpg

.创建移动球的材质及shader

shader-->在Project / Create / Shader Graph/ URP / unlit shader graph;

双击新创建的shadergraph文件,在shadergraph编辑器中 右键new node 输入color。将color链接到fragment。color的mode选择HDR【点击颜色条可以增强或减弱HDR颜色,调整效果】; 新建一个材质点击inspector面板最上面的shader右侧edit按钮选择该shadergraph;再将这个材质替换移动球MeshRenderer的materials默认材质。


注意:保存shadergraph在编辑器左上角save asset

为了让移动球看起来发光,我们需要应用光晕后期效果

Create/GameObject / Volume / Global Volume

在Hierachy面板中点击新建的global volume,设置如下图

xjQpvB.png

URP设置

找到urp配置文件,设置如下图防止 Unity 在每一帧都不必要地更新体积数据

sQwrvE.png

HDR粒子特效设定[类似火花粒子效果]

在移动球创建一个粒子子节点,

停用Looping和Play On Awake.

Start Lifetime值范围:0.5–1

Start Speed到 2–4

Start Size到 0.5。

改变Simulation Space值为World

Emitter Velocity Mode到Transform.

Emission模块的rate over time 值为0,rate over distance 值为0

Shape模块设置为cone,Angle值45 Radius值 0.5。

启用Color over Lifetime模块,从黄色到红色的颜色渐变,其 alpha 在两端设置为零,在 10% 时设置为 255。

启用Size over Lifetime模块,线性曲线从 1 下降到 0。

设置Mode模块的Renderer值为Mesh,它默认使用立方体。让它使用我们的粒子材料。

shader-->在Project / Create / Shader Graph/ URP / unlit shader graph;还是无光照着色器

shader设置

WekCqG.png

intensity:在blackboard 增加了float属性命名为intensity.拉到编辑界面上。

EDqAGh.png

代码控制效果:

   [SerializeField]

   ParticleSystem pball;

   [SerializeField]

   int emisCount = 20;//控制每次弹跳生成多少粒子

  //发射锥必须正确定位和旋转

    void EmitGrow (float x, float z, float rotation)

   {

       ParticleSystem.ShapeModule shape = pball.shape;

       shape.position = new Vector3(x, 0f, z);

       shape.rotation = new Vector3(0f, rotation, 0f);

       pball.Emit(emisCount);

}

未完待续,使用lit shadergraph创建自发光闪烁 效果

timeColorMat.SetFloat(timeOfLastHitId, Time.time);//代码激活

注意事项:自定义属性 设置timeOfLastHitId默认值-1000。emissioncolor设置hdr.

关联游戏: 易棋游戏