Home Technical Talk

ATI Rendermonkey -vs- NVIDIA fx composer

|*BILLY$CLINT*|
polycounter lvl 11
Offline / Send Message
|*BILLY$CLINT*| polycounter lvl 11
I have recently had the need to learn a lot about shaders so I started reading the following book, Shaders for Game Programmers and Artists. The book makes exclusive use of ATi's Render monkey software to make the shaders and while they don't use NVIDIA Fx Composer the author does mention it as another tool that can be used to make shaders but said that ATi's render pass approach to the shaders was easier to work with than what the NVIDA tool's approach and that is why he went with ATi but that is all that he said about that.

So my question is, what is the difference between the two programs if any and do any of you use them in your production pipeline?

Replies

  • jocose
    Options
    Offline / Send Message
    jocose polycounter lvl 11
    Hi,

    I have used both of them and prefer to work with render monkey. It breaks up the vertex shader and pixel shaders in such a way that that it is easy to work with just one or the other. It's also very clean and simple.

    FX Composer, while feature packed, seams very bloated and has a steep learning curve. Some people love it, but I found it was a nightmare to start learning shaders in. Most of the books and documentation you will find convey concepts that are visually broken down in Render Monkey.

    Basically, FX Composer combines both the vertex shader and the pixel shader into a single file and then on top of that adds all sorts of scene information into it as well. So you have to drudge through this huge confusing mass of code to get to the simple bits that you are trying to focus on.

    One advantage to FX composer is that it has very good tools for setting up scenes with lights and other environmental objects to give context to your shaders tests, but really if you are just trying to learn how shaders work this is not that useful.

    As far as pipeline integration both will output HLSL/GLSL code so in theory there is no real difference between the two there. The real issue is how easy they are to use, and how well they convey the key concepts you are trying to understand when your first learning about shaders.

    Both programs have lots of examples, but keep in mind that many of them are specific to either Nvidia for FX Composer and AMD for Render monkey.

    Anyways, long story short I vote for Render Monkey if you just want to focus on learning the fundamentals of HLSL or GLSL.

    Oh, and to answer your other question directly, yes I use render monkey in my pipeline. What we do is build a shader in render monkey and then port all the code over by hand into our engine. We don't do this very often so that's why we havn't taken the time to automate any of it. It's really just a tool for us to test things in.

    Keep in mind that using either of these tools in your pipeline will require a very good understanding of the inputs and outputs of your chosen engine. Every engine handles shaders differently and it's never as simple as dragging and dropping the files out of your shader IDE into your engine (unless you have specifically written a pipeline to automate this process).
  • |*BILLY$CLINT*|
    Options
    Offline / Send Message
    |*BILLY$CLINT*| polycounter lvl 11
    jocose wrote: »

    Oh, and to answer your other question directly, yes I use render monkey in my pipeline. What we do is build a shader in render monkey and then port all the code over by hand into our engine. We don't do this very often so that's why we havn't taken the time to automate any of it. It's really just a tool for us to test things in.

    Hey Jocose,

    Thanks a lot as this was just the type of answer I was looking for.

    Hey what about mental mill have you ever used that? I am looking at it now and it looks a lot like the Unreal material editor but so far I have not found any way to see the code that is going on in the back ground.
  • jocose
    Options
    Offline / Send Message
    jocose polycounter lvl 11
    Ah yes I have looked at it. They used it for dead rising there is a cool video up about how they integrated it into their pipeline. It used to come bundled for free with something...

    If you can't get it for free though it costs an arm and a leg. I will see if I can find more info.

    Edit: Okay so mental mill really is an awesome shader IDE. They do have an "artist edition" but you can't export anything useful from it if I remember.

    It has a full node based work flow like the Unreal 3 Shader editor. Each node renders everything out in real time so you can actually see what is happening at each stage of your shader. You can also package entire shaders into these things called "Phenomenons" that you can re-use in other Shaders. It looked like a dream to work with but it's too expensive for us to use.

    Here is a PDF on the how the dead rising team used it. There is a video floating around online somewhere to.

    http://developer.download.nvidia.com/presentations/2009/GDC/GDC09_PlatformIndepShaderDev.pdf
  • rasmus
    Options
    Offline / Send Message
  • jerry
    Options
    Offline / Send Message
    I write my shaders in notepad++, you can find a syntax highlighting file on their site. It's not perfect but none of the programs you mentioned have autocomplete or any other mentionable features that would make me switch. Then i just preview my shader in 3ds max, if you did something wrong it gives back the line number where you missed and you can fix it. I've never felt the need for those bloated programs when all i do is write text anyway.

    Just peeked at mental mill, i like what i see. I'm gonna have to check it out.
  • Xoliul
    Options
    Offline / Send Message
    Xoliul polycounter lvl 14
    I do the same as Jerry, notepad++ and 3DSMax for viewing. Does the job for learning it, and it's not complicated like I found FXcomposer.

    ShaderFX is a bit different, as a node-based editor. But it is a perfect learning tool also, it provides you and easy way to generate HLSL code for which you thought of the logic before bothering with syntax. I used it a lot when I started learning HLSL. You are going to need notepad or notepad++ to look at the code after exporting and to edit, but ShaderFX fits nicely into the workflow with Max.

    Mental Mill is different and although nice on it's own, hard(er) to integrate due to it not being embedded in Max. It also generates code that is MUCH harder to use than ShaderFX's, since the entire export proces seems a lot more obfuscated to the user (no variable naming control I recall).
  • |*BILLY$CLINT*|
    Options
    Offline / Send Message
    |*BILLY$CLINT*| polycounter lvl 11
    jerry wrote: »
    I write my shaders in notepad++, you can find a syntax highlighting file on their site. It's not perfect but none of the programs you mentioned have autocomplete or any other mentionable features that would make me switch. Then i just preview my shader in 3ds max, if you did something wrong it gives back the line number where you missed and you can fix it. I've never felt the need for those bloated programs when all i do is write text anyway.

    Just peeked at mental mill, i like what i see. I'm gonna have to check it out.

    Actually after using ATi Render Monkey for a little while now I have to say that I really like it for the way that it splits up the vertex and pixel code for each render pass.

    I have been trying out all of your suggestions and I am installing ShaderFX now to see what it has to offer. Thanks for all the advice so far I have found it to be very useful.
Sign In or Register to comment.