The point transformer layer: local vector self-attention with a trainable relative position encoding injected into both branches.Start from standard scalar dot-product attention, where each neighbor contributes with a single scalar weight:
$$\mathbf{y}_i = \sum_{\mathbf{x}_j \in \mathcal{X}} \rho\big(\varphi(\mathbf{x}_i)^\top \psi(\mathbf{x}_j) + \delta\big)\,\alpha(\mathbf{x}_j)$$
Vector attention replaces that scalar with a
weight vector, so each feature channel can be modulated independently. The point transformer layer specializes vector attention with three concrete choices -- a subtraction relation, a local neighborhood $\mathcal{X}(i)$ given by the $k$ nearest neighbors of $\mathbf{x}_i$, and a position encoding $\delta$ added to the attention branch
and the value branch:
$$\mathbf{y}_i = \sum_{\mathbf{x}_j \in \mathcal{X}(i)} \rho\Big(\gamma\big(\varphi(\mathbf{x}_i) - \psi(\mathbf{x}_j) + \delta\big)\Big) \odot \big(\alpha(\mathbf{x}_j) + \delta\big)$$
Here $\varphi, \psi, \alpha$ are pointwise linear projections, $\gamma$ is an MLP with two linear layers and one ReLU that turns the relation vector into an attention vector, $\rho$ is a softmax over the neighborhood, and $\odot$ is the elementwise product.
The position encoding is not hand-designed. It is an MLP $\theta$ (two linear layers, one ReLU) applied to the coordinate difference, trained end to end with everything else:
$$\delta = \theta(\mathbf{p}_i - \mathbf{p}_j)$$

Figure 2 is worth reading against the Killer Application. The input $(x, p)$ splits three ways: the attention branch $\varphi, \psi$, the position branch $\delta$, and the value branch $\alpha$. The two circled sums show $\delta$ entering
both sides before $\gamma$ produces the attention vectors. That double injection is not cosmetic -- Table 6 shows that feeding the relative position encoding to only one branch costs $1.7$ to $3.4$ mIoU. The figure is the mechanism by which geometry, not just feature similarity, decides how a point aggregates its neighborhood.