Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We’re making changes to the Unity Runtime Fee pricing policy that we announced on September 12th. Access our latest thread for more information!
    Dismiss Notice
  3. Dismiss Notice

Resolved Model (and sky) turns black after adding a Normal Map

Discussion in 'Shader Graph' started by carcasanchez, Feb 5, 2020.

  1. carcasanchez


    Jul 15, 2018
    I am working with a shader that picks textures from an array. The diffuse channel works perfectly, but after adding a normal map, things start to go wrong.

    As you can see, the preview in ShaderGraph work as intended

    But when I add the normal:

    Strangely, when I turn to unlit mode, It can be seen that the normal map is properly placed and affecting the geometry:

    Is this a bug, or there's some setting I forgot to tweak somewhere?
    (I am working with the latest HDRP and Shader Graph versions, Unity 2019.3)
  2. LandonTownsend


    Unity Technologies

    Aug 21, 2019
    The HD Lit node will attempt to normalize vectors passed into the "normal" input. Normalizing a 0 vector (which results from the black pixels in your normal map) will result in a divide by zero, resulting in NAN values. NAN values in HDRP propagate to the post processing, causing everything to render black when they're on screen.

    To solve this issue, make sure there are no black pixels in your normal map.

    As an additional note, you need to unpack normal maps in order to get the proper value to plug into the master node. Sample Texture 2D has a feature to do this (setting Type to "Normal") but Sample Texture 2D Array doesn't. Make sure to route the output of the Sample Texture 2D Array through a "Normal Unpack" node to get proper results.
    Last edited: Feb 6, 2020
  3. carcasanchez


    Jul 15, 2018
    Thanks for the help. I found that, If I apply the transparency at the same time as the unpacked normals (since the black part in the normal map is the same as the transparent part in the diffuse), it prevents the NaN value and works properly.