Unity shader实现消融效果

 更新时间:2019年02月28日 11:02:34   作者:贪玩的孩纸时代  
这篇文章主要为大家详细介绍了Unity shader实现消融效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Unity shader实现消融效果的具体代码,供大家参考,具体内容如下

效果图:

shader代码:

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

Shader "Custom/EdgeColo" {
Properties
 {
 _MainTex ("Texture", 2D) = "white" {}
 _NoiseTex("Noise", 2D) = "white" {}
 _Threshold("Threshold", Range(0.0, 1.0)) = 0.5
 _EdgeLength("Edge Length", Range(0.0, 0.2)) = 0.1
 _EdgeColor("Edge Color", Color) = (1,1,1,1)
 }
 SubShader
 {
 Tags { "Queue"="Geometry" "RenderType"="Opaque" }

 Pass
 {
 Cull Off //要渲染背面保证效果正确

 CGPROGRAM
 #pragma vertex vert
 #pragma fragment frag
 
 #include "UnityCG.cginc"

 struct appdata
 {
 float4 vertex : POSITION;
 float2 uv : TEXCOORD0;
 };

 struct v2f
 {
 float4 vertex : SV_POSITION;
 float2 uvMainTex : TEXCOORD0;
 float2 uvNoiseTex : TEXCOORD1;
 };

 sampler2D _MainTex;
 float4 _MainTex_ST;
 sampler2D _NoiseTex;
 float4 _NoiseTex_ST;
 float _Threshold;
 float _EdgeLength;
 fixed4 _EdgeColor;
 
 v2f vert (appdata v)
 {
 v2f o;
 o.vertex = UnityObjectToClipPos(v.vertex);
 o.uvMainTex = TRANSFORM_TEX(v.uv, _MainTex);
 o.uvNoiseTex = TRANSFORM_TEX(v.uv, _NoiseTex);
 return o;
 }
 
 fixed4 frag (v2f i) : SV_Target
 {
 //镂空
 fixed cutout = tex2D(_NoiseTex, i.uvNoiseTex).r;
 clip(cutout - _Threshold);

 //边缘颜色
 if(cutout - _Threshold < _EdgeLength)
 return _EdgeColor;

 fixed4 col = tex2D(_MainTex, i.uvMainTex);
 return col;
 }
 ENDCG
 }
}
}

使用方法:建一个材质球,选择此shader,然后选择一个噪声图(即:Noise),最后修改Threshold和EdgeLength参数即可看到效果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • c#执行excel宏模版的方法

    c#执行excel宏模版的方法

    这篇文章主要介绍了c#执行excel宏模版的方法,导出Excel模版的代码如下,大家参考使用吧
    2014-01-01
  • c#中合并DataTable重复行的值

    c#中合并DataTable重复行的值

    c#中合并DataTable重复行的值,需要的朋友可以参考一下
    2013-05-05
  • Unity3D使用右键菜单打开工程

    Unity3D使用右键菜单打开工程

    这篇文章主要为大家详细介绍了Unity3D使用右键菜单打开工程的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • C# Datatable的几种用法小结

    C# Datatable的几种用法小结

    这篇文章主要介绍了C# Datatable的几种用法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C# 预处理器指令的用法

    C# 预处理器指令的用法

    本文主要介绍了C# 预处理器指令的用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • C# 单元测试全解析

    C# 单元测试全解析

    这篇文章主要介绍了C# 单元测试的相关资料,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-04-04
  • C# LINQ to XML应用介绍

    C# LINQ to XML应用介绍

    .Net又引入了LINQ,于是LINQ to XML也就应运而生,所以在.Net中,不仅可以用W3C XML DOM标准,还可以使用LINQ to XML来操作XML文档。下面就来简单介绍一下如何使用LINQ to XML
    2012-11-11
  • C#验证码识别基础方法实例分析

    C#验证码识别基础方法实例分析

    这篇文章主要介绍了C#验证码识别基础方法实例分析,较为详细的总结了C#验证码的实现思路及具体步骤,并对实现思路进行了总结归纳,具有很好的实用价值,需要的朋友可以参考下
    2014-09-09
  • C#代码设置开机启动示例

    C#代码设置开机启动示例

    本文介绍了使用C#代码设置开机启动的方法,原理就是在注册表启动项里添加一项
    2014-01-01
  • C#过滤sql特殊字符串的方法

    C#过滤sql特殊字符串的方法

    这篇文章介绍了C#过滤sql特殊字符串的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07

最新评论