Page MenuHome

Normal Map node breaks Glass/Refraction Shaders in Cycles
Closed, ResolvedPublic


System Information
Windows 10 Pro
GTX 760 + GTX 1070

Blender Version
Broken: 2.77a abf6f08; multiple versions, going back seemingly until at least 2014

Short description of error
Using the Normal Map node to apply surface detail to a mesh using the Glass BSDF or Refraction shaders makes them opaque and blackened; using the Bump node does not. Reading through the documentation of these nodes in the Blender Manual, my best guess is it has to do with the implementation; Normal Map seems to ignore underlying true surface normals. The Bump node says it samples points around where it's about to apply the effect and then offsets, the Normal Map node seems to just affect surface tangents in relation to the camera view, which produces incorrect results on geometry facing away from the camera view, which is only truly apparent on transparent geometry such as that using Glass or Refraction shading.

Demonstration of the issue and a current work-around here:

Exact steps for others to reproduce the error

  • Add a primitive to the scene
  • Apply the Glass BSDF Shader to the primitive
  • Attempt to plug the Vector -> Normal Map node to the normal input of this object's shader



Event Timeline

Normal glass; glass with bump map; glass with normal map

Here's a blend file:

Turning off Transmission ray visibility in the Cycles Settings panel for that object also fixes it (as a workaround).

Revising my prior comment:

Turning off transmission rays is inaccurate and can break results- it helps but is not perfect either.

Glass; Glass w/Normal Map node; Glass w/Transmission Rays disabled.

Glass; Glass w/Normal Map node but Transmission rays disabled;

Makes the result transparent and not opaque, but changes the refraction results;

Demonstrating the issue of disabling transmission rays here:

I cannot reproduce this in 2.78 RC, so I suspect this is already fixed as T49187.

I cannot reproduce this in 2.78 RC, so I suspect this is already fixed as T49187.

Normal map node seems to be entirely broken in 2.78 RC; doesn't apply whatsoever. I don't believe this is fixed.

There's forum posts going back as far as 2014 regarding the issue though I'm not sure if anyone submitted an official bug report before this; I know I can remember personally experienced the bug in the last 2 official release versions of Blender. It seems unlikely to me that the implementation of the node has been fixed for a long-standing bug, when it just seems that the node is currently broken in the current RC build.

It works perfectly in 2.78 RC with the file by @Greg Zaal (gregzaal) above, and just posting screenshots is a rather useless thing for testing stuff.

Hmm... might actually be working. Going to test more but it may be fixed in the RC.

Greg Zaal (gregzaal) closed this task as Resolved.Sep 8 2016, 6:55 PM
Greg Zaal (gregzaal) claimed this task.

Aha! Can confirm it works in latest build! Probably the same issue as T49187. Sorry for not testing properly.