|
或許大家依舊對上一節中的“黑夜”及“夢回過去”記憶猶新,追問下去HLSL到底是何方神圣能實現如此炫酷之效果?HLSL(高級著色器語言)作為微軟的獨門兵器,僅供Direct3D使用。Silverlight無比幸運,從第二個版本開始便已獲得了這把曠世利器,雖然目前僅能發揮其不到3層之功力,不過前輩Moonlight近期已向世界宣布全面突破技術壁壘,HLSL的威力提升至7層左右。我們完全可以預料的是,未來Silverlight將手握HLSL,踏著GPU 3D API飛揚馳騁,在RIA頁游領域所向披靡,制作一切特效及渲染動畫都將成探囊取物般輕松而愜意。
接下來的問題是HLSL開發困難嗎?其實,HLSL特效的制作無外乎“語法”+“公式”;是否還記得我之前曾寫過3篇關于HLSL在Silverlight中應用的入門文章?Shazzam目前已經發展到了1.3版本,除了無需額外安裝DX獨立運行等新特性外,還新增了N多現成的特效以及一部脫機入門教程,奇爽無比。就算對HLSL一知半解或云里霧里的朋友,當您下載Shazzam并運行后,其中所演示的效果保證會讓您感到無比振奮。是的,或許從那刻起你會決定義無反顧的加入到我們的研究行列,接下來的展示和講解將會更堅定您這偉大的信念,原來游戲中的特效渲染動畫是可以來得如此之簡單!
上一節天氣系統中的“黑夜+雷電”效果就是通過HLSL分別對場景的地圖層(MapLayer)和場景空間(Space)進行ColorTone和LightStreak動畫渲染而呈現。毫不夸張的說,只要你有夠精通HLSL編程,那么目前網游中的絕大多數特效都可以完美實現。下面,我首先向大家講解如何通過Shazzam中現成的HLSL特效來實現場景之切換效果,即傳統回合制網游中的踩地雷特效。
以最經典的馬賽克縮放動畫效果為例,首先打開Shazzam并導出(Explore Compiled Shaders)名為Pixelat特效的ps文件;接下來在解決方案中新建一個Effects類,并在其中創建一個繼承自ShaderEffect名為EffectBase的特效基類:
/// <summary>
/// HLSL特效基類
/// </summary>
public abstract class EffectBase : ShaderEffect {
/// <summary>
/// 獲取渲染特效的文件地址
/// </summary>
protected Uri GetShaderUri(string shaderName) {
return new Uri(string.Format("/Effects;component/Source/{0}.ps", shaderName), UriKind.Relative);
}
}
NET技術:Silverlight 2.5D RPG游戲技巧與特效處理:(五)圣贊之HLSL渲染動畫,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。