User determined circular shift:
r src((x+val(0,0,X-1))%X,(y+val(1,0,Y-1))%Y,0) g src((x+val(0,0,X-1))%X,(y+val(1,0,Y-1))%Y,1) b src((x+val(0,0,X-1))%X,(y+val(1,0,Y-1))%Y,2)
r
src((x+val(0,0,X-1))%X,(y+val(1,0,Y-1))%Y,0)
g
src((x+val(0,0,X-1))%X,(y+val(1,0,Y-1))%Y,1)
b
src((x+val(0,0,X-1))%X,(y+val(1,0,Y-1))%Y,2)