Page MenuHome

Strong Moiré pattern in EEVEE normals generated by the Brick Texture Node.
Confirmed, NormalPublic


System Information
Operating system: Windows-10-10.0.19041-SP0 64 Bits
Graphics card: NA (AMD 15D8:C8 ATI Technologies Inc. 4.5.14757 Core Profile Context 20.11.2 27.20.14501.18003)

Blender Version
Broken: version: 2.79b through 2.92.0 Alpha, branch: master, commit date: 2020-11-28 19:27, hash: rB458d8a423a2f
Worked: (newest version of Blender that worked as expected)

Short description of error
A strong Moiré pattern appears in object normals if viewed from a distance (doesn't have to be very far). More easily noticeable if constantly moving in viewport or by switching to 'Normal' render pass.

Exact steps for others to reproduce the error
1). Add brick texture to default cube material
2). Increase the brick texture scale to something high like 40
3.)Add bump node
4.) Connect brick texture color output to Bump node height input
5). Switch to 'Normal' render pass from the overlay
6). Zoom out and move the camera a little and observe the Moiré pattern in the normals.

Event Timeline

Philipp Oeser (lichtwerk) changed the task status from Needs Triage to Needs Information from User.Nov 30 2020, 12:34 PM

Observe the normals changing in unexpected ways

Cannot reproduce here, can you show how these look? What is "unexpected" here?

Core Profile Context 20.11.2 27.20.14501.18003
That driver version is known to cause glitches, does this also happen when you downgrade to the prvious driver version?

Downgraded to 20.9.1 , didn't help.

This is what the issue looks like

For reference this is on a completely flat piece of geometry with a brick texture (or any grid like texture really) used in bump node's height input. Also setting brick textures 'Offset' to 0 doesn't help. From what i understand of how normals work those curvy lines really shouldn't be there.

Evan Wilson (EAW) changed the task status from Needs Information from User to Confirmed.Dec 2 2020, 9:41 PM
Evan Wilson (EAW) removed a project: OpenGL Error.

I can confirm that a strong Moire pattern appears, but this might just be a limitation of the Brick Texture's implementation in EEVEE. @Clément Foucault (fclem) or @Jeroen Bakker (jbakker) will have to let us know.

Color into height.

Factor into height.

Nothing under Quality or Texture seems to change anything.

Nor does High Quality Normals. The only change is the width of the pattern when the Filter Size is changed.

@Philipp Oeser (lichtwerk) I am going to remove the OpenGL tag for now as I can reproduce using a different GPU from a different manufacture.


Tested using 2.92 master hash: cba5137f32f9
OS: Windows-10-10.0.19041.630-SP0 64 Bits
GPU: GeForce GTX 470/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 391.35
CPU: i7-950 @3.07 GHz SSE2 SSE3 SSE41 Detailed Specs
RAM: 8.00 GB

Evan Wilson (EAW) renamed this task from Normals getting skewed in Evee if viewed from some distance to Strong Moiré pattern in EEVEE normals generated by the Brick Texture Node. .Dec 2 2020, 9:48 PM
Evan Wilson (EAW) updated the task description. (Show Details)

I don't think it's anything specific to the brick texture in fact i don't even think it's anything specific to the bump node. I have been able to reproduce this using just good old math nodes and texture coordinate node.

On a side but possibly related note if you put the same exact material (brick texture into bump node's height) on suzzane and then compare Eevee's normal render pass with Cycles normal pass you can tell that Eevee seems to have a lot more green than cycles. No idea if this is expected or not, just thought i would share.

I have been testing around, it seems that the problem has to do with that the normal pass is only sampled once. Because if using the normal as the material color output and view it in the combined pass. Then the majority of the Moiré patterns disappear since the combined view will sample the output color based on the viewport sample count.

Combined view using normal color.

I think you might be onto something, i set the normals output to emission and both the combined and emission pass have significantly less noticeable moire than the NORMALs pass. Moreover the pattern is most noticeable right after the scene is forced to update (either because camera moved or something else) but quickly becomes less noticeable over time which is consistent with the single sample theory.