Home Technical Talk

ShaderFX is now available

polycounter lvl 18
Offline / Send Message
Ben Cloward polycounter lvl 18
Some of you may have heard of ShaderFX, the node-based real-time shader editor for 3ds Max that I've been working on together with Kees Rijnen. Well, we're finished with version 1 and it's now availalbe at www.lumonix.net There's a demo version available that you can try out.

The really cool thing about this new plugin that we've developed is that it allows artists to create HLSL FX shaders without knowing how to program. It uses a node based interface and you wire the nodes together to create the shader you want. Go take a look! We've had a great time developing it and I hope you guys enjoy using it too!

-Ben

Replies

  • arshlevon
    Options
    Offline / Send Message
    arshlevon polycounter lvl 18
    awesome, i was passed a demo a few weeks ago from a friend. i am guessing it was an earlier release. and its actually a very nifty little plug. those who have used the unreal 3 engine will notice some of the same features and nodes. but i found this to be much more flexible than unreal 3, on top of making fx files, so its more open ended as well. i have only been able to spend a limited amount of time with it because of other projects, but its very nice and i wish that some one would develop a node based interface to replace maxs default material editor. really great work ben, you have made many awesome contributions to the scene over the years and this is no exception. i recommend anyone interested in making your own shaders to give it try, i wish i had more time right now to play with it, i am really interested to see what people make with it.

    oh and by chance ben, did you have a hand in making shaderworks for activision? i was given a demo of the software and i couldnt help but notice some similarites.
  • Slum
    Options
    Offline / Send Message
    Slum polycounter lvl 18
    Ditto to what arsh says. It's looking great.

    I love node based interfaces (i use them in audio software like Reaktor, Synthedit) and max's Particle Flow.

    I haven't tried it out yet, but this definitely looks extremely badass.
  • Renaud Galand
    Options
    Offline / Send Message
    Renaud Galand polycounter lvl 19
    I was waiting this like the messie ! Thx alot guys for all the hard work.
  • Miguelito
    Options
    Offline / Send Message
    Miguelito polycounter lvl 18
    yeah. always waited for something like that. THX
  • Joao Sapiro
    Options
    Offline / Send Message
    Joao Sapiro sublime tool
    wow ! i just dowloaded the demo and am going to try out ! thank alot man !
  • spacemonkey
    Options
    Offline / Send Message
    spacemonkey polycounter lvl 18
    Congrats Ben and Kees!

    Its a great addition to Max. Creating complex shaders has been an integral part of my role working on 360 games and although I have been using Unreal Ed at work I found from my time on the beta that it easily compares to the tolls that I am used to. I think allot of game studios are going to be interested in Shaderfx, and this node based system is definately something artists wshould be familiar with!
    Now I have a license I cant wait to finish the character I'm working on. smile.gif

    Perhaps this should be plugged for news on polycount??
  • Ruz
    Options
    Offline / Send Message
    Ruz polycount lvl 666
    coolo stuff. can't wait to try this. the sliding skin stuff looks great also
  • jogshy
    Options
    Offline / Send Message
    jogshy polycounter lvl 17
    Very nice Ben!
  • Joshua Stubbles
    Options
    Offline / Send Message
    Joshua Stubbles polycounter lvl 19
    I'm loving the demo so far, but I'm seeing a problem. Most of the included shaders (even the ones under 8 nodes) do not show up on the model. I apply the shader to it, and the model goes completely black. I've tried using all of the shader model variants with no luck.
  • Ruz
    Options
    Offline / Send Message
    Ruz polycount lvl 666
    yup i had that too and I also had a problem when assigning multiple shaders, where they get assigned to all parts of the model , not just the bit you are trying to assign it to.
    So if i apply a skin shader to the head, that gets assigned to the body also.
  • Ben Cloward
    Options
    Offline / Send Message
    Ben Cloward polycounter lvl 18
    Vassago - It sounds like the problem you're describing is related to paths not being correct for texture maps. Does sample_animated_color.SFX work correctly for you? That one doesn't use textures. Try loading up sample_fresnel_term.SFX and assign it to an object. Then select the texture map node and in the settings, browse to a texture map on your disk and assign it. Is it still black?

    Ruz, sounds like the problem you're having is related to work flow. ShaderFX is not set up to create multi-sub object materials. If you're object is using multi-sub object materials, create a temporary object (a sphere or a teapot or something) and use that while you're creating your shader. Once your shader is done, export it as an FX file. Then create a multi-sub object material, set each of the sub materials to directx 9 material type and assign each of those materials the FX shader that you exported from ShaderFX.

    We intended ShaderFX to be a shader editor - for creating shaders. It's not meant to be a replacement for Max's material editor or a way to manage all of the shaders and materials in your scene. So use ShaderFX for creating your shader, then once you've got one you like, export it as an FX file and then use that FX file in your Max scene.
  • Bryan Cavett
    Options
    Offline / Send Message
    Bryan Cavett polycounter lvl 19
    Vassago: Ive been experiencing that aswell. When I compile it as a .fx and apply it though it works fine.
  • Pedro Amorim
    Options
    Offline / Send Message
    Yeah. me too. everything gets dark. but i think the problem is because of the dds files. :\
    at least with me. max says the dds format is an invalid filetype.
    how do i put max acepting dds files?


    //edit
    need this i think http://developer.nvidia.com/object/3dsmax_dds_plugins.html


    //edit 2
    well.. i instaled that 3dsmax dss plugin. but still it didnt work. still wont acept dds files. :\ any idea?
  • thomasp
    Options
    Offline / Send Message
    thomasp hero character
    dds-trouble: do you have polyboost installed by any chance?
  • Joshua Stubbles
    Options
    Offline / Send Message
    Joshua Stubbles polycounter lvl 19
    nope - no polyboost. I've got CSPolytools and Meshtools 3 installed, but that's it. Oh, also Chuggnut's UV tools.
  • pior
    Options
    Offline / Send Message
    pior grand marshal polycounter
    Loving it! I've been having fun with a little something I had on a 2D concept - I hand tweaked some free cubemap I dug online, and followed the fresnel video to help me building the nodes.

    fast_001.jpg

    If some of you get a 'line 87 error' when starting the plugin, make sure you have some network connection going on -not necessarily the internet, can be any fake local network, you name it-. Thanks Kees for the info!

    Besides that, now I'm stuck with my shader because I used all the 8 nodes from the demo and whish to add normalmaps to the shader. BUT! I'm sure that some .FX editing can fix that, yeah!
  • Pedro Amorim
    Options
    Offline / Send Message
    man! thats lovely!!!

    and yes i have polybost installed.
  • Fordy
    Options
    Offline / Send Message
    Fordy polycounter lvl 18
    Hi all

    Woud I be right in thinking that you can only see the shaders in the viewport and that you can't render them?
  • CrazyButcher
    Options
    Offline / Send Message
    CrazyButcher polycounter lvl 18
    yeah, there is no hlsl->scanline interpreter so far
  • Ben Cloward
    Options
    Offline / Send Message
    Ben Cloward polycounter lvl 18
    Hey Guys,

    Kees figured out what was causing the "my model is all black!" problem and fixed it. We've uploaded a new version of the demo, so go ahead and download it again and you should be good to go.

    This won't fix the issue with Max not being able to read DDS textures, though. That seems to be a Max problem and not something that we can fix.

    Really nice looking shader, Pior! Can't wait to see what else you can do with this.

    -Ben
  • thomasp
    Options
    Offline / Send Message
    thomasp hero character
    bitmap: re - polyboost. there you have your problem. in some rather recent polyboost update it breaks the dds stuff. easy fix: go into the plugin manager, load the dds plugin(s) manually and set them to auto-load. or whatever. smile.gif
  • JordanW
    Options
    Offline / Send Message
    JordanW polycounter lvl 19
    This tool is pretty awesome and I know a lot of people have been wanting this for a long time. Two things I noticed:

    1. When creating a shader that uses a normal map and simply hooking the normal map up to the normal map slot on the shader, things can get wavey if there are mirrored UVs, is there a better way to hook this up? (i'm at work right now, when I get home I'll post a screenshot of what I'm seeing)

    2. It would be nice to be able to open the example shaders with more than 8 nodes and view them, so that you could at least see what you're missing out on using the educational version.
  • Renaud Galand
    Options
    Offline / Send Message
    Renaud Galand polycounter lvl 19
    Another easy fix would be to add a "cancel" option when you want to quit and in fact... "whoops I just forgot something". I'm maybe too lazy :]

    God, I'm just in love.

    btw, anybody knows why the real-time update in both node editor and max viewport is that slow, with only a few nodes?
  • Ben Cloward
    Options
    Offline / Send Message
    Ben Cloward polycounter lvl 18
    Tinman - thanks for trying out ShaderFX! I definitely need to do some more testing with mirrored UVs and normal maps. You're not the only one that has mentioned problems with that.

    Renaud - we'll add the cancel button to our "To Do" list. Thanks for the suggestion. The update is slow because Max is slow at compiling FX shaders. Each time you make a change to the shader, Max has to recompile it - and it doesn't happen very fast. Having a faster machine helps some. This is something that we'll work on for future versions, but we're dependent on Max's compile performance to a certain extent.

    Glad you guys like it!

    -Ben
  • JordanW
    Options
    Offline / Send Message
    JordanW polycounter lvl 19
    Here's a screen grab of what I was talking about. The model on the left is using max's standard shader, the model on the right is using the shader generated with the setup at the bottom.

    mirror.jpg
  • Ben Cloward
    Options
    Offline / Send Message
    Ben Cloward polycounter lvl 18
    It's hard for me to tell from that shot exactly what the problem might be - but here are a couple of things you can try.

    1. Make sure you've checked the "Normal Map" check box on the texture map node. You probably already did that, but just making sure.

    2. Try checking the "Flip Green Channel" box on the texture map node. That may help - but you may have already tried that too.

    3. In the settings panel, switch the shader so that it's doing vector math in world space instead of tangent space (or vis versa). After making that change you'll need to refresh the shader in order to see it take effect.

    If none of those things help, I wonder if you could send me a small test case that exhibits the problem. That would help a lot.

    -Ben
  • JordanW
    Options
    Offline / Send Message
    JordanW polycounter lvl 19
    1 and 2 fixed it, thanks a lot ben, i feel really dumb now smile.gif
  • Ben Cloward
    Options
    Offline / Send Message
    Ben Cloward polycounter lvl 18
    Heheh. No problem. I'm just happy it was an easy fix.
  • Joshua Stubbles
    Options
    Offline / Send Message
    Joshua Stubbles polycounter lvl 19
    I'm seeing absolutely no difference between using "world" and "tangent" - even when refreshing the material frown.gif
    So none of my world space maps are showing correctly frown.gif

    *edit*
    Working now.
    Odd. I had to rebuild the shader from scratch for it to work :|


    Okay scratch that as well.
    I can't seem to get max-generated obect-space maps to look correct with these shaders :|
  • killingpeople
    Options
    Offline / Send Message
    killingpeople polycounter lvl 18
    i made a shader, lol.
  • Ben Cloward
    Options
    Offline / Send Message
    Ben Cloward polycounter lvl 18
    Sorry for the confusion. Setting vector math to world space doesn't mean that you should then use world or object space normal maps. You always need to use tangent space normal maps.

    What that setting does is make it so that internally, ShaderFX is transforming all of the vectors to either tangent space or world space before using them for the lighting calculations. If the engine or Max is set up correctly, you shouldn't see any difference between these at all. That's the way it should be. However, Max has some problems with doing things in tangent space sometimes (it's a bug in Max) so I included the option to have the shader do things in world space instead if you want, because it's a work around to the issue.

    I hope that helps to clear things up.
  • Joshua Stubbles
    Options
    Offline / Send Message
    Joshua Stubbles polycounter lvl 19
    Oh... iew.

    Do you guys plan on supporting world space normal maps? Max supports those natively, so I wouldn't think it'd be a huge issue.
  • Ben Cloward
    Options
    Offline / Send Message
    Ben Cloward polycounter lvl 18
    Yeah - that's a good idea. Probably wouldn't be too hard to add. I'll put it on our lists of requested features. Thanks!
  • Joshua Stubbles
    Options
    Offline / Send Message
    Joshua Stubbles polycounter lvl 19
    That would likely push me to purchase it smile.gif

    Nearly all of the inanimate prop stuff I'm working on uses world/object space maps. Being able to view the shaders on those properly would seriously kick ass smile.gif
  • liquidx
    Options
    Offline / Send Message
    liquidx polycounter lvl 17
    I had the same problem. All my .dds files weren't showing up in ShaderFX (I too have polyboost installed), so what I did was find the dds.bmi and copy it into the \stdplugs folder in max. After a restart, I made sure it was loaded via the PlugIn Manager, and voila it worked...
  • Ben Cloward
    Options
    Offline / Send Message
    Ben Cloward polycounter lvl 18
    Vassago,

    You'll be happy to hear that I added support for local/object space normal maps to ShaderFX today (world space normal maps will also work in that mode). The new feature will be available soon along with a ton of other new features - when we announce our upcoming point release. Lots of cool stuff in the works!
Sign In or Register to comment.