Shadergraph Practise

Shadergraph Practise

在shadergraph中的一些练习,关于火焰,激光射线以及游动金鱼的效果生成

火焰:

  1. 准备烟雾的贴图和渐变的贴图
  2. 烟雾贴图采样将透明度作为渐变贴图的uv输入,将采样后的渐变纹理的单个通道作为输出的透明度输入
  3. 输入顶点颜色,将a通道分离出来进行重映射,重映射范围设置为变量opacity,和烟雾采样输出的透明度相乘,限制范围0-1,重新作为渐变的uv输入
  4. 复制相关节点进行颜色映射,将顶点颜色分离出的a通道重映射,输出范围设置为变量colorIntensity,和烟雾透明度相乘,限制范围0-1,作为uv输入渐变,将渐变的颜色输出结果和自定义颜色变量相乘
  5. 将颜色相乘结果再和顶点颜色相乘,作为输出的颜色输入

激光射线:

  1. 激光形状png作为主要纹理,定义MainSpeed变量与时间相乘后与uv相加使uv变化,作为采样的uv输入
  2. 输入渐变纹理作为遮罩,与主要纹理相乘的结果和定义的Color变量相乘,再和顶点输入的颜色相乘后作为输出的颜色输入
  3. 将遮罩的单个通道分离出来和主要纹理的a通道相乘,再和顶点颜色分离出来的a通道相乘作为输出的alpha输入
  4. 新建Simple Noise纹理,定义NoiseSpeed变量和时间相乘加上顶点输入的uv作为噪声纹理的 uv输入,定义NoiseScale变量作为噪声纹理的Scale输入,对噪声输出进行pow操作,定义NoisePower作为它的幂次方
  5. 定义NoiseAmount变量,新建lerp操作,分别将顶点uv和噪声pow后结果作为AB输入,输出代替第一步和主纹理的速度相加的顶点uv,实现NoiseAmount对噪声扰动uv的控制
  6. 定义DissolveAmount变量,新建lerp操作,将主要纹理的a通道与噪声pow结果相乘作为Lerp的B输入,主纹理的RGBA通道作为A输入,lerp的输出代替第二步中和遮罩相乘的主要纹理,实现溶解对颜色波动的控制
  7. 将上一步lerp的结果分理出a通道,代替第三步和遮罩的单个通道相乘的主纹理a通道,实现溶解对透明度的控制

游动金鱼的顶点动画:

  1. 输入物体空间的顶点位置,将x分离出来,再和yz结合在一起作为lerp的B输入,物体空间的原生顶点位置作为A输入,定义WobbleAmount变量作为T输入,输出作为输出的顶点位置输入,实现波动程度的控制
  2. 定义WobbleSpeed变量和时间相乘,定义WobbleFrequency变量和从世界空间下的顶点位置分离出来的y通道相乘,将二者相加进行sin操作,实现波动随时间和位置变化
  3. 定义WobbleDistance变量和sin的结果相乘,结果和第一步分离出来的X通道相加,造成顶点位置的扰动
  4. 对其他表面属性进行补充