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

时间: 2024-08-10 05:51:05

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

【DirectX11】第三篇 编写Shader?——还是先了解下工具吧

本系列文章主要翻译和参考自<Real-Time 3D Rendering with DirectX and HLSL>一书(感谢原书作者),同时会加上一点个人理解和拓展,文章中如有错误,欢迎指正. 这里是书中的代码和资源. 本文索引: 一 微软那一套 1 Microsoft Visual Studio 2 Windows SDK 3 Effects 11 Library 4 DirectX Tool Kit 二 NVIDIA FX Composer 1 Effects and Material

39. Volume Rendering Techniques

Milan Ikits University of Utah Joe Kniss University of Utah Aaron Lefohn University of California, Davis Charles Hansen University of Utah This chapter presents texture-based volume rendering techniques that are used for visualizing three-dimensional

Multiple Lights

Multiple Lights 到目前为止,所有的effect中都只使用了一种光源(不算ambient light).但没有理由说明不能在同一种effect中结合使用directinal,point和spotlights,或者多个相同类型的光源.同时使用多个光源主要瓶颈在于性能问题以及一个shader模型中可用的指令数量.列表7.4和7.5列出了支持多种光源的effect的代码.这段代码没什么新的构造,因此首先讨论更新后的Common.fxh文件,该文件中增加了一些新的结构体和通用函数.然后再深

我的第一个CG

本人学习NVIDIA的C for Graphic (CG)的理论知识已经有2个月了,关于为什么选择CG,这就不说了.目前在国内<Cg教程_可编程实时图形权威指南(扫描清晰版)> , <GPU编程与CG语言之阳春白雪下里巴人>及<[GPU精粹3].(GPU.Gems.3).(美)Hubert.Nguyen.扫描版>都需要看看,也只有这些了,由于国内人对图形编程的误解,国内的GPU编程发展要晚于国外.不过,对于通用高级编程熟悉的我,再去写GPU上的程序确实有些淡淡的忧伤,还

第四章 Hello,Shaders

第四章 Hello,Shaders 本章,会编写第一个shaders.介绍HLSL语法,FX文件格式,数据结构等等.学完本章,你就具备了深入学习图形编程的基础知识. Your First Shader 使用一种新的编程语言编写第一个程序时都会使用经典的编程例子"Hello,World!",程序输出就是一行文字"Hello,World!".我们遵守这一历史悠久的传统,编写第一个shader程序"Hello,Shaders!",但是这次的输出是一种固

【DirectX11】第八篇 光照模型——漫反射

本系列文章主要翻译和参考自<Real-Time 3D Rendering with DirectX and HLSL>一书(感谢原书作者),同时会加上一点个人理解和拓展,文章中如有错误,欢迎指正. 这里是书中的代码和资源. 本文所有的环境和工具使用都基于之前的文章,如有不明白的地方请先参考本系列之前的几篇文章. 本文索引: 关于灯光 Diffuse Lighting 漫反射光照 1 Directional Lights 平行光 2 Diffuse Lighting Effect Preambl

【DirectX11】第九篇 光照模型——高光

本系列文章主要翻译和参考自<Real-Time 3D Rendering with DirectX and HLSL>一书(感谢原书作者),同时会加上一点个人理解和拓展,文章中如有错误,欢迎指正. 这里是书中的代码和资源. 本文所有的环境和工具使用都基于之前的文章,如有不明白的地方请先参考本系列之前的几篇文章. 本文索引: 关于灯光 Specular Highlights 高光 1 Phong 冯氏光照模型 2 Phong Preamble 冯氏光照模型变量准备 3 Phong Vertex

【DirectX11】第六篇 纹理映射

本系列文章主要翻译和参考自<Real-Time 3D Rendering with DirectX and HLSL>一书(感谢原书作者),同时会加上一点个人理解和拓展,文章中如有错误,欢迎指正. 这里是书中的代码和资源. 纹理映射主要是指将贴图添加到3D模型表面的过程.这有点类似礼物包装,而你的包装纸就是一张2D的贴图.纹理映射是现代实时渲染技术的基础,并且可以用来实现很多很有意思的图形效果. 很多书或者文章中可能会把texture翻译成材质,在这里,我将保持unity Game Engin

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

主要是基于达索软件Composer Player.的基础上做些二次开发. public class ComposerToolBarSetting { public bool AntiAliasingOnIdle { get; set; }//抗锯齿化 public bool AssySelectionMode { get; set; }//使能选择装配树 public bool AssySelectionModeViewportIndicator { get; set; }//装配树选择模式 p