成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

UnityShader3實現(xiàn)波浪效果的方法

這篇文章主要講解了UnityShader3實現(xiàn)波浪效果的方法,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

為沁縣等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及沁縣網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、沁縣網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

效果圖:

UnityShader3實現(xiàn)波浪效果的方法

1.首先,實現(xiàn)格子背景圖

Shader "Custom/Curve"
{
 Properties
 {
 _BackgroundColor ("BackgroundColor", Color) = (1, 1, 1, 1)
 _BackgroundColor2 ("BackgroundColor2", Color) = (0, 0, 0, 1)
 _Space ("Space", Range(0, 1)) = 0.2
 _XOffset ("XOffset", Range(-1, 1)) = 0.15
 _YOffset ("YOffset", Range(-1, 1)) = 0.05
 }
 SubShader
 {
 Pass
 {
 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 uv : TEXCOORD0;
 };
 
 //格子背景
 fixed4 _BackgroundColor;
 fixed4 _BackgroundColor2;
 fixed _Space;
 fixed _XOffset;
 fixed _YOffset;
 
 v2f vert (appdata v)
 {
 v2f o;
 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
 o.uv = v.uv;
 
 return o;
 }
 
 fixed4 frag (v2f i) : SV_Target
 {
 //fmod(x, y):x/y的余數(shù),和x有同樣的符號 
 //step(a, x):如果x<a,返回0;如果x>=a,返回1
 
 //得到一個小于_Space的余數(shù),即a的范圍為[0, _Space)
 fixed a = fmod(i.uv.x + _XOffset, _Space);
 //有1/2概率返回0,有1/2概率返回1,從而形成間隔效果
 a = step(0.5 * _Space, a);
 
 fixed b = fmod(i.uv.y + _YOffset, _Space);
 b = step(0.5 * _Space, b);
 
 return _BackgroundColor * a * b + _BackgroundColor2 * (1 - a * b);
 }
 ENDCG
 }
 }
}

UnityShader3實現(xiàn)波浪效果的方法

2.在中間添加一條直線

Shader "Custom/Curve"
{
 Properties
 {
 _BackgroundColor ("BackgroundColor", Color) = (1, 1, 1, 1)
 _BackgroundColor2 ("BackgroundColor2", Color) = (0, 0, 0, 1)
 _Space ("Space", Range(0, 1)) = 0.2
 _XOffset ("XOffset", Range(-1, 1)) = 0.15
 _YOffset ("YOffset", Range(-1, 1)) = 0.05
 }
 SubShader
 {
 Pass
 {
 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 uv : TEXCOORD0;
 };
 
 //格子背景
 fixed4 _BackgroundColor;
 fixed4 _BackgroundColor2;
 fixed _Space;
 fixed _XOffset;
 fixed _YOffset;
 
 v2f vert (appdata v)
 {
 v2f o;
 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
 o.uv = v.uv;
 
 return o;
 }
 
 fixed4 frag (v2f i) : SV_Target
 {
 //fmod(x, y):x/y的余數(shù),和x有同樣的符號 
 //step(a, x):如果x<a,返回0;如果x>=a,返回1
 
 //得到一個小于_Space的余數(shù),即a的范圍為[0, _Space)
 fixed a = fmod(i.uv.x + _XOffset, _Space);
 //有1/2概率返回0,有1/2概率返回1,從而形成間隔效果
 a = step(0.5 * _Space, a);
 
 fixed b = fmod(i.uv.y + _YOffset, _Space);
 b = step(0.5 * _Space, b);
 
 fixed4 bgCol = _BackgroundColor * a * b + _BackgroundColor2 * (1 - a * b);
 
 
 //范圍(1, 51),乘上100是擴大差距(中間最亮其他兩邊基本不亮),加上1是防止0作為除數(shù),同時確保最中間最亮
 float v = abs(i.uv.y - 0.5) * 100 + 1;
 v = 1 / v;
 fixed4 lineCol = fixed4(v, v, v, 1);
 
 return bgCol + lineCol;
 }
 ENDCG
 }
 }
}

UnityShader3實現(xiàn)波浪效果的方法

3.直線變曲線

