Skip to content

Rework neighbors API - #253

Open
tychedelia wants to merge 1 commit into
python-particle-apifrom
neighbor-lists
Open

tychedelia wants to merge 1 commit into
python-particle-apifrom
neighbor-lists

Conversation

@tychedelia

@tychedelia tychedelia commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Neighbor lists as per-particle attributes, like TouchDesigner's Neighbor POP.

  • FIND_NEIGHBORS searches the grid once and writes neighbors (up to max indices, default 64) and neighbor_count onto each particle. Past max it keeps a spread sample rather than the nearest.
  • NEIGHBOR reads those lists, so several reductions share one search (flocking does five). New: relative=True for a_j - a_i, and an INVERSE_SQUARE falloff. Particles never count themselves. grid= still does an exact search.
  • Custom kernels just declare neighbors and neighbor_count, and apply binds them by name like position.
  p.apply(FIND_NEIGHBORS, grid=grid, radius=2.5)
  p.apply(NEIGHBOR, "velocity", out="alignment", op=SUM)
  p.apply(NEIGHBOR, "position", out="separation", op=SUM, relative=True, radius=1.2, falloff=INVERSE_SQUARE)

Also adds processing_particles_find_neighbors to the FFI.

@tychedelia
tychedelia added this pull request to stack #256 September 29, 2026 04:50
@tychedelia
tychedelia removed this pull request from stack #256 September 29, 2026 05:06
@tychedelia
tychedelia added this pull request to stack #258 September 29, 2026 05:06
@github-actions

github-actions Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Visual regression: 43 new of 43 cases

case status detail
rectangle 🆕 new no baseline on main
primitives_3d 🆕 new no baseline on main
particles_noise 🆕 new no baseline on main
py_primitives_3d 🆕 new no baseline on main
py_particles_noise 🆕 new no baseline on main
py_animated_mesh 🆕 new no baseline on main
py_background_image 🆕 new no baseline on main
py_blend_modes 🆕 new no baseline on main
py_box 🆕 new no baseline on main
py_camera_controllers 🆕 new no baseline on main
py_curves 🆕 new no baseline on main
py_custom_material 🆕 new no baseline on main
py_feedback 🆕 new no baseline on main
py_flocking 🆕 new no baseline on main
py_flocking_duck 🆕 new no baseline on main
py_flocking_gpu 🆕 new no baseline on main
py_geometry_methods 🆕 new no baseline on main
py_gltf_load 🆕 new no baseline on main
py_lights 🆕 new no baseline on main
py_materials 🆕 new no baseline on main
py_multi_window 🆕 new no baseline on main
py_particles_animated 🆕 new no baseline on main
py_particles_basic 🆕 new no baseline on main
py_particles_density 🆕 new no baseline on main
py_particles_emit 🆕 new no baseline on main
py_particles_emit_gpu 🆕 new no baseline on main
py_particles_from_mesh 🆕 new no baseline on main
py_particles_gpu_surface 🆕 new no baseline on main
py_particles_gpu_surface_lit 🆕 new no baseline on main
py_particles_lifecycle 🆕 new no baseline on main
py_particles_lines 🆕 new no baseline on main
py_particles_lissajous 🆕 new no baseline on main
py_particles_points 🆕 new no baseline on main
py_particles_scatter_volume 🆕 new no baseline on main
py_particles_sphere 🆕 new no baseline on main
py_particles_stress 🆕 new no baseline on main
py_particles_surface 🆕 new no baseline on main
py_primitives_2d 🆕 new no baseline on main
py_rectangle 🆕 new no baseline on main
py_shapes 🆕 new no baseline on main
py_style_stack 🆕 new no baseline on main
py_text 🆕 new no baseline on main
py_window_controls 🆕 new no baseline on main

baseline unknown · adapter llvmpipe (LLVM 20.1.2, 256 bits) (Vulkan, Mesa 25.2.8-0ubuntu0.24.04.2 (LLVM 20.1.2))

Open the visual report · workflow run

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant