View Full Version : ILM, energy conserving shader

06-04-2009, 08:05 AM
interesting ILM shader,
energy conserving shader


06-04-2009, 09:12 AM
I'm not really sure how that's different than using a Delta shader, or just setting your diffuse value to be the inverse of your reflection, and using a completely HDR lighting environment? The trick is matching the exposure of the film camera, and using linear lighting, which LW only supports through very hack-y workflows.

06-04-2009, 10:08 AM
...from what i understood their shader makes the surface look good even if you decide to change the lighting setup
(e.g. from bright sun to dark night)

06-04-2009, 10:17 AM
Oh I see - MAGIC shaders ! :p

Energy conserving is.. energy conserving.. Diffuse+reflection=100% or less (your colour).

That article was a lot of.. hyperbole, with no other information other than 'energy conserving shaders' which... is not rocket science, it just requires and understanding of what you are doing! Or using Delta or Conductor if you don't :D

06-04-2009, 10:34 AM
yeah, still a neat thing though, it's just a matter of time before other apps get this as well.

...until then, i'll stick to the Delta team... :)

06-04-2009, 10:37 AM
If you want a simple explanation of energy conserving shaders, then just ask :) I'm no real expert, but I've been doing it, with ease, for quite a while now! :) Not having ILM's render farm means I don't use Delta :p

06-04-2009, 10:52 AM
i'd love that... :)
is it somewhat easy to explain?

06-04-2009, 12:29 PM
You can find energy conserving option in Modo.

06-04-2009, 04:04 PM
It's not too hard to explain. I will have a think, and maybe write a mini-tutorial.

06-04-2009, 04:13 PM
Why not just use any of the advanced node Materials? Aren't they all energy conserving?

06-04-2009, 04:34 PM
Slowness. they are all slower to render than normal nodes or surfaces - by A LOT!

06-04-2009, 04:40 PM
Slowness. they are all slower to render than normal nodes or surfaces - by A LOT!

Damn you and your render efficiencies! ;)

06-08-2009, 05:41 PM
For starters, yes... LWs material nodes are energy conserving. Nothing new or revolutionary with ILMs approach, appart from that they may be the first one to use it with a renderer that, by tradition, doesn't do raytracing as good as other renderers.

Secondly, energy concerving shaders WILL render slower than other shaders because the increased computation that is needed, especially with materials that have translucency or transparency. If you can't take the renderhit, work around it, or get a farm that is equal to the one over at ILM.

As a sidenote to rendertimes, when ILM was here to talk about the Pirates movies, they told us that their rendertimes easily went over 6 hours/frame and that it could be just a single character.... yes... they have insane number of rendernodes.


06-08-2009, 06:23 PM
...thank god for interpolated radiosity and baking :)

06-09-2009, 01:05 AM
Its unfair to compete ILM, its like David against Goliath.
They have the luxury of resources, in house development, freedom of innovation plus...plus...plus

Of course a single programmer often makes the difference, he can develop something cool but this cannot go on and on.

As far as such level of realism / computation power, ok, I have a fast network but in parallel to ILM, is like a ZX Spectrum. I cannot afford the extra rendering penalty.

06-10-2009, 11:28 PM
lol they spend all that time jerking themselves off in the article with a mediocre render of a robot that doesnt really look all that great. i see much better renders with standard mia shaders in MR. or basically any decent lighters output.

its just a press release to impress people who have no clue ;)

as far as energy concervation, it boils down to: light goes in = light goes out.

07-10-2009, 05:24 PM
interesting ILM shader,
energy conserving shader


Yes, I think it's indeed interesting. The mix of diffuse/specular shading (from IBL rigs) and ambience/reflections (from GI solutions) is very common these days. Why? because we can solve one aspect of illumination with one solution, and other aspect of illumination with another solution. For example, we can solve the irradiance component with a GI solution (ambience) and the radiance occlusion component with a IBL rig (diffused), and store then each component in independent buffers (this is possible in LW, too). The same thing happens with reflection and specular. But the balance between both solutions is commonly made by sight, since energy conserving shaders doesn't assume this new kind of lighting setup. So what it seems new in the ILM approach for their energy conserving shader is that it should apply a balance between the combined usage of ambience/reflections and diffuse/specular automatically. Thing that doesn't make a common energy conserving shader these days - though it's indeed possible in LW too, I think :)


07-10-2009, 07:24 PM
so, it is auto-adjustable textures so to speak? yes? http://forums.cgsociety.org/images/smilies/smile.gif

07-10-2009, 11:40 PM
We could say that, but it could be a bit more complex too, since this balance doesn't need to be 50%/50% for all cases. One might need to adjust the balance ratio according to the lighting setup, too.


P.D. Btw, are you stealing smilies from other forum? http://forums.cgsociety.org/images/smilies/grin.gif

07-10-2009, 11:51 PM
Lol... http://forums.cgsociety.org/images/smilies/smile.gif no, not at all... http://forums.cgsociety.org/images/smilies/arteest.gif

07-11-2009, 04:46 AM
Yeah I have just been having a play with SIBL and man those presets are working great, I love the shadow catching plane, it's working better than (if similar too) my solution :D

The only thing is yes, sometimes you have to hand-adjust the lighting and reflection levels, as it can sometimes be TOO much. Partly this is because there's no real 'exposure' tools for the camera (except post), so you're always going to have to fiddle with it.

07-11-2009, 05:57 PM
Tobian, would like to hear about your solution for shadowcatcher, too http://forums.cgsociety.org/images/smilies/smile.gif

