@PatrickRyan I tried to use this approach before. Initially I used this topic as reference point. But here’s the problem: as for some reason with derivatives perturbation is really small, the reflection that we can see with environment mode enabled is wrong (that’s why I made wave very high in this example).
It reflects as if the surface is almost flat (which is not surprising with small difference in normal map). Also I have concerns that, as we can see on normalMapColor input debug-panel, normals change depending on the angle we are watching it from (I suppose, that’s one of noisiness factors you mentioned before)
I tried to opt out of using derivatives for performance/quality balancing reasons: while sampling texture (Vorley, Simplex) kills some variety, I can use precalculated gradients here and avoid calculations per pixel with corresponding built-in blocks. But for this I need correct behaviour at least at a simpler case like sine function.