Shader "Custom/Curve"
{
 Properties
 {
 //調(diào)整背景
 _BackgroundColor ("BackgroundColor", Color) = (1, 1, 1, 1)
 _BackgroundColor2 ("BackgroundColor2", Color) = (0, 0, 0, 1)
 _Space ("Space", Range(0, 1)) = 0.2
 _XOffset ("XOffset", Range(-1, 1)) = 0.15
 _YOffset ("YOffset", Range(-1, 1)) = 0.05
 
 //調(diào)整曲線的波動
 _Frequency ("Frequency", Range(0, 100)) = 10//頻率
 _Amplitude ("Amplitude", Range(0, 1)) = 0.1//振幅
 _Speed ("Speed", Range(0, 100)) = 10//速度
 }
 SubShader
 {
 Pass
 {
 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 uv : TEXCOORD0;
 };
 
 //格子背景
 fixed4 _BackgroundColor;
 fixed4 _BackgroundColor2;
 fixed _Space;
 fixed _XOffset;
 fixed _YOffset;
 
 half _Frequency;
 half _Amplitude;
 half _Speed;
 
 v2f vert (appdata v)
 {
 v2f o;
 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
 o.uv = v.uv;
 
 return o;
 }
 
 fixed4 frag (v2f i) : SV_Target
 {
 //fmod(x, y):x/y的余數(shù),和x有同樣的符號 
 //step(a, x):如果x<a,返回0;如果x>=a,返回1
 
 //得到一個小于_Space的余數(shù),即a的范圍為[0, _Space)
 fixed a = fmod(i.uv.x + _XOffset, _Space);
 //有1/2概率返回0,有1/2概率返回1,從而形成間隔效果
 a = step(0.5 * _Space, a);
 
 fixed b = fmod(i.uv.y + _YOffset, _Space);
 b = step(0.5 * _Space, b);
 
 fixed4 bgCol = _BackgroundColor * a * b + _BackgroundColor2 * (1 - a * b);
 
 
 //范圍(1, 51),乘上100是擴大差距(中間最亮其他兩邊基本不亮),加上1是防止0作為除數(shù),同時確保最中間最亮
 //float y = i.uv.y + sin(_Time.y);掃描線效果
 float y = i.uv.y + sin(i.uv.x * _Frequency + _Time.y * _Speed) * _Amplitude;//可以看成一條y的關(guān)于x的方程式
 float v = abs(y - 0.5) * 100 + 1;
 v = 1 / v;
 fixed4 lineCol = fixed4(v, v, v, 1);
 
 return bgCol + lineCol;
 }
 ENDCG
 }
 }
}

UnityShader3實現(xiàn)波浪效果的方法

注釋掉的是掃描線效果:

UnityShader3實現(xiàn)波浪效果的方法

4.多曲線。其實就是for循環(huán),然后在頻率和振幅上加些變量,即可形成多條不同的曲線。

Shader "Custom/Curve"
{
 Properties
 {
 //調(diào)整背景
 _BackgroundColor ("BackgroundColor", Color) = (1, 1, 1, 1)
 _BackgroundColor2 ("BackgroundColor2", Color) = (0, 0, 0, 1)
 _Space ("Space", Range(0, 1)) = 0.2
 _XOffset ("XOffset", Range(-1, 1)) = 0.15
 _YOffset ("YOffset", Range(-1, 1)) = 0.05
 
 //調(diào)整曲線的波動
 _Frequency ("Frequency", Range(0, 100)) = 10//頻率
 _Amplitude ("Amplitude", Range(0, 1)) = 0.1//振幅
 _Speed ("Speed", Range(0, 100)) = 10//速度
 }
 SubShader
 {
 Pass
 {
 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 uv : TEXCOORD0;
 };
 
 //格子背景
 fixed4 _BackgroundColor;
 fixed4 _BackgroundColor2;
 fixed _Space;
 fixed _XOffset;
 fixed _YOffset;
 
 half _Frequency;
 half _Amplitude;
 half _Speed;
 
 v2f vert (appdata v)
 {
 v2f o;
 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
 o.uv = v.uv;
 
 return o;
 }
 
 fixed4 frag (v2f i) : SV_Target
 {
 //fmod(x, y):x/y的余數(shù),和x有同樣的符號 
 //step(a, x):如果x<a,返回0;如果x>=a,返回1
 
 //得到一個小于_Space的余數(shù),即a的范圍為[0, _Space)
 fixed a = fmod(i.uv.x + _XOffset, _Space);
 //有1/2概率返回0,有1/2概率返回1,從而形成間隔效果
 a = step(0.5 * _Space, a);
 
 fixed b = fmod(i.uv.y + _YOffset, _Space);
 b = step(0.5 * _Space, b);
 
 fixed4 bgCol = _BackgroundColor * a * b + _BackgroundColor2 * (1 - a * b);
 
 
 //范圍(1, 51),乘上100是擴大差距(中間最亮其他兩邊基本不亮),加上1是防止0作為除數(shù),同時確保最中間最亮
 //float y = i.uv.y + sin(_Time.y);掃描線效果
 
 fixed4 lineCol;
 
 for(int count = 0;count < 3;count++)
 {
 float y = i.uv.y + sin(i.uv.x * _Frequency * count * 0.1 + _Time.y * _Speed) * (_Amplitude + count * 0.1);//可以看成一條y的關(guān)于x的方程式
 y = saturate(y);//重新映射到(0, 1)范圍
 float v = abs(y - 0.5) * 100 + 1;
 v = 1 / v;
 lineCol += fixed4(v, v, v, 1);//注意是"+"操作,對顏色進行疊加
 }
 
 return bgCol + lineCol;
 }
 ENDCG
 }
 }
}

看完上述內(nèi)容,是不是對UnityShader3實現(xiàn)波浪效果的方法有進一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站題目:UnityShader3實現(xiàn)波浪效果的方法
標(biāo)題網(wǎng)址:http://jinyejixie.com/article10/pgeodo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機響應(yīng)式網(wǎng)站、企業(yè)建站建站公司、云服務(wù)器關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
白银市| 石门县| 新乡县| 东山县| 雅江县| 栾城县| 常州市| 平塘县| 桐乡市| 浦城县| 余干县| 武汉市| 嵊州市| 罗定市| 福清市| 平顺县| 营山县| 梅河口市| 布尔津县| 宝清县| 益阳市| 板桥市| 江山市| 临沂市| 渝中区| 高密市| 衡阳县| 大厂| 东方市| 定边县| 中西区| 海宁市| 镇坪县| 乐昌市| 洱源县| 田东县| 竹溪县| 肥东县| 秦皇岛市| 彩票| 城固县|