Unity Community |
Hi!
I have been a bit bored after work for the past few weeks and my Unity3 beta arrived so I decided to make a shader editor.
I approached the task initially to see just how extensible the Editor API's were and to see if it could be done (fully featured and at a commercial standard). And after an evening or two I was knee deep in the unity3 codebase!
There were a few things I wanted to do when making this editor:
*High quality standard
*Rich feedback to the user
*Realtime previews of the current shader
*Loading / saving of graphs
*Shader export
*Complete support for the unity3 materials system (That aras and co have done an amazing job of!)
*Fits into the unity design principles. Easy to use / simple / 'just works' - this was very important to me!
A simple shader (Updated for Beta 4.0)
Tutorial Videos:
Beta 4 - http://vimeo.com/20994055
Beta 1 (Still helpful!) - http://www.vimeo.com/13825713
FAQ Post:
Some questions, answered with demo's: http://bit.ly/hnXhNu
------------
Contributers
Stramit
Texel
Releases
5 August 2010 - Beta 1.0 - here
6 August 2010 - Beta 1.1 - here
1 September 2010 - Beta 2.0 - here
6 September 2010 - Beta 2.2 - here
11 November 2010 - Beta 3.0 - here
27 November 2010 - Beta 3.1 - here
9 January 2011 - Beta 3.2 - here
10 January 2011 - Beta 3.2a - here
19 January 2011 - Beta 3.2b - here
11 February 2011 - Beta 3.3a - here
12 February 2011 - Beta 3.3b - here
14 March 2011 - Beta 4.0a - here
24 December 2011 - Beta 4.0b (Unity 3.5) - here
Documentation
User Documentation - By Texel can be found here.
Some Images users have created with SSE materials:
Procedural Lightening Created using Vertex Shaders in SSE by BoxMan
A scene made by warby, where the shaders were made in SSE
A snow shader (amount of snow changes based on normal) by Svyatoslav
A planet by Clamps, you can follow his tutorials to make this
Open Source Link
Here is the link to the GIT hub project. Have fun
https://github.com/stramit/SSE.git
Last edited by Tim C; 12-27-2011 at 05:30 AM.
Wowzer!
Been following your development for a little while now & must say I`m extremely impressedReally looking forward to giving it a try soon!
Keep up the great work!
.
"Fast, fat computers breed slow, lazy programmers."
Neat. Unity really needs something like this so that more people can harness the power of shaders without having to be an advanced programmer.
What would really make this great, besides all those millions of functions you have built in, is to have `presents` or `templates` of various little pieces of typical shaders that you can just drag and plug in without having to start from scratch.
- ImaginaryHuman -
See Shader Wizard - CG Shader Generator on the asset store for only $20.
See Texture Helper - procedural texture/pixmap handling on the asset store only $20.
Finally something that looks like it belongs into UnityI am glad you didn't choose a weird GUI or funky colors. This blends in nicely.
I'd love to fool around with it!
Thomas P.
Really excited for this and the possibilities.
Excellent job, this will make tweaking simple surface shaders much easier for most users.
Is it fairly simple to add new node types? If you're not selling this, make sure to put up a donate button somewhere, I'm sure lots of people would like to thank you.
this is awesome,
they should implement this type of shader editor in unity
well cant wait to try this,
great work
Not meaning to bitch but this struck me as funny:
*High quality standrd
If you are successful in completing this project, you will be a very popular person here!![]()
Brilliant work!!! Can't wait to get my hands on the Beta and take it for a test drive.
Regards,
Matt.
Montague's Mount - A psychological thriller: http://www.montaguesmount.com
Web (paid and free tutorials): http://polypusher.net Twitter: thePolyPusher
Unity / modo tutorials: http://vimeo.com/channels/115146
Brilliant! Looking forward to trying this out
Looks nice
Will be interesting to see where its going to keep shader model restrictions and alike in mind but its definitely a solid base already at least from the visual look
These confuse me. I never bothered to learn them. But, what exactly DO these node base editors do?
if you had the chance before to write shaders then you will understand why these node based editors are a must. Instead of worrying about syntax and hell of coding you just drag, drop and link ur nodes and ur off to go.Originally Posted by CreativeCoding
These confuse me. I never bothered to learn them. But, what exactly DO these node base editors do?
Nice work!
Hi,
Amazing,awesome,impressive,incredible, brilliant etc etc.. Already read this before( http://forum.unity3d.com/viewtopic.php?t=36679 ). Tell me that this project will come out.![]()
JP
Nothing gone. We need to reinvent the Wheel.
Yes!
The only things I would actually change are to make the linear node links turned into ease in/out links, and have a node property preview displayed on the node (like how the unreal engine mat editor does it). Can't wait for the open beta, you're saving us from shader coding hell.![]()
CC: The Unreal Engine has a mat editor that uses node based shader programming. It's because of this that games like Unreal Tournament 3 have such incredible shaders. Because they're so easy to make. I played around with the editor in Unreal and was able to edit the shaders and make new, completely different ones on my first try using it. Couldn't have done that to save my life in shaderlab.
Needless to say, I want this in Unity.
P.S. Please be sure the beta (in whatever stage it's in) actually does come out. So that way we at least have something to extend should you cease to work on it (for whatever reason). I only say this because Kurt's shader editor is stuck in development hell (like zjp points out) and he never posted a beta for us to continue.![]()
In Soviet Russia, game develops YOU!
Thanks for all the kind words everyone. It's great to hear that you think you will find this useful!
Thanks. For the most part I've found working with the unity API's to be great, although I did encounter a few API limitations and idiosyncrasies while I was working.Originally Posted by brokenpoly
Wowzer!
Been following your development for a little while now & must say I`m extremely impressedReally looking forward to giving it a try soon!
Keep up the great work!
The node API is really easy to expand if you know how to program in c#. There are a few 'functions' built in that are non standard (like the UV pan, swizzle, and splat). And I intend to add more / do some tutorials on how to add custom nodes.Originally Posted by ImaginaryHuman
Neat. Unity really needs something like this so that more people can harness the power of shaders without having to be an advanced programmer.
What would really make this great, besides all those millions of functions you have built in, is to have `presents` or `templates` of various little pieces of typical shaders that you can just drag and plug in without having to start from scratch.
Very simple to add new node types. I designed it specifically to be easily extensible. You just have to inherit off 'Node' or 'InputNode' ect and implement the interface. There is some field markup required for serialization / getting the node in the nodes lists. But it's quite trivial.Originally Posted by niosop
Excellent job, this will make tweaking simple surface shaders much easier for most users.
Is it fairly simple to add new node types? If you're not selling this, make sure to put up a donate button somewhere, I'm sure lots of people would like to thank you.
Currently is uses the basic unity3 lighitng with a slightly modified lighting shader. I plan to add support for custom lighting shaders ect, that will probably be in beta 3 though.Originally Posted by dreamora
Looks nice
Will be interesting to see where its going to keep shader model restrictions and alike in mind but its definitely a solid base already at least from the visual look
They make the creation of shaders a content / art task instead of a programming task. This isn't always so (ie some specific hand crafted shaders for post processing ect). But in general I think it's a fair statement. I have seen some amazing shaders generated in graph editors. But I have also seen some abominations. It's all dependent on the skill of the artist.Originally Posted by CreativeCoding
These confuse me. I never bothered to learn them. But, what exactly DO these node base editors do?
I want to use bezier handles for the lines, it's something I still have to add in though.Originally Posted by theinfomercial
Yes!
The only things I would actually change are to make the linear node links turned into ease in/out links, and have a node property preview displayed on the node (like how the unreal engine mat editor does it). Can't wait for the open beta, you're saving us from shader coding hell.![]()
I currently don't have plans to display the default texture / color on the node. This could be added pretty easily but I think it's a bit confusing. Unlike unreal in unity shader textures / inputs are frequently overridden (via a material or the preview node in this case). I think it adds a level of complexity that I was trying to avoid. I could be convinced otherwise though.
It think the reason that unreal's shaders look so good isn't because of the material editor per se, but by the number of people using it / it's use in AAA games.CC: The Unreal Engine has a mat editor that uses node based shader programming. It's because of this that games like Unreal Tournament 3 have such incredible shaders. Because they're so easy to make. I played around with the editor in Unreal and was able to edit the shaders and make new, completely different ones on my first try using it. Couldn't have done that to save my life in shaderlab.
Needless to say, I want this in Unity.![]()
The code for the beta is done, unless I come across any crazy show stoppers. I haven't released it yet because there is no documentation. I don't think I will write too much, but a simple tutorial and some other simple stuff would be nice!P.S. Please be sure the beta (in whatever stage it's in) actually does come out. So that way we at least have something to extend should you cease to work on it (for whatever reason). I only say this because Kurt's shader editor is stuck in development hell (like zjp points out) and he never posted a beta for us to continue.![]()
I don't think it would confusing, and personally it would be very helpful in debugging. Once shaders become fairly complex, it may sometimes be difficult to keep track of what is going on, especially if you're making changes to an older shader. Its nice to see which texture is coming in where, as well as. Even nice would be to have small icons for representation of each node. Just for the sake of getting a quick overview of the shader. That would probably be some more work however. Simple shaders it really doesn't matter, just a thought for once they start filling up.I currently don't have plans to display the default texture / color on the node. This could be added pretty easily but I think it's a bit confusing. Unlike unreal in unity shader textures / inputs are frequently overridden (via a material or the preview node in this case). I think it adds a level of complexity that I was trying to avoid. I could be convinced otherwise though.
Great work regardless though. Looking forward to testing it.
I think optimally, also for performance, would be if you had a second (toggle) button on the node which either shows the previous as overlay or expands the node to include the preview.
I agree that having all on preview mode can be very confusing especially as it means that you need to provide input textures too to make any sense.