Umat equivalent of Mat.at() to access specific pixel

there is no such thing, this is where CPU and GPU progamming differs

in general, there are no “random access” operations on the GPU
(no (i,j), no drawing)

if you cannot express your idea “as vectors”, it’s not possible on the GPU.