Skip to content

Neural Harmonics Texture integration#235

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

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

Conversation

@moennen

@moennen moennen commented Apr 21, 2026

Copy link
Copy Markdown
Collaborator

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 moennen force-pushed the nicolasm/nht-integration-2-1 branch from 2270775 to f850909 Compare April 27, 2026 23:31
@moennen moennen force-pushed the nicolasm/nht-integration-2-1 branch from 0ab567e to 92ae9a5 Compare June 2, 2026 23:30
@moennen moennen changed the title Draft : Neural Harmonics Texture integration Neural Harmonics Texture integration Jun 10, 2026
@moennen moennen force-pushed the nicolasm/nht-integration-2-1 branch 2 times, most recently from 320b889 to b95e1b0 Compare June 11, 2026 11:24
@moennen moennen requested a review from wilsonCernWq June 11, 2026 11:37
moennen added 20 commits June 11, 2026 14:56
…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.
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.
@moennen moennen force-pushed the nicolasm/nht-integration-2-1 branch from b95e1b0 to 6376dfb Compare June 11, 2026 18:57
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