Page MenuHome

High Quality Bump
Closed, ResolvedPublicTO DO

Authored By
Clément Foucault (fclem)
Aug 9 2019, 5:19 PM
Tokens
"Love" token, awarded by EAW."Love" token, awarded by bnzs."Love" token, awarded by rndmnm."Love" token, awarded by szap."Love" token, awarded by DaPaulus."Love" token, awarded by Blendork."Love" token, awarded by jonathanl."Like" token, awarded by YAFU.

Description

Using the nodetree branch duplication (added to solve displacement issue) we should be able to create bump that is near cycles quality. However, this will come at a cost as the bump tree will need to be evaluated trice.
We need to change the texture coordinates for all the texture nodes that are in the bump branch to account for the ddx/ddy.

Should be straight forward.

Estimate : 1 week

Event Timeline

Clément Foucault (fclem) lowered the priority of this task from 90 to Low.Aug 9 2019, 5:19 PM
Clément Foucault (fclem) created this task.

Preliminary result:

Only thing left as far as I can tell is to support all texture coordinate nodes and unplugged sockets.
I also did not try nested bump nodes and more complex nodetrees.

Nice! Unrelated but, shouldn't displacement affect both the specular and clearcoat layer? Technically displacement is a stand in for real geometry displacement so it would affect both, which is what Cycles does btw, unlike Bump to Principled where each reflection has it's own normals for good reasons.

The new bump looks sweet and crisp, nearly the same result as in cycles.

But the performance is quite noticeable with a lot of textures.
Is it technically possible, to give the user the ability, to deactivate certain calculations eevee is performing?

For example; deactivate bump and normal calculation temporarily to get better performance.

But the performance is quite noticeable with a lot of textures.
Is it technically possible, to give the user the ability, to deactivate certain calculations eevee is performing?

You can always create a dedicated eevee output node and not plug anything into the displacement socket. That said if you are using multiple bump nodes in you shader, there is no way to disable all of them in one go.

So it could be a feature, yes. But I also think that having this kind of switches also add workflow issues.

Clément Foucault (fclem) changed the task status from Unknown Status to Resolved.Sep 13 2019, 5:50 PM
Clément Foucault (fclem) claimed this task.

Implemented in rBffd5e1e6acd2

@Clément Foucault (fclem) yeah that's true. Doing this automated by a script should work, I'll give it a try.

But the performance is quite noticeable with a lot of textures.
Is it technically possible, to give the user the ability, to deactivate certain calculations eevee is performing?

You can always create a dedicated eevee output node and not plug anything into the displacement socket. That said if you are using multiple bump nodes in you shader, there is no way to disable all of them in one go.

So it could be a feature, yes. But I also think that having this kind of switches also add workflow issues.

So I thought more about this and created two scripts for muting and unmuting all [Bump, Bevel, Normal, Normal Map, Displacement] Nodes in every node tree.
Works pretty well and the performance boost in eevee is really nice when working in more complex scenes and a lot of noise/voronoi nodes.

You said that a fixed implementation would bring workflow issues here. I think it is the other way around,
when using this script there is a risk to forget about it and push your files to the renderfarm and render without any noise or normals.
I think that a fixed implementation (deactivating normal and displacement only in the viewport) would not bring a big issue here.
Maybe this could be put to the simplify tab.