Skip to content

Draft : Neural Harmonics Texture integration#235

Open
moennen wants to merge 9 commits into
mainfrom
nicolasm/nht-integration-2-1
Open

Draft : Neural Harmonics Texture integration#235
moennen wants to merge 9 commits into
mainfrom
nicolasm/nht-integration-2-1

Conversation

@moennen
Copy link
Copy Markdown
Collaborator

@moennen moennen commented Apr 21, 2026

Adds Neural Harmonic Textures (NHT) as a new per-particle feature model for both 3DGRT (OptiX/Slang) and 3DGUT (CUDA/Slang), alongside the existing SH radiance path.

Generalizes the rendering pipeline from fixed 3-channel radiance to arbitrary-dim particle/ray features, with an optional MLP feature decoder (threedgrut/model/feature_decoder.py, features.py).

Adds optional FP16 storage for per-particle features (render.particle_feature_half) and for the integrated per-ray feature output (render.feature_output_half); gradients stay FP32.

New app configs: {nerf_synthetic,colmap}_{3dgrt,3dgut}_mcmc_nht.yaml.

moennen added 6 commits April 27, 2026 19:31
…ecialization

`HitParticleT<HasCanonical>` splits the k-buffer hit record into an SH base
and an NHT derived that adds the `canonicalIntersection` float3. The renderer
aliases pick the right one from `Params::PerRayParticleFeatures`, so the SH
path pays no storage for a field it never reads. `densityHit` routes its
out-arg through `canonicalIntersectionSlot` (struct field or stack scratch).
The forward feature ternary becomes `if constexpr` so the SH specialization
does not name-lookup a missing member.

Made-with: Cursor
Updates NHT encoding, tetrahedral interpolation, alpha handling, initialization, and refinement behavior so benchmark runs are closer to the GSplat reference while preserving SH defaults.
@moennen moennen force-pushed the nicolasm/nht-integration-2-1 branch from 2270775 to f850909 Compare April 27, 2026 23:31
moennen added 3 commits April 28, 2026 07:33
Keeps the production NHT backward path unconditional so diagnostic-only broken modes cannot affect training builds.
Aligns final evaluation with EMA semantics, keeps resumed training on live decoder weights, and mirrors forward hit bounds in the 3DGUT no-k-buffer backward path.
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