About the scenario proposed, it's like if besides sIBL, we would be using the Lighting Based on Image Tool Conversion Helper by Blochi. In that case for example, let's say a surface needs 50% for reflection shading (assuming 50% for diffuse and no transparency). If we use specular at 50% (faked reflection) and real reflection at 50%, we'll end up with a 100% value for that component, not the 50% we need. In a case like that, we'd want to automatically diminish both at 25-25% or 30-20% or 40-10% or whatever, and at the same time keep this reflection component (composed by real reflection and specular) inversely proportional with diffuse shading (composed by diffuse and ambience lighting). So this energy conserving shader should be taking into account diffuse lighting, ambient lighting, specular and reflection, balancing all at the same time.


07-12-2009, 04:16 AM
Yes, I think that would be quite easy with a node. But it's possible with a node setup as well. Or even with expressions in the old layer system. Here's a simple test with a node setup:


The gradient (scalar) is controlling the fresnel effect (I prefer to use an incidence angle gradients for this, due to we have more control over the fresnel effect).

First, intensity of the gradient is 0%, so no reflection, then when we adjust the gradient at 50% and 100%, reflection and specular shading get activated proportionally to diffuse (notice the invert node).

But the curious thing is that these two components are tied one with each other. Reflection Balance (a scalar node) controls the ratio between reflection and specular. First .5 (that is to say 50-50%), then 0.2 (20-80%) and later .7 (70-30%). The good thing is that we don't surpass the 100% for the reflection component.

The other components tied are glossiness (specular) and blurred reflections trough Diffused Reflection. We begin with 70% blurred, then 30% (almost sharp reflections and notice the specular glossiness gets sharp too), later with 90%, glossinness gets expanded, and blurred reflections are increased as well. The ratio for the relationship of both components can be also adjusted.

I'm using shading nodes there (sorry about CookTorrance bug), but the same thing can be connected directly in surface channels.

The setup could be improved even more. We could for example adjust independently, the shading response to shadows from the surface's diffuse shading.


07-12-2009, 06:22 PM
that's mighty nice http://forums.cgsociety.org/images/smilies/smile.gif
hope to study it more a bit later on.

ey, Gerardo, btw, do you do this kinda stuff for a living?
i've noticed you really know your way around nodes and stuff... http://forums.cgsociety.org/images/smilies/smile.gif

07-12-2009, 07:33 PM
Yep, well, in 15-16 years doing this professionally (and using LW), one learn one or two things ...though nodes are something still new for me http://forums.cgsociety.org/images/smilies/smile.gif

Btw, I'm attaching the above node setup if someone wants to improve it further.


07-13-2009, 06:19 AM
Hmm couple of things.. Can you save out a .srf verion, to make sure I am plugging those in right...

Not 100% sure really what you've done a lot of that for...

1) why not use the Fresnel node, to generate Fresnels, and input the right value for the metal?

2) the gradient you've used seems to produce an unsightly dark halo (not sure why)

3) Why all the multipliers and weightings? Just observations?

4) why cook-torrence? I was using that at first, but as other members have pointed out, it (incorrectly) clamps at brightness of 1, instead of punching through, to give a bright specular highlight...

To be fair, I never seem to be able to get Speculars to work properly myself, so I prefer to use reflections if I can these days :D

07-13-2009, 03:23 PM
Interesting questions:

1. Wondering, what is the "righ value"...hmm? Consider reflactance curve doesn't behave in the same way for all materials. What we have in Material node or in a Fresnel node is a curve that behaves in a generic way. But in reality, there are several types of curves for frenel reflactance and they can be different, even for the same type of material. This has not to do only with the IOR but with the way the reflactance curve behaves in two different materials, even with the same IOR. So if you know how to translate real values to a gradient, you can indeed get a more accurate fresnel effect with a gradient than with a fresnel node.

2. That's in fact a natural effect related with fresnel in some metals:


The tension at the end of the reflactance curve produces that effect. We can approach a similar curve (maybe in a more artist-friendly way) with DP_Curve Filter Node:

No accuracy in this sample, but you get the point http://forums.cgsociety.org/images/smilies/smile.gif

3. The multipliers and weightings are for adjusting the ratios between glossiness and reflection blur in order to get a similar appearance between both parameters since they are not proportional by default.

4. Because CookTorrance is a very flexible model for metals, from polished chrome:


to unpolished bronze:


It indeed has that issue, but it has a solution too. Just don't want to posted in the previous setup to not complicate more the things. This fix the problem:


Simply adjust the value in scalar node and CookTorrance problem solved http://forums.cgsociety.org/images/smilies/smile.gif

Just to clarify, the energy conserving setup that I've shared here is simply a proposal (as a starting point) that can be changed or improved according to each particular case.


07-22-2009, 12:04 PM
Geez, only ILM can give article-long information about their production process without actually saying anything informative at all.

07-23-2009, 03:13 AM
interesting ILM shader,
energy conserving shader


Have you noticed also what they say about their DI proxy for the CG work? this is indeed interesting because what is commonly made is to set up this in a compositing package, not directly in the CG process.

In this regard btw, one of the articles I'm writing for HDRI3D magazine cover a bit of this topic too, since currently, Lightwave is the only 3D package where this can be made (for free) in the proper color space http://forums.cgsociety.org/images/smilies/beerchug.gif


07-24-2009, 12:12 AM
yes, i think compositing and adjustments will be done inside 3D apps in the future...
it is just so much easier and more logic.

i think 3Dapps will have two render outputs in the future, a regular one, and an color adjusted one...
3D artists will have to get more into compositing... cool by me http://forums.cgsociety.org/images/smilies/smile.gif