The following screencaps were taken from Godot Engine 3.0 Beta 1; the only difference is that the top image uses a normal map baked in Cycles and the bottom uses a normal map baked in Blender Internal. The maps were baked selected-to-active from the same hi/low poly objects using the default settings. The normal maps were then assigned to a Suzanne manually in Godot Engine to avoid any interaction with a third-party exporter. Is there any known reason why a map baked using BI would appear correct, while the same map baked in Cycles would appear incorrect, when displayed in a realtime game engine? Does cycles require a specific node setup to bake normal maps other than an Image texture mapped to diffuse as a bake target?
I don’t have an answer, but I will say that I only use BI for baking normals because of the differences you mentioned.
Does that imply that normal maps baked with Cycles renderer are broken/corrupted?
It has different options for baking. Cycles with ray distance and cage, BI with bias and distance.
It doesn’t require that. It’s better not to have the target image connected to anything. If it’s connected all the way to material output, that is a cyclic dependency which it reports.
When exporting to an external application, it’s recommended to triangulate the target mesh before baking so that the geometry underneath doesn’t change between the two. If the triangulation changes from what it was baked on and the target use, the information on the normal map may not be valid anymore.
So why the difference? Don’t know. The questions you’ve asked and files you’ve included aren’t for troubleshooting.
Solved, connecting the target image to diffuse (instead of just an unconnected node) seems to have caused the errors I was seeing. Thank you very much ‘JA12’ for helping me to troubleshoot.