亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ShaderLab學習小結(二)通過Shader變換物體形狀

發布時間:2020-03-02 07:10:51 來源:網絡 閱讀:2645 作者:lreach 欄目:游戲開發

運行環境:
Win10 x64
Unity 5.5.4

目的:在場景中建立plane平板,通過shader使平板在y坐標上有突起,且隨y值定義不同的顏色
先看下效果:
ShaderLab學習小結(二)通過Shader變換物體形狀

Shader代碼如下:

Shader "Custom/ChangeShapeY" {
    Properties{                 //定義變量,這些可在物體Inspector面板中進行調整
        _R("R", range(0,5)) = 2 //半徑
        _Center("Center",range(-5,5)) = 0   //中心點
        _Scale("Scale", range(1,5)) = 1     //縮放尺度
    }
    SubShader {
        pass {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "unitycg.cginc"
            float _R;           //上面在Properties里定義的變量必須在這里聲明,底下的程序才能用
            float _Center;
            float _Scale;
            struct v2f {
                float4 pos:POSITION;
                float4 vpos:TEXCOORD0;  //記錄變化后的物體坐標(物體坐標系)
            };
            v2f vert(appdata_base v)
            {
                v2f o;
                o.vpos = v.vertex;
                //計算物體在xz平面上點與所定義的中心點 float2(_Center,_Center) 的距離
                float dist = distance(o.vpos.xz, float2(_Center,_Center));
                //用定義的半徑減去上面求得的距離
                float factor = _R - dist;
                factor = factor < 0 ? 0 : factor;//判斷如果小于0則等于0
                o.vpos.y = factor*_Scale;        //以這個值作為物體的y坐標
                o.pos = mul(UNITY_MATRIX_MVP, o.vpos);//變換至投影空間
                return o;
            }
            fixed4 frag(v2f IN):COLOR
            {
                //以物體y坐標來決定物體顏色的三個分量
                float y = saturate(IN.vpos.y);  //saturate取0到1之間的數
                return fixed4(y, y, y, 1);
            }
            ENDCG
        }
    }
}

如圖,定義了一個xz平面上的中心點float2(_Center,_Center),在中心點y坐標最高,距中心點為_R的地方y坐標降至0。且y為0時,顏色是黑,y從0到1之間為從黑到白的漸變,高于1則始終為純白。
改變y坐標還是在物體坐標系下改變,改好后依然用UNITY_MATRIX_MVP變換到投影坐標系。
最終效果是形成如圖中的這樣一個圓錐體。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鲁甸县| 恭城| 建昌县| 盈江县| 灵武市| 铁岭县| 利辛县| 湄潭县| 临夏市| 岳阳市| 会东县| 东阿县| 阜阳市| 溧水县| 伊通| 韶关市| 卫辉市| 教育| 新田县| 耿马| 五大连池市| 南部县| 兴城市| 剑河县| 孝义市| 杭州市| 信阳市| 察隅县| 呼图壁县| 鹿泉市| 阿城市| 邹城市| 巴楚县| 东丽区| 景泰县| 泾川县| 雷山县| 金乡县| 瑞金市| 吐鲁番市| 甘谷县|