http://blog.csdn.net/debugconsole/article/details/50905398

FX COMPOSER

其实编辑一个shader到debug它,有很多方法,很多方式,也有很多工具.

目前市面上,不管收费还是免费,名气最大的要数RenderMonkey和FX Composer. 一些用户还会选择shaderFX,还有些人会选择 notpad + 3dmax/maya.可以说每一种工具或者方式都对某一些shader来说很好很方便,但是对其他的shader来说很不好用甚至不可能.浏览了一下网络上的资料,发现对工具的讨论很少,自己在选择工具时候就曾经和迷惑,所以谈下经验,或者说我的经历,供读者参考.

但是本人精力,水平毕竟有限,不可能对所有的工具,以及用法做一一详细对比,只能是在使用过程中遇到的问题进行下简单的横向对比,即使如此,相信也能更好的帮助需要使用快速可视化shader编辑的同学了解自己所需,更好的选择适合自己的工具.下面开始说正题:

当初选FX Composer, 一是因为RenderMonkey到了1.82就没有再更新过.同时AMD易主,开发社区普遍流传的说法就是RM已经过时,不会出现新的版本.大家知道shader这个东西,很多是要配合硬件与技术更新的,如果你想玩玩新的特效,一款久不更新的工具会很别扭,本因是因为shdaer语法的变化,shader使用方式的变化等等.当然FX Composer并不是救世主,下面会谈具体原因,我用FX很简单的原因就是:个人喜好(要说明的是,FX也很久不更新了,所以为什么选择他,我只能归类为个人喜好了,呵呵.).不过还有另外一个原因,下面就来说:

同时用过RenderMonkey和FX的人一定能感受到,FX的脚本真是很好用,虽然Rendermokey把很多功能都提供到了UI,使你很方便的点几下按钮就能完成很多设置。但是,方便的同时意味着在灵活性上有所减弱。虽然FX的脚本语法在没接触过的人看来增加了学习曲线,但是一旦你真的愿意花时间去学,如果你有编程基础,一天之内,你就能较熟练的使用脚本语法来在FX上搭建你的shader了。

但是FX Composer在它本身上又体现了“人格分裂”,即它支持HLSL,也支持N家自己的COLLOADA fx,即cgFx。虽然说cg和HLSL很像,但毕竟有区别,具体到工具上就是:同样是FX Composer,用cg就能较好的使用FX本身提供的完整功能,但是你用HLSL,很多重要的工具你无法在FX Composer上使用。我不明白为什么这么设计,为了更好的宣传cg,传播cg而对HLSL进行的制衡么?只可惜N家就是这么设计的FX,用HLSL只能眼睁睁看着。如今的软件业,要投资精力的地方很多很多,一个人很难去用一种工具就去学习那个工具指定的整套规则,特别是用其他工具可替代,或者投资精力不值得。本人不喜欢cg,哪怕他跟HLSL有一点点不同,他也不能很好的匹配HLSL所有的场合。并且用FX的初衷就是玩HLSL,只不过不想每次自己都写代码去进行配置。说白了偷懒罢了,如今偷懒不成反而要花精力投资新工具,并且不是那么必要,我就果断跟cg说拜拜了。

这就导致FX出现了一个绝对的硬伤,一个古老但有用,几乎是个游戏都少不了的RTT,FX如果你用HLSL而不是cg,就无法使用。当然有些trick可以让你在FX那个viewer里显示出你要的东西,但是运行过程很多warning和error,并且过程不连贯。完全就不是如cg那种支持的流畅与perfect。这种感觉就好像你用螺丝刀的刀柄当锤子去敲钉子,钉子小并且手头没工具倒还可以,倘若遇到大钉子,实在是无能为力。这也是导致我写这篇文章,我去了解RenderMonkey,以及我最终的想法这一系列的引子,各种迷惑,会在后续文章中一一解开。

当然,只是一个RTT无伤大雅,能用FX做的事情还很多,甚至跟RenderMonkey同类型的功能一样好。

关于这个RTT,RenderMonkey就可以很好的实现,很顺畅的展示。shaderFX我没用过,在他人气提升之前我也不打算去了解。另外要说的是,用notpad+3dmax的方法对我来说不是很实用,而且3dmax也有他的硬伤。但是由于我本身是个程序员,不是artist,所以没用过3dmax也不好说什么,就此略过。我不支持作为一个程序员不去尽量横向扩展知识,但是如果单纯为了横向扩展而扩展,就没必要了。工具毕竟是工具,要使用它,它才能给你带来价值。不然你把一个工具研究再透彻,不去用它,撇去兴趣爱好不谈,纯碎浪费时间 >_<!!

基于以上我们可以看到,其实玩shader,不同的人有不同的玩法,没有完美切省时省力的工具与方法存在。同时不得不惋惜的说,通过对FX脚本语法的朝夕相处,真的很喜欢FX,但是有些技术上能达到却可能由于某些原因它没有去做,导致这个本该更美好的工具不是那么顺手,只能让人唏嘘不已

RENDERMONKEY

用了一段rm,它的好处自然是简单易用。基本设置全都可直接通过鼠标搞定。

rm对于帧渲染来说很方便,比如RTT,还有基于RTT的衍生技术。但是一个个pass着实让人很眼花缭乱。

但是fx在场景展示上此时显得更加强大与方便。比如说光源位置,rm可以通过设定值来调整光源位置,但是本质是基于数据的。对用户而言并不友好。而fx的光源,就如普通DDC工具一样可以灵活的在空间中所见即所得的拖动。并且镜头的移动比rm也更灵活。

rm不支持shader指令调试,fx可以像一般代码编辑器一样调试shader。同时发现在rm中,clamp这句hlsl代码有bug。

