ShaderFusion (node based shader editor) released!.

ShaderFusion is now available on the Unity Asset Store. Visit shaderfusionblog.com for more info.

If you just upgraded to Unity 3.2 and find that you are getting errors and broken shaders, redownload and install it from the asset store and it should be fine. Be sure to delete your Assets/ShaderFusion directory before updating though.

Heres some features:

*Works with the free version of Unity.
*Works with both forward and deferred rendering (although deferred is strongly recomended).
*Simple interface and and optimized workflow. Shader graph data is stored within the shader file.
*Powerful enough to make complex shader model 3 shaders, while optimized enough to make advanced shader model 2 shaders.
*Supports multiple blending modes.

And some screenshots:

Just WOW!

Nice work.

I will have to try this!

Any chance that you and Stramit (thread here: http://forum.unity3d.com/viewtopic.php?t=60174&highlight= ) might combine efforts?

Looks awesomely useful… just gotta wait for Unity 3 to be released :slight_smile:

Lol, hugely requested feature for the longest time, and now two different implementations released at almost the same time. Will check it out and give feedback this evening.

wow.finally,good job!!

Looks very neat :slight_smile:

Indeed.
Who knows perhaps we are lucky and they join forces or something, cause 1 top editor with a plentitude of nodes etc is better than 2 good editors with less nodes :wink:

I second the request for combined efforts on Stramit and Kurt’s shader editors. This editor is great too!

Thanks everyone, Heres some things I want to do for following versions:
*User can easily set fallback shader per shader.
*User can easily set shader LOD for scaling on low end cards.
*Look into accessing render buffers for doing stuff like depth blending and reflection/refraction.
*Make a better way for users to make their own nodes(and clean up the code of the existing nodes).
*Tooltips for each node.
*Be able to create a new shader from the UI.
*Setting shader properties like double sided, etc…
*Some form of error checking.
*Possibly keeping track of the output data types for each node and color coding the output connection based on that.

And some known issues in the current version:
*VertexColor node was broken(fixed but unreleased).
*Using UV1 and UV2 in the same shader will cause the shader compiler to fail. This seems to be a problem with the current beta shader compiler on Unitys end.

I take it from reading the “following versions” bit that this release won’t yet do refraction?

Clamps, Not without a custom node, but I have already made a depth texture lookup node and a depth blend node. I will look in to refraction next.

Ok I added depth blending and refraction (scene color access). SceneColor node will definitely only work in with Unity Pro, Im not sure about the SceneDepth/DepthBend though. If anyone has a use for this right away I will try to get another build out soon, otherwise it will be in the the next build.

On a side note if your using U3B5 (as apposed to U3B4) you may notice that some of the shaders generated are rather broken. I have fixed this and the fixes will be in the next release.

Heres a screenshot of 2 water shaders I made Using the new SceneColor and DepthBlend nodes:

And heres a shot of the SimpleWater shader graph.

And heres a shot of the AdvancedWater shader graph (its a bit crazy):

this is awesome!!! finally we got it!!! congrats!!!

Some screens look a bit messy :stuck_out_tongue: hope it comes with some kind of auto node arranger for when the thing becomes too dirty.

Simply amazing.

Truly inspired…
Are these node trees savable and sharable?

Be nice to once folks get some time to experiment, to start building a base shader library that others can add and build from.

For Unity3 only :frowning: !!!
You started this project with Unity 2.6.X. Why not just publish a (another) version “as is”?

JP

ZJP, The shader system in Unity3 has been greatly improved, allowing me to make the shaders much more optimized and allowing more features. The 2.x implementation was quite messy.

brendang, yes the shader graph data is stored within the .shader file so theres only 1 file to deal with. To make a variation of a shader you simply duplicate the shader and open/resave it in ShaderFusion(shader names are taken from the shader file name). To share the shader tree with others you just give them the shader file.

As far as trying to keep the node graphs cleaner im thinking of implementing 2 features. One would be the option to align nodes to a grid, the other would be a “reference” node which would reference another node in the graph and out output exactly the same thing as the referenced node. Perhaps some kind of line would be drawn to the referenced node when its selected.

Hi, figured I’d give my impressions of both of the node based shader editors that have been recently released.

Things I like about Kurt’s:
Storing node layout inside the shader.
Right click to break links.
Delete key to delete nodes.
Middle mouse to pan around.
Things I like about stramit’s:
Categorization of node types makes it easier to find what you’re looking for.
Previews, although they could use some work.
Error checking and coloring of nodes depending on status.
Things I would like to see added to both:

Zooming in and out.
Tooltips on hover, or small documentation window popup on select that gives quick description and input and output format.

At the moment I’ve had a little more luck getting the results I want w/ Kurt’s (mainly because I figured out how to swizzle in there), but small hand edits of ones generated w/ stramit’s gave me the desired results as well.

I haven’t look at the code to see how easy it will be to add/extend node types in either yet, but I’ll dive into that next.

Anyways, great job to both of the authors, I really look forward to seeing what you guys come up with next.

Thanks for the tips niosop, I definitely plan on incorperating some of these things, although I dont think I will ever implement a preview. This is a shader editor, not a material editor so a preview is completely useless in my opinion. I would rather keep the UI compact so that the user could see the final result in the scene without minimizing or moving the window around.

I have thought about turning this into more or a material editor instead of a shader editor, but in the end I think this would be more of a workflow inconvenience than helpful.

I have played around with the idea of color coding the nodes, but in the end I didnt like it. Im more likely to add icons to different types of nodes. I did a mockup of how icons would look:

What do you guys think? It does kinda interfere with the text on the nodes and im not sure how well will work on nodes with more text.

Yeah, previews really aren’t needed. By color coding I mainly meant slight shading to indicate different conditions. Like nodes that don’t have all required inputs could be shaded purple, nodes with improper input or conflicting names might be red, etc. Just gives you really quick feedback on if you’re missing anything or have to fix anything without having to check the console for error messages (I have gotten duplicate input name errors several times).

I like the icons, it lets you see right away what type of node it is.