Function JobBuild.MortonCode2D

MortonCode2D (float2 p, float2 boundsMin, float2 boundsMax, int levels)

Child index BuildNode would pick for p at each of the top levels, root level in the high bits.

Public Static
uint MortonCode2D (

float2

p

float2

boundsMin

float2

boundsMax

int

levels

)

Child index BuildNode would pick for p at each of the top levels, root level in the high bits.

Contract: bit group (levels-1-d) of the result is the child index of the node containing p at depth d, for every d < levels.

Repeats the exact (min+max)*0.5 sequence that BuildNode splits on and QueryRec prunes by, rather than scaling p into a fixed grid. A scaled code disagrees with that sequence for a position within a few ulp of a cell boundary, which files the agent under a node whose bounds exclude it, and QueryRec would then prune the node away and never find it.

Branchless because the comparisons are near 50/50 on any realistic crowd. Written with ifs it costs two mispredicts per level per agent, which is enough to dominate the whole build.