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

溫馨提示×

溫馨提示×

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

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

Unity Shader如何實現描邊OutLine效果

發布時間:2021-05-27 14:41:12 來源:億速云 閱讀:1080 作者:小新 欄目:編程語言

這篇文章主要介紹Unity Shader如何實現描邊OutLine效果,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Shader實現描邊流程大致為:對模型進行2遍(2個pass)繪制,第一遍(描邊pass)在vertex shader中對模型沿頂點法線方向放大,fragment shader設置輸出顏色為描邊顏色;第二遍正常繪制模型,除被放大的部分外,其余被覆蓋,這樣就有了描邊的效果。

實現代碼如下:

Shader "Custom/OutlineShader" {
 Properties {
 _MainTex ("Albedo (RGB)", 2D) = "white" {}
 _OutLineWidth("width", float) = 1.2//定義一個變量
 }
 SubShader {
 
 Pass
 {
 CGPROGRAM 
 #pragma vertex vert
 #pragma fragment frag
 #include "UnityCG.cginc"
 
 struct appdata {
 float4 vertex:POSITION;
 float2 uv:TEXCOORD0;
 };
 
 struct v2f
 {
 float2 uv :TEXCOORD0;
 float4 vertex:SV_POSITION;
 };
 
 
 float _OutLineWidth;//設置變量
 v2f vert(appdata v)
 {
 v2f o;
 //設置一下xy
 //v.vertex.xy *= 1.1;
 v.vertex.xy *= _OutLineWidth;//乘上變量
 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
 o.uv = v.uv;
 return o;
 }
 
 sampler2D _MainTex;
 
 fixed4 frag(v2f i) :SV_Target
 {
 fixed4 col = tex2D(_MainTex, i.uv);
 //return col;
 return fixed4(0, 0, 1, 1);
 }
 ENDCG
 }
 
 
 Pass
 {
 ZTest Always
 CGPROGRAM
 #pragma vertex vert
 #pragma fragment frag
 #include "UnityCG.cginc"
 
 struct appdata {
 float4 vertex:POSITION;
 float2 uv:TEXCOORD0;
 };
 
 struct v2f
 {
 float2 uv :TEXCOORD0;
 float4 vertex:SV_POSITION;
 };
 
 
 v2f vert(appdata v)
 {
 v2f o;
 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
 o.uv = v.uv;
 return o;
 }
 
 sampler2D _MainTex;
 
 fixed4 frag(v2f i) :SV_Target
 {
 fixed4 col = tex2D(_MainTex, i.uv);
 //return fixed4(0, 0, 1, 1);//返回藍色,因為再次渲染會把第一個顏色覆蓋掉
 return col;
 }
 ENDCG
 }
 } 
 FallBack "Diffuse"
}

物體被遮擋,仍然需要顯示,需要設置描邊pass的語句ZTest為Always,深度檢測一直通過,這樣描邊pass的片段不會被深度剔除。

運行效果圖:

Unity Shader如何實現描邊OutLine效果

以上是“Unity Shader如何實現描邊OutLine效果”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

方山县| 康定县| 北流市| 虞城县| 饶阳县| 尉氏县| 光山县| 新密市| 新余市| 神农架林区| 南涧| 丰镇市| 化隆| 公主岭市| 铁力市| 伊金霍洛旗| 延寿县| 天镇县| 凉山| 滦南县| 景德镇市| 延安市| 奉贤区| 铜鼓县| 洪泽县| 平阴县| 邳州市| 白山市| 元氏县| 馆陶县| 金秀| 来凤县| 恩施市| 郯城县| 阿尔山市| 宁城县| 色达县| 霞浦县| 健康| 天门市| 丹凤县|