MAX+VC版的RenderMonkey

一般想快速实现某个shader会选择用rendermonkey,方便快捷地可以实现shader原型。max中提供了DX Shader的材质,可以直接使用fx文件来生成材质,这样我们就可以在max中做完场景后直接测试各种shader了。

MAX中使用DX Shader

新建材质,选择DX Shader:

 

然后在DirectX Shader栏选择一个fx文件,比如DiffuseBump.fx

MAX所用fx文件的特殊语义:

如上图,基本的App传入的uniform数据,比如World,WorldViewProj。

Max利用fx文件的<> 这种Annotation来解析一些语义。比如上图中的texture中的UIName,这样max可以分析这些annotation在材质编辑器中生成控件,比如纹理单元就会生成文件选择的按钮。如果是float4类型的变量,则会生成color picker的按钮。

需要多个RT的后处理shader

在max安装文件夹下有个maps\fx\scene\post_bloom.fx,不妨看看后处理的shader在max中如何写:

fx脚本属性:

这个script其实就是个全局常量,在它的annotation中写一些这个fx的配置,比如ScriptOrder="postprocess"表明这是个后处理shader,ScriptOutput=“color”输出是color buffer还是depth,以及这个shader对应的Technique是哪个,上图的情况是Bloom。

上图是technique Bloom,可以看到有很多Pass,这些Pass会按顺序绘制。每个Pass都有对应的annotation,里面写了这个Pass的行为,比如pass GlowH中, RenderColorTarget0=HBlurMap表明该Pass输出Color0到HBlurMap这张RT上,ClearSetColor和Clear设置D3D绘制前的Clear行为。这张输出的HBlurMap对应了一个texture,在Bloom的最后合成Pass中作为一个sampler进行合成RT。

更详细的max中使用fx可以参考http://www.gamasutra.com/view/feature/2702/using_directx_shaders_in_3ds_max.php

在VC中编写Shader

VC中可以安装NShader等高亮插件(VC2012自带高亮fx),或者网上找个hlsl相关usertype.data文件,扔到安装目录的IDE文件夹中

让Shader代码可以跳转、自动补全

利用VA插件可以让VC解析shader文件,生成类似C++的符号表,这样可以在代码中跳转、自动补全。方法:

安装Visual Assist X,然后在C盘的 user\YourName\AppData\Roaming\VisualAssist\Autotext 中复制cpp.tpl几份,更改名字为fx.tpl, fxh.tpl等你需要的扩展名。打开注册表编辑 HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assit X\你的VANet版本,找到ExtSource,添加值fxh;fx;

打开VC,Tools->Options->Text Editor->File Extension,添加几个扩展,比如fxh,fx,Editor选Microsoft Visual C++。

好了,打开一个fx文件,就可以利用VA智能感应功能方便地写shader了。

诊断shader错误

编写完shader,可以用fxc编译shader,输出信息到Output窗口,这样可以定位编译错误。方法是为VC设置External tools:

Tools->External Tools,弹出下面的对话框,然后添加一个fx_compile

Commands选择fxc.exe的完整路径名,Arguments是fxc的编译选项参数,具体可以参照SDK文档。点击Arguments最右边的有三角形按钮是可以插入宏的,比如$(ItemDir)表示该shader文件所在的目录。然后勾选Use Output window,让shader编译信息输出到Output窗口。

好了,设置完你会发现在Tools菜单下有个fx_compile,在VC中写完shader后,点击下这个fx_compile就可以编译shader了。

 

转载于:https://www.cnblogs.com/innerspace/archive/2013/06/04/3118058.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值