Depends which kind of look you’re going for If metallic, then just download pretty much anything with metallic in the name and check out how they do it. No need to attempt speckles yet if just learning. Basic idea is darker diffuse/glossy edges for the main material using facing, and a fresnel/fake fresnel gloss to mix in the coat.
Util.PolarCartesian: Just basic transformation between cartesian and polar coordinates. Mapping a checker pattern on a plane will normally get a rectangular checker pattern. Going through polar transformation will give you a radial pattern instead (x becomes radius and y becomes angle around perimeter, I keep z unchanged because I need it that way rather than going 3D with it).
Util.CustomMappingNode: Pretty much same as a normal mapping node, but has inputs so you can control it with maths (i.e. increase x scale along y axis or whatever). But it’s not used here for anything useful and can be replaced with a normal mapping node.
Util.Math.Linear: Very simple multiply and add node. Use it all the time when controlling an already scaled/normalized output. I would normally use a LERP (custom node) to easily set min and max values, but this one is less complicated and thus faster. Don’t think LERP was included here.
PBS.Anisotropic: Wasn’t supposed to be there, not happy with it yet. Should use a normal anisotropic shader instead.
The atan2 node setup I had doesn’t work. It will appear to work until you do some special stuff with it, then it will fail miserably and cause “white and blocky noise lines” as the divisor closes in on zero (at least I’m guessing that’s why). Using the radial gradient texture doesn’t produce this failure.
Also, in my attempts to do a constant/machine feed look, using spirals instead of just noise as bumps, I had much more success using a custom math node group (triangle wave, basically, to simulate the lathe tool shape) rather than using the waves texture. I have no idea what is going on in there, but it messes up badly in some circumstances. Not talking about moire, because I get that regardless.
If you don’t know what some things do, make sure you have node wrangler enabled and ctrl+shift click nodes to preview output (doesn’t work inside groups, but you can always ungroup). The x^2.2 is just so I can measure correct values on a rendered screen of the preview (so that expected value 0.5 actually reads out 0.5 rather than 0.73. Should not be used on colors.