Log inGet started
World

Builtin Library

Branchmain
Branchesmainpublish
Commitdd348ac6c3

README.md

edges

The sides of a mesh as point pairs: the first stage of the edge table. It reads pt (the point each vertex reads), and each primitive's vstart and vcount. One invocation per primitive writes, for every vertex slot of its run, the side leaving that vertex as lo, hi (its lower and higher point), face (the owning primitive) and rev (1 when the side runs from the higher point to the lower). The outputs hold nv slots, a bind of the vertex count. A slot with no side (the last vertex of an open run, a side joining a point to itself, a primitive with fewer than two vertices) holds ZERO_NONE (the largest i32) in lo and hi and -1 in face, so a sort puts it last. Integers are 32-bit words, exact.

The edge table is this kernel, a stable sort of the slots by hi and then by lo, and the edges_runs kernel (run heads, then the table). The sort and the compaction between are the sort and compact kernels; edges_runs states the whole sequence, and the core.edges node runs it. closed_all is 1 for a mesh of faces, which wrap; with 0 the closed column decides per primitive, for curves.

np is the number of primitives in the plain variant. Over a live count (COUNT=device, see the abi README) the live primitives are read from domain_count and the dispatch covers their capacity; that variant wraps every primitive and binds no closed, which keeps it at 8 storage buffers (8 in the plain variant).