Increased Image Fidelity in Unreal Engine using Conservation of Energy
Alan Rosenfeld
3D Lighting Artist | Award Winning Director | Writer | Katana and Unreal Cinematics Lighting | ????Canadian PR
This is an open-forum article and I invite other opinions and points of view to round out and update this information for all to share.
Working with #Pixar #Renderman for a living, I take many things for granted. One of them is surface shaders, by default, have energy conservation already turn ON. While researching my next project in #UnrealEngine, I stumbled upon something very interesting to share.
Are your renders a little glowy? Round edges flat?
I noticed all my short films seem to have this glow to surfaces I could not account for. A lack of detail at certain angles of the camera.
As I was setting up my next project, something caught my eye in the Project Settings that I had never touched before. It is OFF BY DEFAULT.
Project Settings ->Engine->Rendering->Materials
Enable Energy Conservation on Material
There is little to no information provided on the internet regarding this setting, but what is happening with this setting off may be hampering our image fidelity.
Searching the internet I found this absolutely incredible video by Christopher Tyler on his research into Blender and similar issues. I have tweezed out of this video what I believe are some helpful methods and techniques to use inside of #UnrealEngine to increase the image fidelity. Note, I look at this not from a game standpoint, but a Cinematics view. I do not know how this will play out in a game.
Energy Conservation
In a nutshell, Energy Conservation ensures that the total amount of light reflected by a surface does not exceed the total amount it receives. This produces a more accurate response of the material to light.
Without energy conservation on, the details and reality of our images will suffer and tend to add glow and flatness at some camera angles.
In the image below, the Conserve Energy setting is OFF, producing at this angle less fidelity to the curvature of the bowl and plate.
In the image below, Conserve Energy has been switched ON (NOTE: when you turn this setting on, you will be ask to restart the Engine as shaders need to recompile).
领英推荐
With this setting on, I am seeing less glowyness at some camera angles and definitely more fidelity to the surface materials.
Shader Adjustments for Specular and Fresnel
The Blender video also covered some changes to material shaders to take into account proper energy management. I have been using Conserve Energy ON with and without these shader tweaks. I'm convinced with these tweaks there is better image fidelity. I'm sure it is shot dependent.
From the Blender video:
My interpretation for an Unreal material
I've added a parameter called EdgeReflectanceMult. In the Video, he was setting the color mix to black 0,0,0 and when I tested this, it was too dark. So I'm taking the incoming Base color and multiplying it by 0.5.
Here are two examples using this material setup.
This second test shows Conserve Energy OFF, but WITH the Shader Tweaked. Interesting!
Conclusion
This will obviously need more testing in different projects and at various camera angles. Wouldn't be bad to test this with DLSS/DLAA too. I definitely see a quality boost. I'm curious if this impacts those in games. I'm also curious as to why the product would ship with this feature turned off by default.
Feedback and ideas welcome!
Peace
Knowledge is like manure. It's meant to be spread around!
3D Lighting Artist | Award Winning Director | Writer | Katana and Unreal Cinematics Lighting | ????Canadian PR
3 个月Article has been updated with a new video showing examples of before/after.
Principal Lighting Artist | Science x Art??
3 个月Thank you for your deep dive into this, Alan! I assumed Unreal was “proper” PBR out of the box, but that doesn’t seem to be the case. ????
Senior Lighting Artist | Expert in Visual Development and CG Lighting
3 个月Pretty insightful. Thanks for sharing your write up.