neural-raytracing / README.md
Quazim0t0's picture
Import from Quazim0t0/neural-raytracing; repoint refs to NeuralVerified
ac9d706 verified
|
Raw
History Blame Contribute Delete
2.66 kB
---
license: mit
tags:
- neural-rendering
- ray-tracing
- radiance-cache
- graphics
library_name: pytorch
---
# Neural Ray Tracing — Radiance Cache
The light-transport analog of the
[neural physics engine](https://huggingface.co/NeuralVerified/neural-physics-engine)
thesis: keep visibility and direct lighting **analytic**, learn **only the
indirect transport** with a tiny tied MLP. One analytic ray + next-event
estimation + a network lookup replaces the many-bounce random walk after
the first hit.
## How it was done
Render decomposition: `L = emitted + direct(analytic) + indirect(learned)`.
1. **Ground truth**: a small PyTorch path tracer
(`engine3d/raytrace.py`) renders high-spp references and splits each
pixel into emitted / direct / indirect components.
2. **Training data**: first-hit surface points + normals paired with the
path-traced indirect radiance at those points.
3. **The cache** (`engine3d/neural_rt.py`): one tiny MLP shared across the
whole scene (the tied-embedding structure used everywhere in this
project) maps (hit point, normal) → indirect RGB.
4. **Composition**: at render time, trace one analytic primary ray, add
analytic direct lighting (NEE), and look up the cache for the rest.
5. **Evaluation** (`experiments/w9_neural_radiance_cache.py`): PSNR on a
held-out camera view, compared against an *equal-cost* few-spp path
trace, plus the spp the baseline needs to match the neural render.
`experiments/w11_world_lighting.py` applies the same recipe to bake a
world ambient/GI field (`world_light.pt`) over the voxel world — this is
the "neural GI" used live in the
[Neural World demo Space](https://huggingface.co/spaces/NeuralVerified/neural-world),
parsed in-browser by `pt_loader.js`.
## Checkpoints
| file | net | consumed by |
|---|---|---|
| `experiments/radiance_cache.pt` | indirect radiance cache MLP | `w9_neural_radiance_cache.py` renders |
| `experiments/world_light.pt` | world ambient/GI field | Neural World demo (browser) |
## Validation
![neural raytrace validation](neural_raytrace_validation.png)
![world lighting validation](world_lighting_validation.png)
## Reproduce
```
python experiments/w9_neural_radiance_cache.py # trains + renders comparison
python experiments/w11_world_lighting.py # bakes world_light.pt
```
---
<!-- neuralverified-relocation-note -->
> **Now hosted by [NeuralVerified](https://huggingface.co/NeuralVerified).**
>
> This repo was moved into the NeuralVerified organization to help organize my profile.
> Originally published at [`Quazim0t0/neural-raytracing`](https://huggingface.co/Quazim0t0/neural-raytracing).