角色死亡消融,尸体消融,地图烧毁特效
不带阴影
参考 《unity shader 入门精要》

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Book/15.Dissolve" {Properties {_BurnAmount("Burn Amount",Range(0.0,1.0)) = 0.0_LineWidth("Burn Line Width",Range(0.0,0.2))=0.1_MainTex ("Albedo (RGB)", 2D) = "white" {}_BumpMap("Bump Map",2D)= "white" {}_BurnFirstColor("Burn First Color",Color)= (1,0,0,1)_BurnSecondColor("Burn Second Color",Color)= (1,0,0,1)_BurnMap("Burn Map",2D)= "white" {}}SubShader {Tags {"RenderType"="Opaque" "Queue"="Geometry"}Pass {Tags {"LightMode"="ForwardBase" }Cull OffCGPROGRAM#include "UnityCG.cginc"#include "Lighting.cginc"#include "AutoLight.cginc"#pragma multi_compile_fwdbase#pragma vertex vert#pragma fragment fragsampler2D _MainTex;sampler2D _BurnMap;sampler2D _BumpMap;float4 _BurnFirstColor;float4 _BurnSecondColor;float4 _MainTex_ST;float4 _BumpMap_ST;float4 _BurnMap_ST;float _BurnAmount,_LineWidth;struct a2v {float4 vertex : POSITION;float3 normal : NORMAL;float4 tangent : TANGENT;float4 texcoord : TEXCOORD0;};struct v2f {float4 pos : SV_POSITION;float2 uvMainTex : TEXCOORD0;float2 uvBumpMap : TEXCOORD1;float2 uvBurnMap : TEXCOORD2;float3 lightDir  : TEXCOORD3;float3 worldPos  : TEXCOORD4;SHADOW_COORDS(5)};v2f vert( a2v v ) {v2f o;o.pos = UnityObjectToClipPos(v.vertex);//o.uvMainTex = v.texcoord*_MainTex_ST.xy + _MainTex_ST.zw;o.uvMainTex = TRANSFORM_TEX( v.texcoord,_MainTex);o.uvBumpMap = TRANSFORM_TEX( v.texcoord,_BumpMap);o.uvBurnMap = TRANSFORM_TEX( v.texcoord,_BurnMap);//副切线float3 binormal = cross(v.normal,v.tangent.xyz)*v.tangent.w;//从模型空间到切线空间的转换矩阵float3x3 rotation = float3x3(v.tangent.xyz,binormal,v.normal);//将光源位置减去顶点位置,这样就得到光照方向了 — 但是我们应该首先将顶点位置乘上光源的w分量,如果是平行光,w分量为0,得到的结果为0,说明顶点位置全变为(0.0, 0.0, 0.0)了,这样光照方向就是源   本的位置   (return objSpaceLightPos.xyz)。对于点光源,w为1,所以乘上顶点位置后,顶点位置无变化,这样计算的光照方向就是(return objSpaceLightPos.xyz – v.xyz)。float3 lightDir = mul(unity_WorldToObject,_WorldSpaceLightPos0).xyz - v.vertex*_WorldSpaceLightPos0.w;o.lightDir = mul(rotation,lightDir);o.worldPos = mul(unity_ObjectToWorld,v.vertex).xyz;//o.worldNormal = normalize( mul(v.normal,(float3x3)unity_WorldToObject));TRANSFER_SHADOW(o);return o;}/*将上面的函数拷贝进来*/half4 frag(v2f i) : SV_Target {fixed3 burn = tex2D(_BurnMap,i.uvBurnMap).rgb;clip(burn.r - _BurnAmount);float3 tangentLightDir = normalize(i.lightDir);//uppack  normalfixed3 tangentNormal;fixed4 packedNormal  = tex2D(_BumpMap,i.uvBumpMap);#if defined(UNITY_NO_DXT5nm)tangentNormal.xyz = packedNormal.xyz*2 -1;#else// --rgba  -- xyzw //DXTnm 格式中a通道(即w分量)对应发现x分量,g通道(即y分量)对应发现y分量,//tangentNormal.xy = packedNormal.ag*2 -1;tangentNormal.xy = packedNormal.wy*2 -1;//tangentNormal=tangentNormal* _BumpScale;tangentNormal.z = sqrt(1.0-max(0,dot(tangentNormal.xy,tangentNormal.xy)));#endiffixed3 albedo = tex2D(_MainTex,i.uvMainTex).rgb;fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz*albedo;fixed3 diffuse = _LightColor0.rgb*albedo*max(0,dot(tangentNormal,tangentLightDir));fixed t  = 1 - smoothstep(0.0,_LineWidth,burn.r - _BurnAmount);fixed3 burnColor = lerp(_BurnFirstColor,_BurnSecondColor,t);burnColor = pow(burnColor,5);UNITY_LIGHT_ATTENUATION(atten,i,i.worldPos);fixed3 finalColor = lerp(ambient+diffuse*atten,burnColor, t* step(0.0001,_BurnAmount));return fixed4(finalColor,1);}ENDCG}}FallBack "Diffuse"
}

