本文写于2017-6-2,原创,转载请注明。

以下为正文

………………………………………………………………………………………………………………………………

半年前看的一篇讲溶解特效的文章,然而只讲思路,没有源文件,最近挺流行这种特效的,决定尝试一下。

最后结合网络上一些不成熟的例子和文章的思路,写了一个表面着色器Shader,效果挺不错的,达到了要求,这里记录一下。
先上效果图:


面板可输入各类数值,注意给一个噪声贴图(这里是用Photoshop分层云彩滤镜生成):

以下是Shader源码:

Shader "Custom/MyDissolveSurface" {Properties {_Color ("颜色", Color) = (1,1,1,1)_MainTex ("主贴图 (RGB)", 2D) = "white" {}_Glossiness ("平滑度", Range(0,1)) = 0.5_Metallic ("金属性", Range(0,1)) = 0.0_NoiseTex ("噪声贴图 (R)",2D) = "white"{}  _EdgeWidth("边缘宽度",Range(0,0.5)) = 0.1  _EdgeColor("边缘颜色",Color) =  (1,1,1,1)  _EdgeThresholdValue ("硬边缘阈值(0为不使用)",Range(0,1)) = 0.5  _DissolvePercentage ("溶解百分比",Range(0,1)) = 0  }SubShader {Tags { "RenderType"="Opaque" }LOD 200CGPROGRAM// Physically based Standard lighting model, and enable shadows on all light types//原编译指令//#pragma surface surf Standard fullforwardshadows//增加addshadow以获得正确的阴影#pragma surface surf Standard fullforwardshadows addshadow// Use shader model 3.0 target, to get nicer looking lighting#pragma target 3.0sampler2D _MainTex;sampler2D _NoiseTex;  float _EdgeWidth;  float4 _EdgeColor;  float _EdgeThresholdValue;  float _DissolvePercentage;struct Input {float2 uv_MainTex;float3 worldPos;};half _Glossiness;half _Metallic;fixed4 _Color;void surf (Input IN, inout SurfaceOutputStandard o) {// Albedo comes from a texture tinted by colorfixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;o.Albedo = c.rgb;// Metallic and smoothness come from slider variableso.Metallic = _Metallic;o.Smoothness = _Glossiness;o.Alpha = c.a;float DissolveFactor = saturate(_DissolvePercentage);  //使用固定坐标// float noiseValue = tex2D(_NoiseTex,IN.uv_MainTex).r;   //使用世界坐标float noiseValue = tex2D(_NoiseTex,IN.worldPos.rg).r;//如果该值对应噪声图的值更大,则抛弃if(noiseValue <= DissolveFactor)  {  discard;  }   float4 texColor = tex2D(_MainTex,IN.uv_MainTex) * _Color;  float EdgeFactor = saturate((noiseValue - DissolveFactor)/(_EdgeWidth*DissolveFactor));  float4 BlendColor = texColor * _EdgeColor;  if(_EdgeThresholdValue>0){//不使用渐变(硬边缘)float HardEdgeFactor=EdgeFactor;if(HardEdgeFactor>_EdgeThresholdValue){HardEdgeFactor=1;o.Emission =0;  }else{ HardEdgeFactor=0;o.Emission =_EdgeColor; }o.Albedo = lerp(texColor,BlendColor,1-EdgeFactor);  }else{o.Emission =0; //使用渐变(软边缘)if(_EdgeThresholdValue>=1){o.Albedo = BlendColor; o.Alpha=0;}else{o.Albedo = lerp(texColor,BlendColor,1 - EdgeFactor);  }}}ENDCG}FallBack "Diffuse"
}

参考文章:
 《Trifox》中的遮挡处理和溶解着色器技术(上)
http://gad.qq.com/article/detail/7190982
《Trifox》中的遮挡处理和溶解着色器技术(下)
http://gad.qq.com/article/detail/7190975
 Shader溶解特效
http://blog.csdn.net/xiaoge132/article/details/51657246

Unity Shader特效:模型溶解、燃烧相关推荐

  1. Unity Shader特效:人物模型动态流动光特效

    本文写于2017-6-6,转载请注明 以下为正文 ---------------------------------------------------------- 先上效果图: Shader界面图 ...

  2. Unity Shader Lab 模型切线和法线

    DCC和unreal中的法线与切线 (maya) 绿:法线, 红:切线, 蓝:副切线(ue4) uv channel 0 法线由DCC软件确定,一般使用两种:(该点为三根线的端点) 三根法线合一,为相 ...

  3. Unity shader 角色消失 溶解 隐身 效果

    先上两张效果图 实现原理 一句话总结: 空间中有一个隐形的面,判断模型上和面的相对位置,根据需求隐藏上方或者下方的点. 原理就这么简单,具体怎么实现呢,首先确定数学几何中平面的性质:原点到到面上任意一 ...

  4. 【猫猫的Unity Shader之旅】之初识屏幕特效

    Shader除了可以处理模型的显示效果外,还有一个腻害的功能就是对要渲染的画面进行整体的处理,也就是屏幕特效.常见的比如<鬼泣4>里的动态模糊效果,景深效果,还有一些全局的颜色矫正,比如可 ...

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

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

  6. Unity Shader人物发光特效

    Unity Shader人物发光特效 写在前面 效果 实现方法 项目地址 写在后面 写在前面 当人物被击中或则有任务引导提升时,人物身上将会有发光特效,这里我自己实现一下. 效果 实现方法 核心思想就 ...

  7. 【Unity Shader编程】之十五 屏幕高斯模糊(Gaussian Blur)后期特效的实现

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/51871531 作者:毛星云(浅 ...

  8. Unity 屏幕特效 之 简单地使用 Shader 获取深度,实现景深效果

    Unity 屏幕特效 之 简单地使用 Shader 获取深度,实现景深效果 目录

  9. Unity shader 使用 半兰伯特 (Half-Lambert)漫反射会使得模型在没有直射光的情况下漆黑一片

    问题: Unity shader 使用 半兰伯特 (Half-Lambert)漫反射会使得模型在没有直射光的情况下漆黑一片,原因不得而知. 使用半兰伯特漫反射代码如下: *************** ...

最新文章

  1. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)
  2. java的关键字和保留字_「Java」详解常见的53个关键字
  3. plt.xlabel 'str' object is not callable
  4. 安卓电视版linux,MythTV 30.0 发布,前端支持选择Android电视设备
  5. 喜讯丨神策数据四大客户案例斩获大数据“星河”案例
  6. [原]windbg调试系列——崩溃在ComFriendlyWaitMtaThreadProc
  7. python作业题目用户输入行数、输出倒的等腰三角形_智慧职教云课堂APPPython程序设计(常州工业职业技术学院)作业期末考试答案...
  8. 线性表----链式表
  9. 使用ConcurrentLinkedQueue惨痛的教训
  10. php异步发送邮件,php通过fsockopen异步发送邮件
  11. mfc单文档中如何将view的基类由CView转为CScrollview
  12. UVA10178 Count the Faces.【并查集】
  13. 实验一 分治与递归—用分治法实现元素选择 java算法
  14. Javascript的块级作用域
  15. VMware12虚拟机中安装win7(安装好的解压版Win7_64-cl1.vmdk)
  16. Qt调试模式提示 Temporarily disabling breakpoints for unloaded shared library
  17. Trained Ternary Quantization
  18. OneZero第一次会议(非正式)
  19. 用编程Python赚钱的5个方法
  20. Vue:v-charts图表设置指标别名

热门文章

  1. 鸿蒙系统手机开机,华为6月2日正式发布鸿蒙手机:鸿蒙系统开机界面放出!
  2. 毕业设计 Stm32智能感应行李箱 - 单片机 物联网
  3. 360影视改版项目总结
  4. 知乎转载——激活windows 10系统
  5. System Center Data Protection Manager (DPM)
  6. ad域文件服务器迁移到samba,将AD域漫游用户配置文件放在samba服务器中
  7. 演讲:文档什么鬼分享会 | 技术传播
  8. nginx配置动静分离
  9. 严格模式 use strict
  10. ubuntu16.04 ssh启用root连接