FX Composer VS RenderMonkey 【转】
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 【转】的更多相关文章
- WPF/Silverlight深度解决方案:(六)HLSL自定义渲染特效之完美攻略(上)
原文:WPF/Silverlight深度解决方案:(六)HLSL自定义渲染特效之完美攻略(上) Shader Effect种位图特效及2种渲染特效,而Silverlight中仅有这2种渲染特效: Bl ...
- Shader工具
1. RenderMonkey 2. NVIDIA FX Composer 2.5
- Shader编程教程
2010-05-13 11:37:14| 分类: DirectX 3D学习|举报|字号 订阅 Shader编程教程1-环境光照 您好,欢迎来到XNA Shader教程1.我的名字叫Petri ...
- 39. Volume Rendering Techniques
Milan Ikits University of Utah Joe Kniss University of Utah Aaron Lefohn University of California, D ...
- Shadow Mapping 的原理与实践(一)
早在上世纪七十年代末,Williams在他的“Casting Curved Shadows on Curved Surface”一文中提出了名为Shadow Map的阴影生成技术.之后,他人在此基础上 ...
- Game Engine Architecture 9
[Game Engine Architecture 9] 1.Formatted Output with OutputDebugString() int VDebugPrintF(const char ...
- Shadow Mapping 的原理与实践 【转】
早在上世纪七十年代末,Williams在他的“Casting Curved Shadows on Curved Surface”一文中提出了名为Shadow Map的阴影生成技术.之后,他人在此基础上 ...
- shader一般都是用工具调试的
N卡的话用nvidia的nVidia FX Composer, A卡的话用ATI的render monkey 顶点着色器从何方拿到这些数据?在U3D环境下,答案是从绑定到game object中的Me ...
- 基于Composer Player 模型加载和相关属性设置
主要是基于达索软件Composer Player.的基础上做些二次开发. public class ComposerToolBarSetting { public bool AntiAliasingO ...
随机推荐
- HDU2819(二分图匹配,记录过程)
Swap Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- IEEE 802.15介绍
1. 无线通信 无线通信主要是利用无线电(Radio)射频(RF)技术的通信方式,无线网络是采用无线通信技术实现的网络无线网络可为两种: 近距离无线网络和远距离无线网络 近距离无线网络主要可分为如下两 ...
- python学习笔记 操作文件和目录
如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操 ...
- arm处理器中a5 a8 a9,v6 v7,arm7 arm9 arm11都是依据什么来分类的【转】
转自:http://blog.csdn.net/maochengtao/article/details/9951131ARM处理器发展这么多年,有很多架构,很多不同的内核 架构有armv1 v2 v3 ...
- ZJOI2006书架
追yql做题记录的时候做到的……一道Splay模版题…… 啊LCT写久了都有点忘了Splay了(什么奇怪的逻辑?) 其实说白了五个操作: 1. 将某元素置顶:将元素旋到根,然后将左子树合并到该元素的后 ...
- springboot 整合jdbcTemplate
springboot 整合jdbcTemplate 〇.搭建springboot环境(包括数据库的依赖) 一.添加依赖 如果导入了jpa的依赖,就不用导入jdbctemplete的依赖了jpa的依赖: ...
- mysql 单列索引限制
innodb_large_prefix. 这个参数默认值是OFF.当改为ON时,允许列索引最大达到3072. >=5.7.7默认打开 <=5.7.6默认关闭 innodb_large_pr ...
- sqlalchemy源代码阅读随笔(1)
今天看的,是url.py模块,这个在create_engine中,起到的最用很大,其本质,就是对访问数据库的url,进行操作管里.我们可以直接访问这个类. 看一个简单的代码: from sqlalch ...
- HBuilder开发移动App——manifest.json文件解析
以前做过Android App开发,对于各项配置都是在AndroidManifest.xml文件中完成的,包括权限的设定.图标.标签.App的名字.Activity注册等等 使用HBuilder开发移 ...
- Tomcat的类加载机制
一个功能健全的Web服务器,要解决如下几个问题: 部署在同一个服务器上的两个Web应用程序使用的Java 类库可以实现相互隔离.不能要求一个类库在一个服务器中只有一份,服务器应当保证两个应用程序的类 ...