For now Intel's OpenImageDenoise is superior to all the other ones. From the release notes:
Compared to the existing denoiser, it works better with more complex materials like glass, and suffers less from splotchy artifacts. It also gives better results with very low numbers of samples, which can be used for quick previews.
It's just a post process so ...
The difference comes from the dithering. This post-process is not applied on the viewer node but is applied on the render. You can find more info on dithering : https://docs.blender.org/manual/en/dev/render/output/settings.html#dithering
Dithering is a technique for blurring pixels to prevent banding that
is seen in areas of gradients, where stair-...
Since you are using over exposed Emit pass as a mask, there is no way to get proper pixel mix with rendered image. Even more because of border's pixels contaminated by background color (on antialiased edge). Also in your answer I can see edge in your render. Probably a bit better because of differences on Multiply values rather than mix type.
What I would ...
You can add File Output nodes to the compositor to get multiple files saved from any point of your compositing without the need for any Python:
You can also use Python to add more nodes:
bpy.context.scene.use_nodes = True
tree = bpy.context.scene.node_tree
for every_node in tree.nodes:
RenderLayers_node = ...
The 3D Viewport is the place where you can manipulate your models, and modify the way they look. You can use different shading techniques to see how your objects react in different scenarios.
It has a few "views" :
Wireframe mode - Where you can see only the edges of your mesh, and can see through the faces
Solid mode - The shading is simplified to help you ...