以前写过一篇 初学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 ); }
最后, 一个带贴图的模型出如今了渲染窗口里
下一篇咱们让这面旗帜飘动起来。