This is an RFE towards the top of all TOPs, the Ramp TOP.
The issue comes when you expect its (default setting) pixel values to be between 0 and 1 in a linear fashion no matter what, which if you’re adjusting its phase is not true when extending/warping/looping back 0->1->0
Probably the reason for this - and many thanks to Elburz’s analysis - is that much of the float Phase parameter values force the ramp to operate on sub-pixel levels, resulting in some interpolation when jumping between 1 and 0. See the image above, in my case this is totally unwanted.
So the RFE in essence is: let us choose in the Ramp TOP (or wherever it could apply) what units the Phase parameter operate on, similar to the dropdown in Transform parameters and other places. Or any other solution keeping the Ramp TOP “ideal”.
To “fix” this you can put a Transform TOP with Repeat Tiling after the Ramp and change the X Transform parameter by integer pixels. Would be great if we could achieve the same behavior in the Ramp TOP.
This was a TOUGH one to track down (as it was causing artifacts in other shaders later). Our guess after finding the behaviour is the sub-pixel/float movement of the phase. Whether setting new unit options or a button that forces the phase to only step by full pixels would be useful. Even when we had the Nearest Pixel setting on the common page this would still happen.
At least for Horizontal and Vertical, my opinion would be that it should just function like the Pattern CHOP which does this perfectly in Ramp Mode. For Circular and Radial it’s a whole different issue.
cheers
Markus
Edit: now I’m not sure anymore - visually the Ramp TOP looks much smoother as it is constantly interpolating all the values in direct comparison to using a Pattern CHOP driving a Ramp. Maybe it’s just better to use CHOPs → TOPs when dealing with such discreet requirements?