Since gradient often requires shader to work (which is not ideal for a uniformed interface), linear gradient should implemented on abstraction layer.