RADIANT: Object-Centric Feed-Forward Global Illumination
Organizations: MIT CSAIL
Abstract
Feed-forward neural renderers synthesize global illumination across novel 3D scenes without per-scene optimization or runtime ray tracing. Existing transformer-based renderers tokenize individual triangles, so self-attention scales quadratically with mesh resolution. Yet macroscopic radiative transport is governed by the underlying surface geometry and object arrangements rather than a particular mesh discretization; finer tessellation can thus inflate token counts without changing the underlying transport physics, motivating a discretization-agnostic and object-centric representation. We introduce RADIANT (RADiance-based Inter-Actor Neural Transformer), an object-centric architecture for feed-forward global illumination from point inputs. By representing each object with a compact budget of 32 surface-patch tokens, RADIANT decouples attention sequence length from polygon counts. In a single network, an inter-object scene transformer models 3D radiative exchange and a view decoder renders images at target camera poses. To capture light transport without materializing O(N^2) bias matrices, invariant form-factor attention embeds geometric distances and surface orientations directly into query-key dot products as SE(3)-invariant inner products weighted by learned area and material gains. For primary visibility without mesh connectivity, camera rays cross-attend scene tokens guided by depth-tested point splats in a shared spherical frame. Across a 1.03M-scene benchmark under matched model capacity, RADIANT reaches 25 dB tone-mapped PSNR in 5x fewer training steps than RenderFormer, and achieves 32.2 dB at 600k steps (+3.3 dB over RenderFormer and +7.6 dB over RenderFormer-V2). We further demonstrate the scalability of RADIANT, which completes a 512x512 forward pass of a 500-object scene in 0.83 s, with computational cost scaling with the number of objects rather than polygons.
Figures & tables
| Transport | |||||||
|---|---|---|---|---|---|---|---|
| Method | Input | Triangle attention | tokens | attention | Primary visibility | Per-scene optimization | Steps to 25 dB |
| Neural Radiosity | mesh † | — | — | — | ray tracing | required | — |
| RenderFormer | triangles | all pairs | learned | none | 80k | ||
| RenderFormer-V2 | triangles | windowed | learned | none | n/r | ||
| RenderFormer++ | triangles | per object | G-buffer | none | — | ||
| RADIANT (ours) | point inputs | none | point splat | none | 16k ( ) | ||
| Model | PSNR (per-image / pooled) | LPIPS | |
|---|---|---|---|
| RADIANT (ours) | 32.22 / 27.65 | 0.042 | 0.012 |
| RenderFormer | 28.95 / 25.80 | 0.077 | 0.019 |
| RenderFormer-V2 | 24.60 / 23.05 | 0.117 | 0.046 |
| RADIANT (ours) | RenderFormer | RenderFormer-V2 | |||||
|---|---|---|---|---|---|---|---|
| Entities per scene | Images | PSNR | LPIPS | PSNR | LPIPS | PSNR | LPIPS |
| 796 | 32.35 | 0.037 | 29.22 | 0.064 | 24.46 | 0.104 | |
| 8–10 | 1,376 | 32.15 | 0.041 | 29.00 | 0.075 | 24.52 | 0.116 |
| 11–13 | 1,336 | 32.44 | 0.043 | 29.11 | 0.079 | 24.80 | 0.118 |
| 604 | 31.64 | 0.051 | 28.12 | 0.094 | 24.35 | 0.136 | |
| Test set | Scenes | Entities | RADIANT (ours) | RenderFormer | RenderFormer-V2 |
|---|---|---|---|---|---|
| Held-out split | 1,028 | 3–18 | 32.21 / 0.042 | 28.95 / 0.077 | 24.57 / 0.117 |
| A : unseen assets | 250 | 3–17 | 32.59 / 0.041 | 29.36 / 0.073 | 24.90 / 0.110 |
| B : 25–50 entities | 280 | 25–50 | 25.32 / 0.095 | 22.50 / 0.171 | 20.06 / 0.227 |
| C : object sizes of B | 250 | 3–18 | 34.95 / 0.024 | 32.35 / 0.044 | 26.44 / 0.079 |
| Original views | New views | ||||||
|---|---|---|---|---|---|---|---|
| Point inputs | Fine-tuning | PSNR | LPIPS | PSNR | LPIPS | ||
| Complete | none | 33.87 | 0.034 | 0.004 | 34.24 | 0.037 | 0.004 |
| Partial (single-view scan) | none | 26.76 | 0.085 | 0.010 | 26.33 | 0.100 | 0.010 |
| Partial (single-view scan) | 400 steps | 37.51 | 0.015 | 0.003 | 30.30 | 0.065 | 0.006 |
| Complete | 400 steps | 39.02 | 0.009 | 0.002 | 33.58 | 0.038 | 0.005 |
| Variant | PSNR | LPIPS | ||
|---|---|---|---|---|
| Full model | / 26.16 | 0.059 | 0.019 | — |
| No invariant form-factor attention (§ 3.4 ) | / 25.92 | 0.063 | 0.021 | |
| No inter-object scene attention (§ 3.1 ) † | / 24.89 | 0.072 | 0.036 | |
| No rasterizer channels (hit geometry, routing bias) | / 24.41 | 0.092 | 0.025 |
Appendix figures & tables19 assets
Supplementary material from the paper’s appendix.
Appendix
| Hyperparameter | Value | Hyperparameter | Value |
|---|---|---|---|
| Hardware | NVIDIA A100 GPUs | Gradient clipping | Global norm 1.0 |
| Global batch size | 24 | Mixed precision | bf16 autocast, fp32 master weights |
| Optimizer | AdamW, | Loss function | MAE in |
| Peak learning rate | LPIPS backbone | AlexNet | |
| Warm-up | 8,000 linear steps | Image resolution | |
| Learning rate decay | Cosine to at 100k/200k/300k/600k | Data augmentation | None (1 view per sample) |
| RADIANT (ours) | RenderFormer | RenderFormer-V2 | ||||
|---|---|---|---|---|---|---|
| Step | PSNR | LPIPS | PSNR | LPIPS | PSNR | LPIPS |
| 6k | 23.45 | 0.156 | 16.15 | 0.350 | — | — |
| 16k | 25.91 | 0.103 | 19.02 | 0.244 | 16.39 | 0.326 |
| 25k | 26.97 | 0.089 | 20.42 | 0.199 | 17.13 | 0.284 |
| 50k | 28.63 | 0.070 | 23.25 | 0.154 | 19.98 | 0.204 |
| 80k | 29.70 | 0.061 | 25.06 | 0.133 | 21.75 | 0.175 |
| Scenes (after exclusions) | 1,027,596 |
|---|---|
| Images per scene / total images | 4 / 4,110,384 |
| Resolutions / samples per pixel | / 512 and / 256 |
| Training / held-out scenes | 1,026,568 / 1,028 (4,112 images) |
| Foreground objects per scene | 1–6 (from 18,085 meshes) |
| Entities per scene (objects, walls, lights) | mean 10.1; p5/p50/p95 = 5/10/15; max 18 |
| Emissive entities per scene | mean 4.5; range 1–8 |
| RADIANT | RenderFormer | ||||||
|---|---|---|---|---|---|---|---|
| Component | 10 | 50 | 200 | 10 (flash) | 50 (flash) | 200 (flash) | 200 (sdpa) |
| Encoder | 7.3 | 16.0 | 48.0 | 0.3 | 0.9 | 3.0 | 3.0 |
| Transport | 9.0 | 16.0 | 104.0 | 19.2 | 116.1 | 1,203.0 | 2,959.9 |
| View decoder + DPT | 50.2 | 55.7 | 75.4 | 15.6 | 26.8 | 71.4 | 101.5 |
| Other | 7.5 | 7.7 | 20.6 | 1.2 | 1.4 | 2.6 | 2.9 |
| Total | 74.0 | 95.4 | 248.0 | 36.3 | 145.3 | 1,280.0 | 3,067.3 |
| RADIANT | RenderFormer | Speedup | |||||
|---|---|---|---|---|---|---|---|
| Objects (triangles) | time | memory | sdpa | flash | memory | sdpa | flash |
| 1 (512) | 70.4 | 4,255 | 19.4 | 30.2 | 1,631 | ||
| 10 (5,120) | 73.3 | 4,299 | 33.6 | 35.9 | 1,644 | ||
| 50 (25,600) | 95.7 | 4,480 | 260.8 | 145.4 | 1,954 | ||
| 100 (51,200) | 136.8 | 5,863 | 848.1 | 398.5 | 2,859 | ||
| 200 (102,400) | 248.5 | 10,898 | 3,065.2 | 1,288.9 | 4,669 | ||
| Triangles per object (total) | RADIANT | RF sdpa | RF flash | Speedup (sdpa) | Speedup (flash) |
|---|---|---|---|---|---|
| 512 (5,120) | 72.7 | 33.5 | 35.5 | ||
| 2,048 (20,480) | 72.7 | 182.0 | 109.8 | ||
| 8,192 (81,920) | 72.7 | 2,030 | 872.5 | ||
| 32,768 (327,680) | 72.7 | 29,965 | 11,309 |
| Model | Inference (ms) | Training step (s) | Steps to 25 dB | Time to 25 dB (h) |
|---|---|---|---|---|
| RADIANT | 130 | 1.09 | 16k | 4.8 |
| RenderFormer | 42 / 49 | 0.91 / 0.72 | 80k | 15.9–20.3 |
| RenderFormer | Speedup | ||||
| Objects | RADIANT | sdpa | flash | sdpa | flash |
| 1 | 28.6 | 17.4 | 28.9 | ||
| 10 | 30.3 | 25.4 | 33.1 | ||
| 50 | 47.6 | 245.7 | 137.8 | ||
| 100 | 80.8 | 823.6 | 384.7 | ||
| Patch tokens per object | PSNR | LPIPS | Step time | |
|---|---|---|---|---|
| 8 | / 25.93 | 0.062 | 0.021 | |
| 16 | / 25.93 | 0.062 | 0.021 | |
| 32 (default) | / 25.92 | 0.063 | 0.021 | |
| 64 | / 25.92 | 0.063 | 0.021 |
| Batch size | 1 | 8 | 32 | 1 | 8 | 32 | 1 | 8 |
|---|---|---|---|---|---|---|---|---|
| RenderFormer (sdpa) | 21.5 | 13.7 | 12.8 | 22.5 | 15.2 | 14.4 | 29.2 | 22.3 |
| RenderFormer (flash) | 30.6 | 12.4 | 10.7 | 30.4 | 13.5 | 12.1 | 33.0 | 19.4 |
| RADIANT (sdpa, ours) | 30.3 | 7.1 | 5.5 | 33.1 | 13.2 | 11.9 | 73.2 | 51.3 |
| Resolution | Model | Objects | (ms) | (ms) | ms/view, | ||
|---|---|---|---|---|---|---|---|
| RADIANT | 8 | 19.5 | 52.3 | 71.8 | 53.5 | 52.6 | |
| RenderFormer | 8 | 17.7 | 15.7 | 33.4 | 16.8 | 16.0 | |
| RADIANT | 50 | 37.7 | 57.9 | 95.7 | 60.3 | 58.5 | |
| RenderFormer | 50 | 117.5 | 27.8 | 145.3 | 35.1 | 29.6 | |
| RADIANT | 8 | 19.4 | 13.9 | 33.3 | 15.1 | 14.2 | |
| RenderFormer | 8 | 17.5 | 13.3 | 30.9 | 14.4 | 13.6 |
| Module | Configuration | Parameters |
|---|---|---|
| Point encoder | 16-D inputs, hidden 512/1,024/1,024, backbone 2,048, GroupNorm; 32 FPS patch tokens of 128 neighbors | 9,985,024 |
| Scene transformer | 12 layers, width 1,024, 8 heads of 128, FFN 1,890, QK-LayerNorm, OBB-RoPE | 96,962,716 |
| Register tokens | 16 | 16,384 |
| Receiver/sender encoders | two MLPs | 530,944 |
| Invariant-attention gains | two MLPs (Sec. 3.4 ) | 51,072 |
| Object FiLM | intrinsic-complexity statistics scale/shift | 2,112,512 |
| Variant | PSNR | LPIPS | ||
| Full model | / 26.16 | 0.059 | 0.019 | — |
| No invariant form-factor attention (§ 3.4 ) | / 25.92 | 0.063 | 0.021 | |
| No inter-object scene attention (§ 3.1 ) † | / 24.89 | 0.072 | 0.036 | |
| No FiLM conditioning (§ 3.3 ) | / 26.09 | 0.060 | 0.019 | |
| No register tokens | / 26.10 | 0.060 | 0.019 | |
| No rasterizer channels (hit geometry, routing bias) | / 24.41 | 0.092 | 0.025 |
| Variant | Scene tokens | Rasterizer channels | Splat | PSNR | LPIPS | ||
|---|---|---|---|---|---|---|---|
| Reference (no invariant attention) | ✓ | ✓ | ✓ | / 25.92 | 0.063 | 0.021 | — |
| No rasterized splat | ✓ | ✓ | ✗ | / 25.92 | 0.062 | 0.021 | |
| No rasterizer channels | ✓ | ✗ | ✓ | / 24.08 | 0.099 | 0.027 | |
| No rasterizer channels or splat | ✓ | ✗ | ✗ | / 24.01 | 0.094 | 0.027 | |
| No scene tokens | ✗ | ✓ | ✓ | / 21.44 | 0.109 | 0.062 |
| Seed | ||||||||
| Variant | 42 | 43 | 44 | 45 | 46 | 47 | Mean SD | |
| Full model | 29.97 | 29.95 | 29.96 | – | – | – | — | |
| No invariant form-factor attention | 29.36 | 29.49 | 29.45 | – | – | – | ||
| No inter-object scene attention † | 28.55 | 26.95 | 26.93 | 27.69 | 26.98 | 27.89 | ||
| No FiLM conditioning | 29.79 | 29.81 | 29.82 | – | – | – | ||
| No register tokens | 29.84 | 29.81 | 29.82 | – | – | – | ||
| Model | PSNR | LPIPS | ||
|---|---|---|---|---|
| RenderFormer | / 21.84 | 0.166 | 0.041 | — |
| RenderFormer, 32 pooled tokens per object | / 21.59 | 0.165 | 0.041 | |
| RADIANT (full model) | / 26.16 | 0.059 | 0.019 | — |
| Method | Input | Tokens | GI | Amortized |
|---|---|---|---|---|
| Per-scene fields ( Mildenhall et al., 2020 ; Kerbl et al., 2023 ) | images | — | per scene | — |
| RenderFormer ( Zeng et al., 2025 ) | triangles | ✓ | ✓ | |
| RenderFormer-V2 ( Zeng et al., 2026 ) | triangles, media, environment maps | , windowed | ✓ | ✓ |
| RenderFormer++ ( Du et al., 2026 ) | triangles | per object, then | ✓ | ✓ |
| RADIANT (ours) | point inputs (from meshes or point clouds) | , 32 per object | ✓ | ✓ |
| Corruption | Level | Objects | All |
|---|---|---|---|
| Clean input | — | 32.1 / 0.043 | |
| Point density (samples per entity) | 1,024 | 31.1 / 0.050 | 28.3 / 0.055 |
| 512 | 27.1 / 0.079 | 25.2 / 0.082 | |
| 256 | 23.6 / 0.119 | 20.0 / 0.194 | |
| Position noise ( , % of box diagonal) | 0.5 | 30.8 / 0.049 | 23.5 / 0.078 |
| 1 | 28.5 / 0.062 | 19.4 / 0.144 | |
Neural Rendering
Neural rendering uses learned 3D scene and light representations to synthesize, edit, and relight images from new viewpoints.
See all 120 papers