效果图:

Shader消融特效相关推荐

  1. Laya Shader消融特效

    说明&使用 项目仅用于测试交流, 如有侵权, 请联系我删除. 引擎版本: LayaAir2.10.0 Github地址: LayaEffect clone LayaEffect项目 → 打开 ...

  2. Unity shader护盾特效

    身为小白的我看到某大神用 amplify shader editor 插件做了护盾特效,很酷. 蓝色是大神做的,红色那个是我的(感觉和大神的低了几个档次,哈哈) 大神的视频链接: https://ww ...

  3. 【Unity Shader 消融效果_案例分享】

    1.实现逻辑 消融效果主要是利用了Shader中的clip()函数,也就是透明测试功能,在ASE中叫"Opacity Mask". 消融效果是基于一张"Noise&quo ...

  4. Shader消散特效(如回城)

    在很多游戏中能够看到消散,燃烧等特效. 如: 所以今天写简单的消散特效的shader代码!!! (学习的庄懂的视频学到的,强烈新手学习庄懂视频) 第一步思考:我们能看到什么! 我们能够看到网格的消散, ...

  5. Shader——消融效果

              一:使用两种颜色混合消融 Shader "Custom/Dissolve" {Properties{_MainTex ("Texture", ...

  6. 从零开始的unity2017笔记【shader与特效】

    一.创建材质 Assets面板右键--creat--material创建一个新的材质球. ps:Rendering Mode(渲染模式)[opaque(不透明模式),cutout(镂空模式),fade ...

  7. Unity Shader屏幕特效基础OnRenderImage()函数

    前言:  unity shader中的pass是会顺序执行的,但是由于在图像处理中我们常常需要使用一个pass的处理结果作为另一个pass的输入,这个时候就需要用到OnRenderImage()函数了 ...

  8. Unity Shader 闪光特效

    Unity Shader源代码如下: Shader "Custom/Flash" { Properties { _MainTex ("Texture", 2D) ...

  9. 【unity shader】unity游戏特效-简简单单的能量护罩

    本文参考文章: [1]Unity shader护盾特效,作者:qq_16982323 [2]UnityShader--屏幕空间的能量罩(模拟守望先锋温斯顿的能量罩),作者:Porco_ 玩过崩坏3没? ...

最新文章

  1. 剖析boot.img的制作流程
  2. Vue使用axios提交表单数据
  3. 植树节html5游戏,植树节活动
  4. [J2ME]RSSOwlMidlet(RSS无线阅读器)设计说明
  5. thinkpad卡在logo界面_四大系列 一个品牌,超好用的商务伴侣Thinkpad
  6. 腾讯python面试题_面试题 | 腾讯数据分析面试题分享
  7. 算术运算导致溢出。_【S7200指令教程】数据运算指令ADD SUB MUL DIV
  8. android开发需要root吗,已经2017年了,Android手机还需要root吗?
  9. xe5 android sample 中的 SimpleList 是怎样绑定的
  10. Lua学习笔记3. 函数可变参数和运算符、转义字符串、数组
  11. 标准模块 os.stat
  12. html画布arc,绘制弧线将线性渐变html5画布(Draw arc will linear gradient html5 canvas)
  13. Chrome辅助工具-JSONView
  14. nas存储服务器磁盘阵列失效数据恢复过程
  15. 鸿蒙处理器985相当于内核多少,麒麟985处理器相当于骁龙多少_麒麟985处理器性能测评...
  16. 概率论复习笔记【1基本概念】
  17. 图形学常见概念与算法-纹理过滤
  18. Django企业开发实战--by胡阳,学习记录1015
  19. 图的存储结构——邻接表法
  20. 错误使用 load ASCII 文件的行号 1 中的文本未知“MATLAB“。

热门文章

  1. 工信部—高级软件开发工程师认证
  2. ubuntu一般命令
  3. python提取首字母的函数_Oracle提取中文字符串拼音首字母函数
  4. python怎么放音乐_如何用Python创建音乐可视化器
  5. 何慕雄:袁崇焕与岳飞哪个更强
  6. 机器学习特征稳定性评估-分布式scala实现
  7. U盘自动清空数据怎么回事?U盘自动清空怎么恢复数据
  8. 4月20日----4月24日二年级课程表
  9. 如何与爱发脾气的人相处
  10. 智慧城市将开创城市新形态