通过使用两个工具,我发现如果你想省事,方便做一些实验与原型,这两款工具都必不可少。

下面就总结下使用建议:

对于偏重基于图像的渲染方面,用rendermonkey比较方便。

对于偏重3D场景与灯光照射来说,fx与它的脚本来说更适合你快速及时的调整。

如果有一个 rm link fx的工具该多好?

不过这个工具不会出现也没有价值再出现,因为rm的停止开发与更新已是事实,而fx停止更新也很久,可以断言fx和rm终将消失在历史之中。我们没必要觉得XX停止了,就不愿意去用它了,觉得它out了。其实在用这两款工具的时候,我们只是在利用工具更新我们的渲染知识,获得一种快速的体验。而非工具本身。所以个人认为,虽然这两款工具过时了,但是依旧非常值得您去尝试,去使用的。

当然又更加复杂的解决方案:就是用您自己的引擎,直接构建自己的场景与渲染方式。不过显然如果你没有自己的引擎,用这两款工具能给你的学习带来非凡的价值。引擎毕竟不是一段小代码,一个简单的程序,是一个系统。单就一个图形引擎,实现起来困难也比较大。所以,用工具快速实践想法不失为一种好的替代方案。技术掌握后,等到自己有能力构建自己引擎,那么此时那些你曾经用工具学习的知识,也很快的可以构建进引擎中。

ps:两种工具的学习难度都不高,没有想象中那么高深。非常推荐读者都试一下,并且在适当的场合用合适的工具,为您的学习与工作加速

FX Composer VS RenderMonkey 【转】的更多相关文章

  1. WPF/Silverlight深度解决方案:(六)HLSL自定义渲染特效之完美攻略(上)

    原文:WPF/Silverlight深度解决方案:(六)HLSL自定义渲染特效之完美攻略(上) Shader Effect种位图特效及2种渲染特效,而Silverlight中仅有这2种渲染特效: Bl ...

  2. Shader工具

    1. RenderMonkey 2. NVIDIA FX Composer 2.5

  3. Shader编程教程

    2010-05-13 11:37:14|  分类: DirectX 3D学习|举报|字号 订阅     Shader编程教程1-环境光照 您好,欢迎来到XNA Shader教程1.我的名字叫Petri ...

  4. 39. Volume Rendering Techniques

    Milan Ikits University of Utah Joe Kniss University of Utah Aaron Lefohn University of California, D ...

  5. Shadow Mapping 的原理与实践(一)

    早在上世纪七十年代末,Williams在他的“Casting Curved Shadows on Curved Surface”一文中提出了名为Shadow Map的阴影生成技术.之后,他人在此基础上 ...

  6. Game Engine Architecture 9

    [Game Engine Architecture 9] 1.Formatted Output with OutputDebugString() int VDebugPrintF(const char ...

  7. Shadow Mapping 的原理与实践 【转】

    早在上世纪七十年代末,Williams在他的“Casting Curved Shadows on Curved Surface”一文中提出了名为Shadow Map的阴影生成技术.之后,他人在此基础上 ...

  8. shader一般都是用工具调试的

    N卡的话用nvidia的nVidia FX Composer, A卡的话用ATI的render monkey 顶点着色器从何方拿到这些数据?在U3D环境下,答案是从绑定到game object中的Me ...

  9. 基于Composer Player 模型加载和相关属性设置

    主要是基于达索软件Composer Player.的基础上做些二次开发. public class ComposerToolBarSetting { public bool AntiAliasingO ...

随机推荐

  1. 计算Linux权限掩码umask值

    创建文件默认最大权限为666 (-rw-rw-rw-),默认创建的文件没有可执行权限x位. 创建目录默认最大权限777(-rwx-rwx-rwx),默认创建的目录属主是有x权限,允许用户进入. 简单的 ...

  2. KVM分析报告

    转载   KVM分析报告   虚拟化技术工作组 2008-12-31 1.    概述 1.1.    KVM简介 KVM是以色列开源组织Qumranet开发的一个开源虚拟机监控器,从Linux-2. ...

  3. 别再滥用scrapy CrawlSpider中的follow=True

    对于刚接触scrapy的同学来说, crawlspider中的rule是比较难理解的, 很可能驾驭不住. 而且笔者在YouTube中看到许多公开的演讲都都错用了follow这一选项, 所以今天就来仔细 ...

  4. SQL--相关子查询 与 非相关子查询

    SQL 子查询可以分为相关子查询 与 非相关子查询. 假设Books表如下: 类编号 图书名 出版社 价格 ---------------------------------------------- ...

  5. Appium+python自动化29-toast消息【转载】

    本篇转自博客:上海-悠悠 前言 appium1.5以后的版本才支持toast定位,并且 'automationName'得设置为'Uiautomator2',才能捕获到. 一. Supported P ...

  6. eclipse怎么关闭spring dashboard

    进入help-install new software-what is already installed?-卸载spring board

  7. 使用navicat修改Mysql默认密码

    本质就是修改数据库mysql里面的数据表user一个字段,并执行如下一句mysql语句: UPDATE user SET password=PASSWORD('密码') WHERE user='roo ...

  8. nodejs获取ASP.Net WebAPI(IIS Windows验证)

    处理了很多天,终于使用Nodejs可以发出请求至WebAPI,能够正常处理数据了 首先加入npm包 npm install httpntlm 在app.js中加入代码 var httpntlm = r ...

  9. php获取rl完整地址

    /** * 获取url完整地址 * @author 梁景 * @date 2017-04-27 * @return */ function getUrlInfor() { $sys_protocal ...

  10. jquery ajax事件执行顺序

    jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.e ...