Jump to content

Uber Shaders


Recommended Posts

Hi,

 

Anyone making their own uber shader here instead of using the Mantra Surface? Mantra Surface looks like it has pretty much everything. So is there a reason to make your own uber shader? I assume the algorithms used won't be different, right?

 

I guess the UI would be different and possibly be a simplified subset of Mantra Surface?

 

Another reason I ask about this is because I am currently watching "CG-Masters - Shader Interface Design For Artists" tutorial, where the author redesigns the UI of the Mantra Surface. Anyone else do this kind of thing for the standard shaders or make their own simplified uber shader?

 

The final UI looks like this (If it's not ok to post this, please let me know):

 

ZkNZt34.png

 

Just wondering about people's approach in regards to generic uber shaders.

 

 

Thanks :)

Link to comment
Share on other sites

No disrespect to the author but that design makes my head hurt. It is purely a point of personal preference. So if it works for you or others then go for it.

I have a different view when considering uber shaders. For me they can either fall into one of two categories, hard surface/general and character specific. I'm no mathematician so i won't be creating my own surface models or SSS algorithms. So really, my needs are just multi UV map support, generic AOV output, most of which is provided by the factory shader.

In the Mantra Surface Material, i have created my own SurfaceColor VOP and Texture VOP asset that supports multiple maps and arbitrary UV selection. I have another method to automate multiple maps based off file names but i dont have the control of switching certain maps on/off. But i swap this with the default SurfaceColor VOP and promote the params. There are also a few settings that aren't promoted in the SSS module that i need access to since they radically change the way it affects the surface.

shader.jpg

I have thought about doing a tutorial like the fur one on the Mantra Surface Shader but dont know if its something people really want to see.

Though I will experiment more, especially with layering of SSS nodes but there is only so much you can achieve without creating your own models. The only thing i will add to my own shader is a MasterControl VOP for turning certain attributes on/off (ie Colour, Spec1, Spec2, Disp, Bump etc). Also the shader itself can use some trimming since filesizes can climb with each instance.

  • Like 1
Link to comment
Share on other sites

Thanks alot Andrew, your post is very informative as always.

 

I also thought the proposed UI was a little hard to use/look at. I could fix the layout, but as far as functionality goes, I thought maybe this was something others were doing as well. I find seeing other people's workflow very interesting for sure.

 

One of the main reasons the author did this was because he said was that the parameters at the top were for the most frequently used options in an uber shader. So coming from Max, I understood his stance.

 

Is that something people try to mimic in their own workflow? I haven't really slowed down using the Mantra Surface shader but I don't spend hours in creating materials every day.

 

For example is it a good idea to have all the texture map options in another tab, like in Max?

 

VFqWZSu.png

 

I have never used Arnold but looking at their uber shader in Maya, I see that they also use the same tab based layout for each component, as opposed to a master section for the most frequently used parameters:

 

qApE30r.png

 

 

 

As for your own workflow, it looks very interesting. When you said multiple map support, I thought you were using multi parameter interface but are you actually adding your own texture VOPs inside the shader by hand or a button that does this for you automatically? Or did you hard code 7 maps as the number of maps you might need in most cases?

 

Do these texture maps show up at different parts of the same surface, or are you blending/mixing them? I assume it's the former. Or is it like 1 map for the base and then additional maps that act like stamps on top of this? Either way sounds pretty powerful :)

 

When you said turning attributes on or off, how does it work? If you say there is no color, then your color is bypassed, and the default gray/white is used or the texture map is turned off?

 

If it's a tutorial coming from you, of course people would want to see it. Your fur tutorial is easily 100 times better than most paid tutorials out there, and that's saying something :)

 

 

 

Lastly how come new material instances increase the file size considerably? I thought in the end the shader code was in kilobytes, no? Also related to this, if the same shader was written in VEX, as opposed to VOPs, would this help with file sizes significantly?

 

 

Thanks again :)

Edited by magneto
  • Like 1
Link to comment
Share on other sites

Regarding the interface design, I would suggest you look for good designed ones, specially Modo's shading organisation is really nice and very well divided.

 

About Ubershaders though there is that love/hate relationship about a ubershader that can't mix multiple BDRFs, it is just not right and no matter how many maps we add the fact is that layering of shaders imho is fundamental.

 

 

Also due to interface limitations in Houdini it is hard to construct but the thing I am considering is having a mixer node in VOPS that can deal with it and a simple yet powerful (and intuitive) mini-uber-shader, one that is packaged (unlike mantra surface) with the idea of allowing the users mess around easily.

 

Anyway… too late to think clearly… Still miss Softimage Phenomena approach...

  • Like 1
Link to comment
Share on other sites

Is mixing multiple BDRFs relating to blending multiple materials? Because there is also a divide there :)

http://forums.odforce.net/topic/19751-is-it-possible-to-blend-2-materials-at-the-material-level/

 

Can you please elaborate on your mini-uber-shader idea? Is it like having self contained modules for each component like reflection, refraction, SSS, etc that you drop in and suddenly your material has all these components but not more? That sounds interesting and would make materials more compact but aren't some components already like this, for example Surface Color VOP?

 

What about a VEX shader when modified spits out a more compact code that doesn't have unused components in it? Is this sensible?

 

We need the shader maestros gathered for some consensus :)

Link to comment
Share on other sites

