Fake control of normal strength of glossy mat in compositor

I wanted to add some warping to a window pane for the project I am currently working on. I originally used a clouds texture for the normal input in the glossy shader. However, I wondered if there was a way to adjust the normal strength and texture scale during compositing. Doing this would allow for quick adjustment after rendering. I decided I could bake the normals of a plane with a displace modifier with a clouds texture. I could then use the red channel and green channels to know the orientation of the normals in the x and y direction respectively. Using this information, I could implement the displace node and move the rendered pixels of the window reflection based on the normal information. This is done after a map UV node was used. Such an effect warps the reflection and makes it look like a normal map is applied to the glossy shader but maintains the ability to manipulate the strength of the warping and scale of the warping during compositing. As long as the viewing angle does not become oblique, this effect works. Then again, this is how normal maps are anyway.

Here is the node setup


The ellipse mask limits the effect so it does not warp the borders of the window. Without this the edges become jagged.




The last image is the x_distortion node. The only difference for the y_distortion node is that it uses the green channel.

Let me know what you think