以前寫過一篇 初學RenderMonkey作一面旗幟飄動的效果 node
其實當時徹底是心血來潮初步接觸了一下,感受特別酷,爲了在mod裏秀一下,對於HLSL沒有太多概念。框架
以後就擱置了,如今從新拾起來,決定認真的學習下吧,打算將過程記錄下來,算是一個系列吧,但願不要坑了。學習
這裏不會寫不少理論,一來我本身也是初學者,不敢亂寫什麼,各類HLSL的教程不少。二來實現一個效果才比較有趣。spa
選用RenderMonkey是由於我第一次就接觸的這個,雖然很老了並且不更新了,但感受用起來還不錯,比較方便,就不想考慮別的,先用起來。.net
首先來建立一個Effect,能夠選擇不一樣的接口,顯然學習HLSL, 咱們選擇Directx.code
*Effect(效果框架):按照最初製做着色器特效時的作法至關繁瑣,Effect就是一種簡化。對象
選擇一個模型, 雙擊Model或者右鍵->Edit來選擇咱們本身的模型,默認是一個球體,這裏我換成了一面旗幟。blog
爲模型添加一個貼圖,以後雙擊貼圖項或者右鍵->Edit來選擇咱們本身的貼圖。教程
以後咱們須要在數據流裏添加一個貼圖座標項目TEXCOORD,這樣在代碼裏咱們才能夠運用貼圖座標和貼圖來給模型「上色」。
接口
這裏默認會有一個POSITION項目,這個就是組成咱們模型的頂點數據,爲何咱們以建立Effect就能看見模型就是由於這裏已經默認添加好了
同時代碼裏也有一部分默認的,這個下面會提到。
到目前爲止,咱們有了一個模型,一張貼圖,對應的數據流也添加好了。
可是目前這些都只是準備工做,真正要對這個Effect顯示出效果,最重要的部分在Pass中
*Pass(過程):具體的定義我也說不清,通常來講一個Effect由多個technique組成,technique由多個Pass組成,因此Pass是最基本的效果實現過程
因爲默認已經添加好了模型,因此沒必要關心模型,若是有多個模型可供選擇能夠在模型上右鍵->reference node 來選擇。
咱們只要爲Pass添加貼圖對象
接下來須要寫兩段代碼了,能夠在Pass下看到這兩個Shader代碼
替換以下代碼,代碼自己沒什麼解釋的,就是最基本的渲染代碼
Piexl Shader:像素着色器
sampler2D banner; struct PS_INPUT { float2 TexCoord : TEXCOORD0; }; float4 ps_main(PS_INPUT Input) : COLOR0 { float4 color = tex2D( banner, Input.TexCoord ); return color; }
Vertex Shader:頂點着色器
float4x4 matViewProjection; struct VS_INPUT { float4 Position : POSITION0; float2 TexCoord : TEXCOORD0; }; struct VS_OUTPUT { float4 Position : POSITION0; float2 TexCoord : TEXCOORD0; }; VS_OUTPUT vs_main( VS_INPUT Input ) { VS_OUTPUT Output; Output.Position = mul( Input.Position, matViewProjection ); Output.TexCoord=Input.TexCoord; return( Output ); }
最後, 一個帶貼圖的模型出如今了渲染窗口裏
下一篇咱們讓這面旗幟飄動起來。