HLSL CGFX shader editors?

I have been recently trying to learn to write HLSL or CGFX shader code.

I have tried both RenderMonkey and FXComposer 2.5 but I have hit the brick wall with all sort of limitations and bugs that makes me really angry

So I am calling on all the shader experts to share in what environments do you guys work your shaders?

Limitations of RenderMonkey and Fxcomposer that I am talking about is things like :

FX Composer

  1. Multi - UvSet bug with .fx files (does not work)
  2. Unable to render to the rendertarget (texture) only selected objects in the scene. (using collada fx , it says you can but , no… yet another bug)
  3. Crash bug with texture import export

RenderMonkey

  1. Unable to render (preview) more than one effect at a time. No compositing.
  2. Bug with .fbx file import bug.

and all sort of other minor glitches which I am more than happy to just get on with.

Maybe I am asking bit too much. I don’t know. If you can combine RenderMonkey and FXComposer then it would be ideal.

Or Maybe I am not supposed to expect these kinds of “shader editors” to provide that kind of flexibilities. Maybe, I have reached the stage where I need to try to integrate with some sort of 3D engine so that I have more control of rendering. If you work in a game company where you have the target engine to integrate your shader into , then it may be fine. But what about if you just want to learn it by yourself? Is there any easy to use 3D engine that takes .fx shader and experiment with rendering pipeline without needing to code one yourself? (I am talking about kind of script driven stuff … or so.)

I need to be able to control off screen render to texture with multiple shader composition rendering (previewing) with selective objects for each effects. ShaderFX in 3dsMax looks good, but I am not sure if it will let me render custom off screen texture stuff… and most importantly I work with Maya.

Any suggestions appreciated.

If Rendermonkey and FXcomposer and node-based tools like shaderFX are not suitable, then there isn’t much more left then using a plain text editor and finding a 3d viewport that will be able to render what you want.

The thing is, every 3d (game) engine will have its own requirements/restrictions/limitations.

So some may allow you to render to a render target, but not allow you to use vertex colors. Or maybe you suddenly want to do realtime reflections, but you have no way to setup 2 render passes with different cameras t do it.

There isn’t one environment that can do everything you can possibly imagine you’d ever to with shaders. Unless you write your own engine and can adopt it to your changing needs.
XNA would be a very good environment for that.

I mostly use 3dsMax and I know it can do most things I need.
It has support for render targets (i.e. we use the in shaderfx for the Glow and SSS materials in ShaderFX). It supports SAS scripting, through which you can setup render targets, pass loops, etc.

It also supports screen/post fx, such as bloom, but they are poorly documented and not always as stable and friendly to use.

But you still run into limitations.
I.e. the engine I use at work uses something called deferred shading.
Well you can forget about doing that in the 3dsMax viewport.
So the max viewport can do a lot of things, but it is certainly not a freeform environment where anything goes.

I think Maya is probably a few steps below of what max can do with its realtime viewport flexibility.
XSI sounds like it is pretty close to Max, but I’ve never tried it, so not the best person to judge.

[QUOTE=kees;3363]I think Maya is probably a few steps below of what max can do with its realtime viewport flexibility.
[/QUOTE]

This definitely true, but if you’re just doing simple stuff, the Cgfx shader node should be able to do all your lifting. Not sure what you mean by the multiuv set bug, i know i’ve never had any issues with multiple uvsets using Cgfx shaders in maya (but then again, i don’t know the nature of the bug:laugh:)

I use a bit of a MishMash - I use Max for most quick and small things, and tried out FXComposer for a bit, bit found it buggy.

I edit in NotePad++ with a custom syntax highlighter and a macro to compile the shader and bring up the output in the Notepad++ log window.

Max+ShaderFX is great for getting most things done, and when I need more control over the scene or rendering environment I switch into XNA - it’s pretty simple and easy to roll a quick SpecialFX or Model viewer, and lets me work more with C#, which I heart.

I agree with the others, probably XNA is the way for you to go. Its easy enough to pick up from the examples and hey you get to learn C# :slight_smile:

I have not looked at fx composer properly for ages and reading all the guff they claim it looks like it should be sorted by now. From what you say they still have some way to make it really robust.

similar to the XNA suggestion, I am using my own engine for playing around with stuff. As projects are coded with lua, it is fairly quick to do achieve effects and I have full access to many advanced rendering features. But also full responsibility, ie this may not be the easiest way and model import might be tricky. Friend and I also made a little IDE like editor for it that supports Cg. http://sourceforge.net/project/screenshots.php?group_id=238320&ssid=90585

But since the engine has started before CgFX was robust, we dont use it but have custom mtl/shd files for technique definitions and reference plain .cg files. Some day I should add native cgfx support…
http://luxinia.de/index.php/Tutorials/Tutorial22
http://luxinia.de/index.php/Tutorials/Tutorial24

Anyway if you really want to get down to the details, any engine with modern rendering features and preferably with a script language binding for sake of development speed, will do.

thanks for all the replies!

Just to clear some confusion about the bugs that I have mentioned :

Fx Composer does not work with multi uvset using HLSL format.
Maya only supports single pass cgfx or hlsl shader. And no post effects or render to target support.

And like many of you have already said, I think XNA is the way to go.
So myself and one of my friend started a little project that can simply read a custom script format to control the rendering pipeline using XNA.

Also in the development is extended version of obj file format that exports pretty much what I need , (multi uvset , colour set , tangent , + more)

It seems to be going well and maybe when it becomes bit more useful then we may as well release here and other forums too.

once again, thanks for all the replies.

Q: What do a blonde and a taxi have in common? A: Everyone’s been in and out for $2.00. …Lineage 2 Adena warhammer online gold cheap wow gold