91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

甘谷县| 阳信县| 勃利县| 驻马店市| 商南县| 崇阳县| 文登市| 法库县| 南华县| 乌兰察布市| 靖宇县| 尼木县| 松滋市| 南郑县| 隆德县| 班戈县| 南靖县| 鲁山县| 张家口市| 普兰店市| 泾源县| 巴马| 榆社县| 宝兴县| 南木林县| 温泉县| 固镇县| 景谷| 临沭县| 晋州市| 麦盖提县| 井冈山市| SHOW| 永兴县| 辽宁省| 南川市| 招远市| 霍城县| 临漳县| 上高县| 河池市|