Epic Games / Disney White-Washing

I have an issue with the rendering in the Unreal engine: it looks washed out and unnecessarily white on many surfaces.

My question is this: was the usage of the PBR system outlined here by Disney, really the best approach for PBR and its implementation in the Unreal Engine?

[spoiler]

[/spoiler]

[spoiler]

[/spoiler]

Looking at these two images, one from Fortnite and one from Disney, you can clearly see the whiteness, in particular on the neck/arms, on the ground, in the hair, table and all glinting surfaces beyond a certain angle, the materials exhibit this quite clearly and it looks really ‘cartoony’ and ‘fake’.

Is there any way to remove this whitewashing? I appreciate it works for Disney, because they are not using real-time and they are creating children’s movies and having this level of whiteness might help them.

Another game recently produced using (I believe 4.20) is Insurgency: Sandstorm. My case-in-point where the rendering looks bad as an example for discussion would be these official screenshots:

[spoiler]

official image link / series of pictures

[/spoiler]

The whitewashing in the Unreal Engine makes all glinting surfaces white and have the overriding image look like a cartoon. In the images, it also looks like (partially) the objects have a layer of white ‘wax’ over the surfaces, making it so when light hits the object, it will enhance the whiteness and wash-out the contrast. This is a military game, that, looks like a military game trying not to look like a Disney cartoon.

Now, is this a bigger problem involving all real-time rendering with PBR, wherein the amount of rendering required to off-set the whitewashing is too high for real-time? Or, is this as I suspect that using the Disney method for PBR was the ‘wrong choice’ and now, devs have to fix the problem?

A common comment is that you can tell whether a game uses the UE4 engine because of this whitewashing.

So, how do we make the rendering in the engine not look washed-out, and, perhaps more importantly, make a game not look like every other game insofar as players/consumer will not correctly identify that a game was rendered in Unreal.

White-washing is a problem. What is the solution?

Im personally doesnt see any “whitewashing” effect on Insurgency: Sandstorm screenshoot. Maybe a little lower contrast because of postprocessing.
Also, im defenitely doesnt see any “sign” of UE4 on that screenshoot.

Fortnine may looks like “Disney catroon” cause Epic trying to achieve exactly “that cartoon look” and make it good, but not because of some sidefx of PBR rendering in UE4.

But it’s ridiculous! :slight_smile: No one care what engine you use. If you game good - its a good game, if you game bad - its a bad game.
No one will say - “Meh… so awful gameplay, AI and storytelling but look at the picture! Looks like they dont use UE4! Wow that game are awsome!” :slight_smile:

Technically, yes. Overall it was the best.

What OP is is referencing to in his post is indeed a problem. But it is 3 separate problems that give this ugly white sheen that should not be there.

  1. Fresnel approximation lacks a specifics in the graph, that is there in full calculation.
  2. Lack of specular occlusion in certain cases.
  3. Overbrightening of fresnel on rough surfaces due to more microfacets reflecting light straight into the cam.

Contribution of 1 is minimal, besides approximation is significantly cheaper. Not much to do here.
2 is not directly related to shading. You can see this one in OP’s sandstorm screenshot, where floor near the window is receiving indirect specular, where it should not.

3 is the problem that can and should be dealt with. It is handled by adding a compensatory factor depending on surface roughness nowdays. @Krzysztof.N Epic should really consider implementing that. If they don’t, adding it on your own is quite trivial luckily.

You…*must *be trolling.

Two minutes on Twitch and you can very clearly see the white-washing everywhere. The screenshots from the developer show it, too - that is why I linked them. As the screenshots could be pre-rendered, you can simply boot the game or play it (as you can Fortnite, but that has a ‘style’ and I only used it as an example) or you can just watch it being played in real-time on Twitch.

What I cannot accurately identify is what the settings being used are, and, there is not a mod/SDK for this program as yet, so the rendering is very hard to determine, minus official screenshots and of course real time rendering on twitch or other streaming video repositories.

Thank you for the comments, and thank you for being one of the few people who isn’t calling me ‘mad’ or ‘crazy’ :slight_smile:

1 - The brightness factors are more related to lack of occlusion in practically everywhere there isn’t any accurate real time shadowing or no shadowing at all. This will naturally result in over bright and non occluded specularity as well as reflections. In offline renders this almost never happens as every light casts very accurate shadows everywhere. In video games you can’t have this for performance reasons.

2 - Regarding PBR being washed out you must consider the following:

