怡春院av_国产精品久久久久久亚洲毛片_精品国产乱码一区二区三区_亚洲一区欧美日韩_亚洲黄色激情视频_国产全黄a一级毛片91_亚洲免费在线播放

【游戲開發】Township中的2D海水實現

2021-03-29
5100
0

抓幀分析

Mesh部分,是Isometric TileMap,寬高比2:1。

貼圖部分4個通道,感覺都是光照信息,但是不清楚具體含義是什么,要是有大佬了解,麻煩告知下。

R通道

G通道

B通道

A通道

實現原理大概時,用兩個正弦函數,來修改頂點的y坐標,模擬海水的波動,貼圖其實就是算了兩個方向的uv動畫混合起來,另外用投影后的坐標作為高光區域的一個計算,保證屏幕中間和上面的部分高光,模擬太陽光。具體看代碼吧:

Shader "Unlit/Sea" {
    Properties {
        _MainTex("Texture", 2D) = "white" {}
        _SeaColor("SeaColor", Color) = (0, 0.45, 0.63, 1)
    }
    SubShader {
        Tags {
            "RenderType" = "Opaque"
        }
        LOD 100

        Pass {
            CGPROGRAM#pragma vertex vert#pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata {
                float4 vertex: POSITION;
                float4 col: COLOR;
            };

            struct v2f {
                float2 uv0: TEXCOORD0;
                float2 uv1: TEXCOORD1;
                float4 vcolor: COLOR;
                float4 vertex: SV_POSITION;
                float2 v: TEXCOORD2;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float4 _SeaColor;

            v2f vert(appdata v) {
                v2f o;
                // uv是通過頂點的位置坐標計算的
                // uv0,uv1兩次不同方向的采樣做混合,跟一般的水效果實現是一樣的
                // 計算時間參數,uv0和uv1的頻率稍微有點不同
                float t = _Time.y * 0.015;
                o.uv0 = v.vertex.xy * 0.8 * v.col.b;
                o.uv0.y -= t;
                o.uv1 = v.vertex.xy * 1.0 * v.col.b;
                o.uv1.y = t;

                // 計算Mesh的偏移,模擬水的波浪
                // 考慮讓每個位置的y偏移形成波浪,所以y的偏移應該是與坐標位置有關的一個函數
                // 這函數算法啥意思,要是有大佬懂得話,麻煩告知
                float wave_m = (v.col.b * 2.0);
                float w_t0 = wave_m * o.uv0.x * 40.0 wave_m * o.uv0.y * 20.0;
                float w_t1 = wave_m * o.uv0.x * 20.0 wave_m * o.uv0.y * 10.0 - t * 143.5;
                float wa = (v.col.r - 127.0 / 255.0) * 100.0 * (1.0 / wave_m);
                float yoff = sin(w_t0) * sin(w_t1) * 0.03 * wa;
                v.vertex.y = yoff;
                o.vertex = UnityObjectToClipPos(v.vertex);

                // 計算高光的區域坐標傳到ps
                o.v.xy = o.vertex.xy;
                o.v.y -= 0.5;

                // 頂點色相關計算部分
                o.vcolor = v.col;
                o.vcolor.b = yoff * 0.004;
                o.vcolor.a *= 0.5;

                return o;
            }

            fixed4 frag(v2f i) : SV_Target {
                // 高光部分
                // 讓屏幕靠近中間和上方的部分高光強烈
                float hlight = exp( - i.v.x * i.v.x * 8.0 - i.v.y * i.v.y * 1.0) * 1.25;

                fixed4 col0 = tex2D(_MainTex, i.uv0);
                fixed4 col1 = tex2D(_MainTex, i.uv1);
                fixed4 col = col0 * col1;

                return _SeaColor col.r col.g - col.b * i.vcolor.g - (1.0 - col.a) * 0.3 hlight * col.r hlight * 0.15 i.vcolor.a - 0.5;
            }
            ENDCG
        }
    }
}

 

 

轉載聲明:本文來源于網絡,不作任何商業用途

免責聲明:本文內部分內容來自網絡,所涉繪畫作品及文字版權與著作權歸原作者,若有侵權或異議請聯系我們處理。
收藏

全部評論

您還沒登錄

暫無留言,趕緊搶占沙發
繪學霸是國內專業的CG數字藝術設計線上線下學習平臺,在繪學霸有2D繪畫、3D模型、影視后期、動畫、特效等數字藝術培訓課程,也有學習資源下載,還有行業社區交流。學習、交流,來繪學霸就對了。
繪學霸iOS端二維碼

IOS下載

繪學霸安卓端二維碼

安卓下載

繪學霸微信小程序二維碼

小程序

版權聲明
本網站所有產品設計、功能及展示形式,均已受版權或產權保護,任何公司及個人不得以任何方式復制部分或全部,違者將依法追究責任,特此聲明。
熱線電話
18026259035
咨詢時間:9:00~21:00
在線客服
聯系網站客服
客服微信:18026259035
公司地址
中國·廣州
廣州市海珠區曉港中馬路130號之19
繪學霸客戶端(權限暫無,用于CG資源與教程交流分享)
開發者:廣州王氏軟件科技有限公司 | 應用版本:Android:6.0,IOS:5.1 | App隱私政策> | 應用權限 | 更新時間:2020.1.6
主站蜘蛛池模板: 国产高清不卡一区二区三区 | 青春草视频在线免费观看 | 久久天天躁狠狠躁夜夜躁 | 亚洲高清国产品国语在线观看 | 久久综合狠狠色综合伊人 | 亚洲欧美国产日本 | 欧美精品成人a多人在线观看 | 男插女在线观看 | a毛片免费全部播放完整成 a毛片免费全部在线播放毛 | 久久久精品久久久久特色影视 | 国产视频福利在线 | 好好的日com欧美 | 国产免费久久精品 | 青青成人福利国产在线视频 | 国产制服丝袜在线 | 欧美性猛 | 欧美一区二区三区黄色 | 国产亚洲新品一区二区 | 男女午夜影院 | 国产人妖 | 国产亚洲高清在线精品不卡 | 欧美在线日韩在线 | 国产成人福利精品视频 | 久久99热成人精品国产 | 国产精品推荐天天看天天爽 | 欧美精品3atv一区二区三区 | 日本高清www无色夜在 | 亚洲成a人片在线观看中文动漫 | 久久99国产这里有精品视 | 欧美成人猛男性色生活 | 国产精品免费看久久久香蕉 | 国产精品久久久久9999赢消 | 99久久综合精品国产 | 深夜国产一区二区三区在线看 | 欧美性黄色 | 99精品热视频这里只有精品7 | 天天色天天搞 | 99热在线精品免费播放6 | 日日干日日操 | 国产一区二区三区视频在线观看 | 99热这里都是国产精品 |