Unity3D使用Shader實(shí)現(xiàn)腐蝕消失
本片shader實(shí)現(xiàn)的效果是模型腐蝕消失,且腐蝕的邊緣大小可以調(diào)、顏色可調(diào)。效果圖如下:

設(shè)置面板如下:

使用時(shí)需要給ClipMask參數(shù)給一張?jiān)朦c(diǎn)圖,設(shè)置合適的cliplinesize和cliplinecolor,然后調(diào)整clipalpha就可以了。
原理是通過(guò)獲取噪點(diǎn)圖上對(duì)應(yīng)的顏色,轉(zhuǎn)換成灰度,然后用灰度與clipalpha對(duì)比,如果大于則被剪裁掉。
shader實(shí)現(xiàn)如下:
Shader "XM/CorrosionEffect" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
_ClipMaskTex ("Clip Mask", 2D) = "white" {}
_ClipGray ("Clip Alpha", Range(0.0,1.0)) = 0.0
_ClipLineSize ("Clip Line Size", Range(0,1)) = 0.0
_ClipLineColor("Clip Line Color", Color) = (1,1,1,1)
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard fullforwardshadows
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2D _MainTex;
sampler2D _ClipMaskTex;
struct Input {
float2 uv_MainTex;
};
half _Glossiness;
half _Metallic;
fixed4 _Color;
fixed _ClipGray;
fixed _ClipLineSize;
fixed4 _ClipLineColor;
void surf (Input IN, inout SurfaceOutputStandard o) {
fixed4 m = tex2D (_ClipMaskTex, IN.uv_MainTex);
fixed gray = Luminance(m.rgb);
if(gray >= _ClipGray)
{
clip(-1);
}
fixed4 c;
if(gray >= _ClipGray - _ClipLineSize)
{
c = _ClipLineColor;
}
else
{
// Albedo comes from a texture tinted by color
c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
}
o.Albedo = c.rgb;
// Metallic and smoothness come from slider variables
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
分享一個(gè)C#編寫簡(jiǎn)單的聊天程序(詳細(xì)介紹)
這是一篇基于Socket進(jìn)行網(wǎng)絡(luò)編程的入門文章,我對(duì)于網(wǎng)絡(luò)編程的學(xué)習(xí)并不夠深入,這篇文章是對(duì)于自己知識(shí)的一個(gè)鞏固,同時(shí)希望能為初學(xué)的朋友提供一點(diǎn)參考。文章大體分為四個(gè)部分:程序的分析與設(shè)計(jì)、C#網(wǎng)絡(luò)編程基礎(chǔ)(篇外篇)、聊天程序的實(shí)現(xiàn)模式、程序?qū)崿F(xiàn)2015-12-12
詳解C#實(shí)例化對(duì)象的三種方式及性能對(duì)比
這篇文章主要介紹了C#實(shí)例化對(duì)象的三種方式及性能對(duì)比,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
基于WPF實(shí)現(xiàn)用戶頭像選擇器的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何基于WPF實(shí)現(xiàn)用戶頭像選擇器,文中的示例代碼簡(jiǎn)潔易懂,對(duì)我們學(xué)習(xí)WPF有一定幫助,感興趣的可以了解一下2022-07-07
C#中的隨機(jī)數(shù)函數(shù)Random()
這篇文章介紹了C#生成隨機(jī)數(shù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
Unity shader實(shí)現(xiàn)移動(dòng)端模擬深度水效果
這篇文章主要為大家詳細(xì)介紹了Unity shader實(shí)現(xiàn)移動(dòng)端模擬深度水效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
C#中Activator.CreateInstance()方法用法分析
這篇文章主要介紹了C#中Activator.CreateInstance()方法用法,實(shí)例分析了C#中Activator.CreateInstance()方法的功能、定義及使用技巧,需要的朋友可以參考下2015-03-03