A - You can’t directly compare Real time with what Disney or what any offline renderer is doing, the shader calculations are vastly superior in films no matter if they both claim they are using PBR, it is NOT the same PBR as you would expect from an offline renderer. The realtime ones are doing so much more cheating to try hard to get similar results. For instance SSS in real time is a post effect, in offline its true calculation taking into account the simulation of multi layer skins on up to micro pore levels if render time displacements are used.

B - The “whitewashing” you speak of in Disney is a specific style they aim for with their highlights, they can make those shaders look very different if they wish to I don’t think it is related to any underlying tech here that forces them to get that look. They are also mostly in areas where there is SSS used. If you notice the cheeks those are painted textures driving the SSS to determine exactly where to get the whites and darker red tones. There is also some post work here as well.

C - UE4 SSS tries to approximate this using post processing, it softens the surface and outputs a certain look unique to the engine’s implementation. This also can be manipulated to look different but not to that degree.

3 - You can tell if a game uses UE4 because of a few factors:

A - PBR is used the same ways as in most games as a rule with little modifications and art direction to change the lights/shaders etc. This results in games looking similar. In fact I would argue that after PBR was introduced into game development more and more games have been looking similar given the similar pipeline and underlying tech used. At least before they had to try to achieve a look uniquely for every game because they were forced to deal with limitations and that unintentionally or intentionally resulted in “different looks” so to speak from a tech render perspective.

B - UE4 has a few areas that you could immediately tell its the tech used. Notably vegetation shading and SSS, also TAA implementation seems behind other game engines such as the ones used in Doom and uncharted, this creates smearing and blur more noticeably.

C - The way lighting is baked and looks: If not enough attention is spent here then the default settings will give you a generic light feel signature to the engine. this is hard to point out and explain in a few words.

And as a fruit for thought. Have you noticed how games using “Forward rendering” in UE4 look less like UE4?

Bottom line is you want to make games using UE4 “look” Unique, it’s simple get good art direction and Lighting/shading artists. Tweak those lights and shaders, bend the rules a bit and you’ll get there. DON"T get stuck with what they tell you to do with PBR in the engine.

Actually - nope. Can you, please, provide some defenitely NOT whitewashing screenshoot from any game, cause maybe we just talk about slightly different things :slight_smile:

It just looks like a poorly made LUT to me. Have a look at what comes out of a high end production digital film camera - its pretty washed out and bland. But you have the dynamic range to be able to grade the footage/image to look how you want. It seems to me that this ‘washed out’ look is just down to not having a decent color grade on the overall image at the end of the process.

White washing is probably the worst term you could have came up with. Excessive fresnel or over blown highlights are more accurate, white washing already has 2 very different meanings.

lol true this.

In terms of rendering?

White washing typically means turning non-white characters white in order to have as much main stream appeal as possible, or casting white actors for non-white characters.

White washing can also mean to cover gloss over it cover up.

Or to apply a semi transparent coat of white paint.

So when it comes to the artistic use of the term white washing, using a semitransparent layer of white paint doesn’t look remotely similar to the problem you are presenting.

In case of Fortnite that is simply the fog actor being rendered.

I think it does look very close to that - you can see the underlying base color, yet it does have an extra layer of white over the top, and at glinting angles, the base color is not apparent, washing out the object.

Not so sure, unless you are referring to the screenshot. The glinting angle of every character is white and surfaces that are not white should not glint the color white?

I totally thought the same thing!

I get what OP means though, I’ve struggled with this ever since I started using PBR workflows, especially on flat surfaces like dirt and grass. I’ll usually just lower the specular value in the material but I know that’s not correct.

Does anyone have more info on what @Deathrey Mentioned regarding a compensatory factor based on roughness? Is this something that could be done at the material level or would shader code need modified?

^ Deathrey probably means to increase Roughness/ decrease Specular with Fresnel, so edges do not receive any/ receive less specularity

Nope, that can’t be done on material editor level. Modifications need to happen in shader files, wherever fresnel term is evaluated.

@Deathrey Why would inverting Fresnel and multiplying specular not work?

The change needs to affect only a part of fresnel and arguably, only for environment. Adjusting specular in material in this way simply changes IOR and breaks things.

PBR just means an approach to rendering and certain set of rules in place to prevent achieving wrong results. That’s it. PBR itself has no direct effect on the output. It’s up to an artist. On every single example on image you’ve posted, the things you are pointing out look the way the look due to artist’s choice. They may have some particular choices in common, such as choice of filmic tone mapping settings, which may result in similar handling of bright tones, but that was, once again, choice of the particular artists to leave (or not to) those settings the way they come out of the box.

OP referenced a purely technical complication, namely excessive specular, particularly IBL specular at grazing angles for rough dielectric materials. It is not an artist’s choice.