Unity shader實現(xiàn)消融效果
更新時間:2019年02月28日 11:02:34 作者:貪玩的孩紙時代
這篇文章主要為大家詳細介紹了Unity shader實現(xiàn)消融效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Unity shader實現(xiàn)消融效果的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:
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 } } }
使用方法:建一個材質(zhì)球,選擇此shader,然后選擇一個噪聲圖(即:Noise),最后修改Threshold和EdgeLength參數(shù)即可看到效果。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解C# 匿名對象(匿名類型)、var、動態(tài)類型 dynamic
隨著C#的發(fā)展,該語言內(nèi)容不斷豐富,開發(fā)變得更加方便快捷,C# 的鋒利盡顯無疑。下面通過本文給大家分享C# 匿名對象(匿名類型)、var、動態(tài)類型 dynamic,需要的的朋友參考下吧2017-09-09C#調(diào)用WebService實例與開發(fā)教程(推薦)
下面小編就為大家分享一篇C#調(diào)用WebService實例與開發(fā)教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨想過來看看吧2017-12-12C#值類型、引用類型中的Equals和==的區(qū)別淺析
這篇文章主要介紹了C#值類型、引用類型中的Equals和==的區(qū)別淺析,本文分別對C#值類型和引用類型中的Equals和==做了講解和給出了實例,需要的朋友可以參考下2015-01-01