...

Can you please elaborate on your mini-uber-shader idea? Is it like having self contained modules for each component like reflection, refraction, SSS, etc that you drop in and suddenly your material has all these components but not more? That sounds interesting and would make materials more compact but aren't some components already like this, for example Surface Color VOP?

...

you have that already and are free to use them

Physically Based Specular (for reflection and refraction)

Physically Based Diffuse (for diffuse or translucency)

Physically Based SSS (even though it would be nice to have BRDF version instead of emission fake)

...

 

maybe it would be nice to have to have something inbetween like feature rich physical reflect/refract node (with absorbtion, spectral diffraction, irridescence, each one of them can be separate utility node within) etc.

simply several cleverly packed assets, but still having access to lower level components and maybe even higher ones

 

blending BRDFs is easy, just slightly unintuitive with surface model as it is already computing lighting from BRDF within

 

in my opinion Surface Model is not artist friendly and has quite lot of bugs that make it non-physical in certain occasions and the way that it averages components simply to conserve energy is not intuitive at all, I like priority based blending much more and it's easier to mask out components that way

Edited by anim
  • Like 2
Link to comment
Share on other sites

Designing an intuitive artist-friendly shader UI seems harder than writing/making the shader itself :) The physically based VOPs are very powerful but if you use all these, then I think there will be several more times parameters to tweak than Mantra Surface. Also it will take a lot of time to set up your minimalist shader I think.

 

I didn't know Surface Model wasn't physical. How would an artist friendly version would look like though?

 

Basically I wonder what a perfectly designed uber shader UI looks like? I checked out modo shaders but it seems like Max's? Not sure who got it right but would be cool to even design such a UI and/or workflow to show/inspire people how a better shader workflow would be like IMO.

 

I guess when making these sort of systems, it has to contain all kinds of functionality to be feature complete which I assume is why the VOPs are much more comprehensive than Mantra Surface. With or without them, how would a minimalist uber shader be designed that's super fast to tweak, has great layout with minimal distance when moving within related options, etc and be very artist friendly?

 

Or maybe everyone's ideas of this uber shader is different :)

Link to comment
Share on other sites

Designing an intuitive artist-friendly shader UI seems harder than writing/making the shader itself :) The physically based VOPs are very powerful but if you use all these, then I think there will be several more times parameters to tweak than Mantra Surface. Also it will take a lot of time to set up your minimalist shader I think.

Surface Model in VOPs was great step from H10 materials to unified and quite powerful material type,

it uses powerful nodes inside, just the setup is not the best

and it's not really about UI, but the functionality

the whole mentioned system of averaging components is painful

imagine you have only 2 components diffuse and specular and no fresnel just plain 2 simple 100% layers

and you have specular mask like b/w checker, 99% of artists will expect white parts to be 100% specular and black 100% diffuse, but in Surface Model you need you will get

white parts 100% diffuse + 100% specular -> conserving => 50% both

black parts 100% diffuse + 0% specular -> conserving => 100% diffuse

to get correct results you need to mask diffuse by complement of the same mask (unnecessary step that should be handled inside)

it leads to other problems as well like

changing specular will change diffuse ratio as well making the shader tweaking hell if you are not aware of what's happening

on top of that fresnel doesn't work correctly as it doesn't care about intensities of the components so it will scale diffuse down fully even if specular contributes only 1% at max etc.

not mentioning only 1 fresnel for 2 specular layers (making impossible to have metal with clear coating without breaking into the shader)

add more components and you have hard to manage non user friendly ubershader

all mentioned things are flaws of design and architecture of the Surface Shader itself, not really limits of mantra

and because all necessary components are there, it's quite straightforward to build clean and properly functioning shader which you can reuse for almost any purpose

it would be however nice to get more PBR nodes (like SSS, spectral dispersion and whatever I mentioned in previous post)

so again, for me UI is not the problem, however I like clean, compact UIs with all the main settings together

I don't care about maps build into the shader as I like connecting them into it since then I can process textures, use procedurals, layer or do whatever I want to them without requiring huge shader (which would still not allow me to do everything I want no matter how many preconfigured map slots or procedurals it would have)

Softimage users will understand, Render Tree is so nice balance between Hi-level/Lo-Level control

simply clever mid-level nodes for amazing artistic experience + lo-level for power

  • Like 5
Link to comment
Share on other sites

I would suggest to look at Modo for inspiration, is is seemingly simple to read and understand, well laid out and not scary at all but this is not a ubershader of course.

 

With regards to Ubershaders I think by their own design they are doomed, trying to cram so much functionality make the UI not practical and difficult to learn.

 

When I mentioned mini-uber-shadres I am thinking about a version of MantraSurface that does not try to do too much yet invites users to plug and play. The current implementation is very nice but when you dive it is unnecessarily complex to read and it should not.

 

And now have a look at Maxwell render material approach

http://support.nextlimit.com/pages/viewpage.action?pageId=16810385

 

 

and..

http://support.nextlimit.com/display/mxdocsv3/Blending+BSDFs

 

and..

http://support.nextlimit.com/display/mxdocsv3/Stacking+Layers

 

and to make it even easier...

http://support.nextlimit.com/display/mxdocsv3/Material+Assistants

 

If we could architect shaders the same way I would be super-happy.

 

 

hope it makes sense.

Edited by jordibares
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...