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