Chaos Corona Forum
Official Stuff => News => Topic started by: Ondra on 2014-07-10, 20:59:25
-
As a first step towards more physically plausible materials, I've added new energy conservation mode that automatically dims diffuse color as reflection is increased. It should be faster, simpler, more realistic, and is consistent with what mental ray and vray does.
Because it changes the way materials render, it is disabled by default so existing scenes do not break. Any newly created materials have this mode however enabled. It is a simple checkbox in advanced material tab, so you can switch it any time.
-
Great idea. Thank you.
-
added buttons to the Material Converter to switch all old materials to the new mode (or vice versa)
-
And as a little bonus, with addition of this new energy conservation mode, translucency fraction is now mappable! :)
-
Nice. Looking forward to test how it compares with and without.
-
+1 i would love to see the comparison too
-
Comparisons!! +1
and a little more explanation about the subject wont hurt ;)
-
Why? Why do you always add such wonderful features when the ends of my deadlines are drawing nigh - how will I be able to resist the temptation to test now ??? Jokes aside - sounds like both of those are some really useful features, so I probably won't resist the temptation any longer - to hell with deadlines :)
-
Really good idea! Than you!
-
It wonderful. Thank you.
-
I think you all overestimate it a bit. It's not a new killer feature. It will just make materials slightly more accurate, and it will make you naturally create materials with slightly lower average albedo. But it will not make your images instantly more realistic. It's more like when Corona switched from XYZ to WideRGB colorspace. It made some difference, but no one was suddenly producing better renders.
On the other hand, it could noticeably improve performance in scenes with large amount of bright reflective surfaces.
-
Here is a quick ugly comparison. Not a "real life example" but I just wanted to see the difference.
-
Here is a quick ugly comparison. Not a "real life example" but I just wanted to see the difference.
Nice example, is it PT+PT or HD?
-
Niiiiicccceee!
(http://a.gifb.in/1237811519_chuck-norris-approves.gif)
Slowly moving towards PBR. Great.
-
That would explain why some of my tests looked as if there's too much direct light contribution in some cases - thanks for 'fixing' this ;)
-
Here is a quick ugly comparison. Not a "real life example" but I just wanted to see the difference.
Nice example, is it PT+PT or HD?
PT+PT but there is no room modelled, just black void and 2 rectangle lights.
-
Cool, I was just making sure - you can get random variations with PT+HD that could be confused for the energy conservation change
-
Wich one is on ? i guess the "en2.jpg" ?? its also faster?????
-
Yes, en2 is using the new mode. It may be slightly faster because some objects become a little darker but the difference may be also because I was rendering in the background and doing other stuff.
-
Your speed improvement is probably due to random effects. I measured 1-4% improvement in my more complex scenes.
-
THIS GREAT new feature ......
AND IS THIS GOING TO BE INCLUDED WITH A 7.1????
-
Very interesting, fellows!
PBR - is a very good direction!
My test
1. with En.Saving OFF
2. with En.Saving ON
-
And as a little bonus, with addition of this new energy conservation mode, translucency fraction is now mappable! :)
How hidden is THAT !
Super !!!
-
Greatly appreciated!
-
Very interesting, fellows!
PBR - is a very good direction!
My test
1. with En.Saving OFF
2. with En.Saving ON
Thanks for the comparison test. The difference is more apparent on this one and, yes, it looks more realistic. Nice addition!
-
Is this also included in the standalone version?
-
yes
-
Where is the checkbox? I can't see it in the "Advanced options" tab of the materials. I'm using Corona Alpha 7.1.
-
standalone: on by default in new builds, cannot be turned off
A7.1: does not have this feature. wait for the 1.0
-
Oh, ok. Thanks for making it clear! :)
-
Hey guys
Could anyone please elaborate a bit on the physical and technical reasoning behind the energy conservation feature?
It was most curious to try this out on the new Corona 1.0, but I only expected a slight darkening on reflections (as seen on this thread), and I'm actually getting quite drastic differences when I turn on/off the legacy mode, which I'm not totally convinced to be correct. Of course I could be wrong, but that's what my eyes are telling me at least.
I did a few tests to try to understand the issue better, and also to see if ggx had anything to do with it.
- Created a simple scene with a ground plane and a couple boxes lighted by corona sun
- Applied a white material (180RGB) to all objects and positioned the camera at an angle to increase reflections perception
- Reflection 1, IOR 1.52, Glossiness 1 (slight difference between legacy on and off as initially expected)
- Reflection 1, IOR 1.52, Glossiness 0,1 (huge difference between modes, with reflective faces much darker than expected)
- Reflection 0 (to compare to those same faces, and reflection is effectively darkening a lot when glossiness is very low)
- also tried a fallof map to control reflection instead of IOR, but i looks pretty much like legacy mode (without ggx), so I figured energy conservation isn't working with that.
So is it normal/correct that a low glossiness reflection is so much darker than a high glossiness one? or could this be some kind of bug?
even without.
-
This is unrelated to new energy conservation mode. It's a "feature" of GGX BRDF, which is according to Ondra unfixable (although other renderers have it fixed). It produces these very ugly darkening artifacts around grazing angles when you have very low material glossiness.
I still think it's a bug though... and a pretty severe one.
-
Oh, I see... Thanks for clarifying that.
I pretty much makes the new BRDF unusable in most scenarios then :/
I hope a solution can be found for it.
What about the falloff map thing? results are much better using it, and still different from legacy mode.
-
That's unrelated to new energy conservation as well. New energy conservation weights material elements by scaling them, not summing up and then clampling, so overall albedo is lower, and things look more correct. So for example reflection now correctly subtracts energy from diffuse. Previously, it would only start subtracting when sum of diffuse and reflection exceeded 1. Now it subtracts diffuse as soon as reflection starts to occur.
As for then falloff map, falloff map set to fresnel does not work correctly with GGX, and according to Ondra it's also impossible fix. Don't really know what to add. Falloff map is not a dealbreaker for me, since IOR can simply be mapped by mapping fresnel IOR slot. But darkening of edges is really dealbreaker in some scenes, where it really matters. I wasn't able to render white christmas bulbs because of that :(
-
Your explanation for the energy conservation was exactly how I thought it worked, and the reason why I associated the dark grazing angles with it. I looked like it is subtracting to much energy from diffuse and thus leaving the color of reflection only.
But now that i think of it, that behavior does make sense as it is... and if the issue is not related to the energy conservation feature, could it be that lowering glossiness is also lowering reflection intensity, making it redundant with EC? In the passes, it does look weaker, not only spread wider.
The falloff map issue, well, not ideal but it's not the end of the world either. Maybe some chart matching IOR values with 0° angle reflection values could help.
I'm still confident Ondra will find solutions.
-
The problem with darkening corners is that when glossiness is very low, the angle at which rays spread are pretty big, and at the grazing angles, some of the rays actually reflect at such angle they accidentally end up flying inside of the object. And since it's dark inside of that mesh, the rays receive black color. Other renderers solve that by simply flipping the ray back out.
-
We're going offtopic here, but why didn't it happen with previous model?
-
independently of switching BRDF models, we have decided to also disable these ray-flipping fakes because they were causing so much trouble they were not worth it. It is impossible to do them correctly, since they are by their nature not correct.
-
Correct or not, it does less damage than black outlines. You can't just tell client "Sorry, our renderer can't render that bulb without those ugly black edges". Hopefully others will help me convince you it simply can't stay this way, if Corona's ever supposed to be production renderer.
-
While I do appreciate and totally support the will to maintain physically correct reflections, that's also the reason why Rawalanche is right to stress the need for some kind of solution. As it is, the new BRDF simply doesn't look correct and for me at least is unusable.
I would even suggest going back to the old model as default and make ggx an experimental one untill it's fully sorted out.
How wasn't this a bigger issue for everyone during daily builds testing?
-
I actually reported it two times, but it got always closed without solution.
-
I agree with both. I don' t like too much the "black edge" around glossy objects.
-
Is this somehow related to geometry the material is used on ? Because I see the darkening in material editor, but not in my scenes when applied.
For me (as user of dailies), GGX proved very good. It lacks the flexibility I have with GTR(GGX) in Vray when I need larger spread (which samples pretty bad in Vray...I guess it gets complex..), but looks better and behaves better.
-
Create a bright reflective material with low glossiness (like 0.2) and put it on a sphere or teapot.
-
Well, I've tried different types of geometry and always get the same problem, but I do find strange that it wasn't a big problem for everyone.
Could this be related to Max version?
I'll attach what I'm looking at...
Only change was legacy mode.
-
As i said. It was noted but ended up ignored.
It's actually a bit worse in some cases. Imagine regular archviz scene where client wants walls to be painted with rough shiny paint. Actually, most of the wall paints are quite reflective, just very rough.
(https://forum.corona-renderer.com/index.php?action=dlattach;topic=4542.0;attach=28402)
It ends up looking like this, where wall, captured from flat angle, turns out looking as if it's diffuse component was painted almost completely black...
Or imagine client wants bright rough concrete floor. If you capture it from regular angle it looks good.
(https://forum.corona-renderer.com/index.php?action=dlattach;topic=4542.0;attach=28404)
But then you do a low shot, and it turns from bright gray to dark gray.
(https://forum.corona-renderer.com/index.php?action=dlattach;topic=4542.0;attach=28406)
-
I think it's quite common.......then you hear complaints from client "why this concrete floor looks so dark?"
Best solution is to avoid worm's eye view or as you said low angles in general shots.
-
Yes, totally right Rawalanche.
That's also how I found out to begin with... doing the usual matte light grey override material to check lighting.
Should we start a new thread specific for this?
Ondra what can we do to convince you to find a solution? and how can we help?
-
I think it's quite common.......then you hear complaints from client "why this concrete floor looks so dark?"
Best solution is to avoid worm's eye view or as you said low angles in general shots.
I don't know of any other renderer that hasn't it fixed yet.
-
Just for clarification, It's not about avoiding low angles at all :)
-
I think it's quite common.......then you hear complaints from client "why this concrete floor looks so dark?"
Best solution is to avoid worm's eye view or as you said low angles in general shots.
I don't know of any other renderer that hasn't it fixed yet.
totally agree :)
-
Well, in case of wallpaint the black wall looks really bad.. But it can be avoided using very high IOR and low reflectivity..
Now I know this isn't how you would like to go about materials, using some weird values, but in that scenario it is avoidable problem.
-
As it stands in version 1.0 is the 'Legacy' checkbox controlling both BRDF and the Energy Conservation Mode?
i.e. Is it possible to revert to the older BRDF in situations where this GGX error is problematic without losing the Energy Conservation Mode or was this never implemented to work with the older BRDF?
-
Well, in case of wallpaint the black wall looks really bad.. But it can be avoided using very high IOR and low reflectivity..
Now I know this isn't how you would like to go about materials, using some weird values, but in that scenario it is avoidable problem.
That example highlights this issue pretty well. I hope this gets fixed promptly.
-
Well, in case of wallpaint the black wall looks really bad.. But it can be avoided using very high IOR and low reflectivity..
Now I know this isn't how you would like to go about materials, using some weird values, but in that scenario it is avoidable problem.
Nope, that's not a solution. You will completely change characteristics of that material. IOR 100 will mean there will be almost no difference between facing and parallel angle reflectivity. It will look like very dull aluminium, not wall paint.
It's like saying you can workaround refraction bug by using opacity instead of refraction.
-
Hi Juraj Talcik, are you using very low glossines values on your materials? Becouse you said that you are not getting bad results like rawalanche said and show.
Im afraid to go on 1.0 at the office now and it starts to back fire on me :(
-
I just had a discussion with Jaroslav on this topic. Going to the previous "ray flipping" hack is out of question - it just breaks the renderer too much. There are however different possible solutions we will investigate. But they involve some original research, so it will probably take some time to try and implement if we succeed.
-
Hi all!
I have missed the thread about the problem. Good that searching of solution in process
-
oh, i did some renders with 7.2 and 1.0 to see the difference by this values 0.2 glossiness in a white material!
The new shader in 1.0 looks really bad in comparision with 7.2!
I dont know wich one is phisically more accurate but by 7.2 looks definitly really much better!
I really hope this will be solved soon!
-
btw, importing one material made with version 7.2 in the one 1.0, this material will continue behaving like
in old model of corona 7.2!! At least by me is so!
So for those kinds of material with less glossiness values u can merge the old one!
-
Tried to create snow material today and found that legacy mode gives much superior results in that case. What a shame, i really like GGX BRDF and wouldn't want to revert even for single material :] Looking forward to what solution dev team will offer.
-
Yep, snow is extreme case of this problem. It's very rough, yet highly reflective, also refractive, has SSS and is white. So as long as the problem is present, it's not possible to make good looking snow with GGX.
-
Just found this error in my scenes too. I guess I was oblivious to it as most rough materials were dark and I didn't notice it so straight up. I still use white wall to be mostly diffuse since the roughness is so high.
Well, touche :/
-
This problems explains a lot of why I had problems with some materials...
A little off topic, but a little bit on the subject: How come Corona GGX don´t have any more advanced controls for tail fall off etc? Just curious :)
-
Because the GGX by default doesn't seem to have it. The one that has the control, is for example the version Vray incorporated (GTR/GGX).
-
I see, so it´s a different GGX model? That explains it!
-
The Disney paper describes few models: https://disney-animation.s3.amazonaws.com/library/s2012_pbs_disney_brdf_notes_v2.pdf
Walter - No Tail parameter
Low; Bagher - Tail parameter
Trowbridge & Reitz - GTR; [Gamma=2] = GGX ; The one in Vray
No idea which we got in Corona, perhaps the parameter simply isn't exposed.
-
Thanks! I will take a look at the paper, interesting! :)
-
Oh, so this is what was happening with some of my materials. Spent some time tweaking them and wondering what I'm doing wrong, kinda happy to see it wasn't me.. hoping for a fix, though - other than switching to legacy.
-
Correct or not, it does less damage than black outlines. You can't just tell client "Sorry, our renderer can't render that bulb without those ugly black edges". Hopefully others will help me convince you it simply can't stay this way, if Corona's ever supposed to be production renderer.
This! sometimes the option to break reality HAS to be there, production doesn't follow realistic time frames always so people need an option to achieve unrealistic results.
-
Correct or not, it does less damage than black outlines. You can't just tell client "Sorry, our renderer can't render that bulb without those ugly black edges". Hopefully others will help me convince you it simply can't stay this way, if Corona's ever supposed to be production renderer.
This! sometimes the option to break reality HAS to be there, production doesn't follow realistic time frames always so people need an option to achieve unrealistic results.
Nope, this is not anyhow related to speed or realism. It's simply broken shading model. Meaning that if you took a photograph of white rough reflective Christmas bulb, on the real photo, you will not see black outlines. So it's both unpleasant to the eye as well as unrealistic.
This is not about breaking reality or doing some hacks to meet deadlines. Actually, from my experience, less hacks and tricks, the easier it is to meet the deadline.
-
Well, in case of wallpaint the black wall looks really bad.. But it can be avoided using very high IOR and low reflectivity..
Now I know this isn't how you would like to go about materials, using some weird values, but in that scenario it is avoidable problem.
Nope, that's not a solution. You will completely change characteristics of that material. IOR 100 will mean there will be almost no difference between facing and parallel angle reflectivity. It will look like very dull aluminium, not wall paint.
It's like saying you can workaround refraction bug by using opacity instead of refraction.
lacilaci method with high IOR level can be emproved to avoid absense of difference between facing and parallel angle reflectivity. You just need to add a falloff map to glossiness slot using perpendicular/parallel and draw a user curve there, where at facing angles glossines will be close to almost zero and raised up to a specisied glossiness value (0.2 in the shown examples). It works just fine and doesn't not feel like very dull aluminium or smth.
-
"Glossy reflections no longer darken material on edges"
confirmed ;)
But why is the scene so much darker?
-
So rerendering an older scene will not match? That would be quite bad to be honest...
-
So rerendering an older scene will not match? That would be quite bad to be honest...
Nope. You need to create a new material to make it behave differently.
-
Using the "legacy mode" tool in the converter doesn't work?
-
or load old material and uncheck "legacy".
The difference looks like user error. If you reproduce it with the same scene, please report it as bug
-
[submitted to mantis]
-
I'd like to ask what is the reason for making legacy checkbox inactive in new material. I find new GGX not very suitable in some situations. It works better with bright materials, but is much worse with dark materials. Now mats are too shiny.
In attached example materials are: IOR - 1.52, refl - 1, gloss - 0
-
It looks like it could be used to simulate nice velvet things. Not sure if it looks correct though. :)
-
I'm pretty sure it isn't correct, because now it's impossible to create very diffuse materials, unless one is willing to forsake specular reflection.
-
I'd like to ask what is the reason for making legacy checkbox inactive in new material. I find new GGX not very suitable in some situations. It works better with bright materials, but is much worse with dark materials. Now mats are too shiny.
In attached example materials are: IOR - 1.52, refl - 1, gloss - 0
Can you make a bug report thread/mantis for that?
-
Will do.
-
I'd like to ask what is the reason for making legacy checkbox inactive in new material. I find new GGX not very suitable in some situations. It works better with bright materials, but is much worse with dark materials. Now mats are too shiny.
In attached example materials are: IOR - 1.52, refl - 1, gloss - 0
That looks awful.
I also vote for having both modes, actually I think we should have both options displayed equally, not hidden behind a 'legacy' switch.
What's the exact reason to remove the old model anyways? Does it break physics or slow down the rendering? Or is it simpler to manage code that way?
-
I'd like to ask what is the reason for making legacy checkbox inactive in new material. I find new GGX not very suitable in some situations. It works better with bright materials, but is much worse with dark materials. Now mats are too shiny.
In attached example materials are: IOR - 1.52, refl - 1, gloss - 0
That looks awful.
I also vote for having both modes, actually I think we should have both options displayed equally, not hidden behind a 'legacy' switch.
What's the exact reason to remove the old model anyways? Does it break physics or slow down the rendering? Or is it simpler to manage code that way?
The reason to remove old model is because new one is simply better. What you are seeing here aren't properties of GGX, but simply bugs. Bug-free GGX is just more realistic and better BRDF, and since Corona is about simplicity, having switcher between better and worse feature doesn't make sense. You should always use the better one.