Landscape Grayscale (0-256) values filter

Ok I see, you are channel packing two normal maps into one texture. DeriveNormalZ is indeed the correct operation there. It uses the pythagorean theorum to find the remaining vector length.

It looks like you skipped the biasscale step. When you store normals in a regular non-normalmap texture, the values will be unpacked as 0-1 instead of -1 to 1.

To fix that, you need to place a “ConstantBiasScale” node for each “Append”. Set the “Bias” to -0.5 and the “Scale” to 2.0. Then plug in the result of that to derivenormalZ and you will have a normal map.

Were you still having problems with the blending as well? I did not quite understand the issue you mentioned with lerp masks carrying over.