xray效果常常用來顯示被牆體及其它物體遮擋的物體的輪廓,效果一般如下圖所示,如人物身上的藍色部分。
演算法原理:
使用兩個pass對人物進行繪製,其它第乙個pass正常對人物進行繪製,第二個pass使用半透明模式根據z-test繪製被遮擋的部分。引擎對不透明物體(opaque)和半透明物體進行分開繪製,並且一定是先繪製opaque物體,然後再繪製半透明物體,所以可以在第二pass中根據已經繪製opaque物體的z值來判斷物體的某一部分是否需要再次繪製,只有z-buffer中的值大於當前的z值才說明該部分被遮擋。判斷條件為:
ztest
greater
shader製作:
1,建立乙個su***ce shader, 命名xrayeffect。
2,在xrayeffect的基礎上增加乙個pass, **如下:
pass;
v2f o;
o.pos=unityobjecttoclippos(v.vertex);
return o;
}float4 frag(v2f in):color
endcg
}
3,將模型的shader替換成xrayeffect,效果如下,明顯感覺到效果不對,由於在編輯器模式下該模型並未被其它物體遮擋,但是還是繪製出了xray效果,顯然這不並是我們需要的,這是由於模型自身部分的遮擋導致的。
4,為了去除上一步看到的部分,我們使用stencil進行過濾,該shader的第乙個pass中我們向stencil buffer中寫入乙個值254,在xray的pass中,如果stencil的值為254,則不再繪製效果如下:
附完整shader**:
shader "custom/xrayeffect"
_glossiness ("smoothness", range(0,1)) = 0.5
_metallic ("metallic", range(0,1)) = 0.0
} subshader
lod 200
stencil
cgprogram
// physically based standard lighting model, and enable shadows on all light types
#pragma su***ce surf standard fullforwardshadows
// use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2d _maintex;
struct input ;
half _glossiness;
half _metallic;
fixed4 _color;
// add instancing support for this shader. you need to check 'enable instancing' on materials that use the shader.
// see for more information about instancing.
// #pragma instancing_options assumeuniformscaling
unity_instancing_cbuffer_start(props)
// put more per-instance properties here
unity_instancing_cbuffer_end
void surf (input in, inout su***ceoutputstandard o)
endcg
pass
cgprogram
#pragma vertex vert
#pragma fragment frag
#pragma target 3.0
#include "unitycg.cginc"
struct v2f;
v2f o;
o.pos=unityobjecttoclippos(v.vertex);
return o;
}float4 frag(v2f in):color
endcg
}} fallback "diffuse"
}
Unity3d流光效果
之前曾經注意過material 中紋理的屬性都有 tiling 和offset 但沒有深究過其用途,今天才知道竟然可以利用 offset做uv 動畫,從而完成各種有趣的動畫,比如流光效果!流過效果即通常一條高光光在物體上劃過,模擬高光移動照射物體的效果,之前是使用shader 每幀傳遞乙個 offs...
Unity3D戰爭迷霧效果
最近一直都在做flash相關的東西,很久沒有空搞unity3d了,今天稍微有空,就做點小效果玩玩。這次做了乙個戰爭迷霧的效果 戰爭迷霧大家應該很熟悉了,一開始地圖全部都是黑的,只有主角的一定範圍內能看得到。隨著主角的移動,未探索的區域變成了可見。我這個demo還做了視角切換的功能,可以看看切換攝像機...
Unity3D模型製作規範
unity3d模型製作規範 一.單位,比例統一 在建模型前先設定好單位,在同一場景中會用到的模型的單位設定必須一樣,模型與模型之間的比例要正確,和程式的匯入單位一致,即便到程式需要縮放也可以統一調整縮放比例。統一單位為公尺。二.模型規範 所有角色模型最好站立在原點。沒有特定要求下,必須以物體物件中心...