快速业务通道

Shader学习心得(2):FX的功能之Insert Snippets,以及贴图的shader实现

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29

2.1 为我们的shader增加贴图

Step 1:  在我们的Empty Effect中:

float4x4 WorldViewProj : WorldViewProjection;

下面一行按右键,选择”Insert Snippets”

在右边的框中选择”Texture and Sampler”

在打了一个框的Name上面双击,修改为diffuse,这样所有的”Name”就自动变 为了”diffuse”了

Step 2: 添加程序段,使得代码变为

float4x4 WorldViewProj : WorldViewProjection;

texture diffuse <

      string ResourceName = "";//Optional default file name

      string UIName = "diffuse Texture";

      string ResourceType = "2D";

      >;

sampler2D diffuseSampler = sampler_state {

      Texture = <diffuse>;

      MinFilter = Linear;

      MagFilter = Linear;

      MipFilter = Linear;

      AddressU = Wrap;

      AddressV = Wrap;

      };

struct VS_OUTPUT

{

     float4 pos : POSITION;

     float2 tex : TEXCOORD0;

};

VS_OUTPUT mainVS(float4 pos : POSITION,float2 tex : TEXCOORD0){

     VS_OUTPUT vsOut;

     vsOut.pos = mul(pos,WorldViewProj);

     vsOut.tex = tex;

     return vsOut;

}

float4 mainPS(float2 tex : TEXCOORD0) : COLOR {

     return tex2D(diffuseSampler, tex);

}

technique technique0 {

     pass p0 {

              VertexShader = compile vs_3_0 mainVS();

              PixelShader = compile ps_3_0 mainPS();

     }

}

Step 2:选择我们的Empty Effect文件,在右上方的Property 表格的 Parameter中的 ”diffuse Texture”选项中选择一个你喜欢的贴图文件.

Step 3:按下Ctrl + F7,编译Shader,然后把这个Shader拖动到我们需要显示的物体上面

2.2 解释代码的含义

texture diffuse <

      string ResourceName = "";//Optional default file name

      string UIName = "diffuse Texture";

      string ResourceType = "2D";

      >;

可能很多人对代码中 < … > 中的内容感觉到很茫然,其实这些内容对我们 DirectX中使用来说用处不大,主要作用是使得FX Composer可以识别出我们的参数,并且在参 数面板中显示,方便我们修改

return tex2D(diffuseSampler, tex);

根据diffuseSample取样器,对tex所对应的贴图坐标进行插值运算,如果你对这块代码理解 不清楚,请自己找本HLSL相关的书籍看看.第一章开头的引用数目或许对你有帮助

2.3 运行效果

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号