refactor(ugc): Embree is required; the hand-written ray hierarchies are gone

Embree 4 (always built) replaces the UGC server's own bounding volume
hierarchies (the nearest-hit one and the occlusion rays' any-hit one), with no
fallback to them. ray_backend is embree (default) or hiprt (optional build;
Embree when it can't be used).

Settings, stored options and stats that say builtin still read: it is embree
(UgcRays::Parse, UgcProcessOptions::Parse). The dashboard's picker,
/reprocessproperty and --make-model offer embree and hiprt.

Tests: the backends are compared with Embree (hiprt when built), Embree against
rays whose hits are known, and the clutter's occlusion against what the old
hierarchy worked out (296 vertices summing to 114.5, 26 open, 183 dark); the
pinned model hashes are unchanged with Embree.

Check: ray_backend=builtin in an ini still starts and uses embree; the
settings page offers Embree and HIPRT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-29 12:15:50 -05:00
parent 07154c58d2
commit edba81ff7c
14 changed files with 107 additions and 430 deletions

View File

@@ -136,10 +136,10 @@ remove_hidden_faces=1
hsr_ground_plane=0
hsr_resolution=1024
# What traces the occlusion rays: builtin, embree (Intel Embree on the CPU) or
# What traces the occlusion rays: embree (Intel Embree on the CPU) or
# hiprt (the GPU, when built with DLU_HIPRT and the machine has one; else embree). hiprt_device: which GPU (0: the first
# HIP or CUDA device; restart to change).
ray_backend=builtin
ray_backend=embree
hiprt_device=0
# denoise: off, or oidn (when built with DLU_OIDN; else off): a model's icon is drawn from its colors before the