Unity3D Shader 實現X光效果

2021-09-10 21:45:41 字數 1274 閱讀 4897

【舊部落格轉移 - 2023年1月3日 16:40 】

最近學習了一些shader效果,打算把學到的知識總結一下,這篇講一下這種輪廓發光的效果(如下圖所示),也有一些地方管這個叫x光

可以看到圖上的藍色人物,邊緣顏色比較深,而中間的比較淺,這是利用法線跟視線向量的點乘值計算出顏色濃度來實現的

shader "

lijia/xray

" subshader

lod

200pass

;struct

v2f ;

fixed4 _rimcolor;

float

_rimintensity;

fixed4 frag (v2f i) : color

endcg}}

}

float3 viewdir = normalize(objspaceviewdir(v.vertex));//計算出頂點到相機的向量

這一句是呼叫了unitycg.cginc庫中的objspaceviewdir方法,獲得viewdir

inline float3 objspaceviewdir( in

float4 v )

翻看unitycg中objspaceviewdir方法的原始碼,發現它是拿到_worldspacecamerapos(世界座標相機的位置),左乘world2object矩陣,轉成模型座標系

最後objspacecamerapos - v.xyz (向量相減),得到viewdir向量

viewdir跟normal的點乘值,就表示兩個向量的夾角大小

夾角 < 90°時,點乘》0

夾角 = 90°時,點乘=0

夾角 > 90°時,點乘<0

邊緣的頂點,點乘值接近90度,也就是值接近0,所以這裡用1減去點乘值( saturate函式:返回0-1之間的數 )

float val = 1 - saturate(dot(v.normal, viewdir));

計算出顏色強度後,把顏色傳給fragment著色器去輸出渲染,就可以看到效果了

posted @

2017-05-16 15:03

李嘉的部落格 閱讀(

...)

編輯收藏

Unity3D Shader實現流光效果

流光效果圖 演示工程 位址 功能需求 模擬資料傳送效果,高亮色塊從模型上方移動到下方 功能分析 這裡採用uv動畫的方式來實現,利用alpha貼圖控制流動的形狀 利用alpha遮罩貼圖,控制模型中哪些地方需要進行流動 shader custom datafloweffect specular spec...

Unity3d Shader 運動模糊

攝影常用的一招就是延時攝影,以使運動的物體產生運動模糊。攝影技巧為 1,三角架固定相機 2,調長 時間 3,物件有運動物體和靜止物體參照 用了延時攝影,會產生藝術感,見下圖 2015年1月 拍攝於上海陸家嘴 遊戲方面可喜的是unity3d也可以實現類似效果,先看效果圖 第一張為無運動模糊 第二張為有...

Unity3D Shader 入門學習

unity3d 的所有渲染工作離不開著色器.shader 著色器其實是一小段程式,它負責將輸入的mesh網格.以指定的方式和輸入的貼圖或者顏色等組合作用.然後輸出.繪圖單元可以依據這個輸出來將影象繪製到螢幕上 輸入的貼圖或顏色等,加上對應的shader,以及對shader的特定引數設定,將這些內容 ...