I am trying to create a glossy powder coat material in NME. My issue is that the normal map and roughness map I have added to the clearcoat node are only visible when viewed under direct light. Ambient light does not show the normal and roughness detail as can be seen from the image below. Did I plug in something wrong to the NME?
cc @PatrickRyan
@zael6793, I don’t see your normal map saved in the node material for clear coat. Can you share that here or save a version with your normal embedded? And if not that normal, any temp normal you have created in the same way so we can test with your assets. Thanks!
I can’t seem to create a unique URL with the maps embedded. Here are the the two maps that I used though!
@zael6793, there are a couple of things going on here. I am making a couple of assumptions here between your original post and the node material graph you linked. You mention ambient light in the post, but you are not assigning an ambient color in the shader, so I am guessing you mean Image Based Light (IBL), also sometimes called environment lighting, when you say ambient light. In this case, there’s no IBL texture in the graph to use as an environment light. If you are using this node material attached to a Babylon scene, it will reference whatever environment light is set on the scene, so you can leave it unassigned in the node material. To make something visible, I added a prefiltered .env file to the node. I added the normal texture and roughness texture back into the graph, and had to rewire the lerp you have on the clear coat roughness to get it to render. Here’s the updated graph. Babylon.js Node Material Editor You can see that the environment light is the only light enabled and your clearcoat roughness is showing on the cube. The specular reflections are softbox and umbrella lighting from our standard studio environment texture.
One thing to note is that your normal texture is a single direction which is very close to perpendicular from the surface. You can get the same output if you do not supply a normal texture as the block will assume perpendicular normals.
This saves on download and space in memory. While the normal texture is small due to being able to quantize the pixels a lot due to them all being the same color, the size in memory is still 500 x 500 which is an unnecessary number of calculations to do for a perpendicular normal. The other thing you can do if you want a specific normal on all pixels is to just pass a single Color3 which is what I did below using the color you have set in your normal texture:
I hope this helps, but feel free to follow up with more questions if you have them.
Patrick, thank you so much! This was really helpful, I realized that plugging in different environmental maps with higher brightness levels allow the materials characteristic to become more visible.





