with [*fixed topology*]{} meshes. In particular, one can locally order the vertices and keep the order fixed. Then, graph convolution can be defined as follows: $$\label{ordering_based}
    (f\star g)_x = \sum_{\ell=1}^L g_\ell f(x_\ell).$$ where $\{x_1, \hdots, x_L\}$ denote the neighbours of vertex $x$ ordered in a fixed way. Here, in analogy with the patch operators, each patch operator is a single neighbouring vertex.

In the Euclidean setting, the order is simply a raster scan of pixels in a patch. On meshes, we opt for a simple and intuitive ordering using spiral trajectories inspired by [@spirals]. Let $x\in \mathcal{V}$ be a mesh vertex, and let $R^d(x)$ be the $d$-[*ring*]{}, an ordered set of vertices whose shortest (graph) path to $x$ is exactly $d$ hops long; $R_j^d(x)$ denotes the $j$th element in the $d$-ring (trivially, $R_1^0(x) = x$). We define the [*spiral patch operator*]{} as the ordered sequence $$S(x) = \{x, R_1^1(x), R_2^1(x), \hdots, R^h_{|R^h|}\},$$ where $h$ denotes the patch radius, similar to the size of the kernel in classical CNNs. Then, [*spiral convolution*]{} is: $$(f * g)_x = \sum_{\ell=1}^{L} g_\ell \, f\big(S_\ell(x)\big).  $$ The uniqueness of the ordering is given by fixing two degrees of freedom: the direction of the rings and 