It is March 2020. Multi-view stereo and structure-from-motion pipelines have spent two decades turning a handful of photographs into an explicit point cloud or mesh — faithful to the geometry the cameras could triangulate, blind to whatever the cameras never quite captured. A six-author paper proposes something stranger: throw the mesh away, and train a small neural network to answer, for any point in space and any viewing direction, how much light arrives there. Over the following three and a half years that idea for representing a scene is stripped of its need for real photographs, then stripped of its need for a neural network at all, arriving at an explicit, real-time representation that puts a version of it on an ordinary phone.
Where We Were
By 2020, view synthesis — the problem of generating a photograph from a camera position no photograph was actually taken from — had two working but incompatible families of solutions. The first, built on decades of multi-view stereo and structure-from-motion, triangulates matching features across a set of calibrated photographs into an explicit 3D representation: a point cloud, a voxel grid, or a textured mesh. That representation is discrete by construction — a fixed set of points or voxels, decided once at reconstruction time — and it struggles with anything a static, opaque surface model does not capture well: reflections, translucency, thin structures like foliage, or fine geometric detail smaller than the reconstruction’s resolution. The second family, image-based rendering, skips reconstructing 3D geometry at all and instead blends or warps nearby captured photographs directly into a novel view. That sidesteps the discretization problem but pays for it with density: it needs many closely spaced photographs to interpolate between, and it extrapolates badly to viewpoints the capture did not anticipate.
Neither family treated the scene itself as something differentiable — a function whose parameters could simply be optimized by gradient descent against a rendering loss, the way every other generative model in this book’s lineage already was. That gap is what a continuous, per-scene function optimized directly from posed photographs could close, if volume rendering could be made differentiable enough to backpropagate through.
The Breakthrough
NeRF, representing scenes as neural radiance fields for view synthesis (Mildenhall et al., 2020), answers the differentiability question directly: represent a scene as a fully connected, non-convolutional network whose input is a single continuous 5D coordinate — a 3D spatial location and a 2D viewing direction — and whose output is a volume density and a view-dependent emitted color at that point. To render a pixel, march a ray from the camera through the volume, query the network at points sampled along the ray, and composite the resulting densities and colors with classical volume rendering, which the paper notes is “naturally differentiable” — so the only supervision the whole pipeline needs is a set of photographs with known camera poses, the same calibration a structure-from-motion pipeline already computes as a byproduct. Each output pixel gets there by comparing the network’s rendered color against the corresponding pixel in a real captured photograph and backpropagating the difference through the volume-rendering integral and into the network weights — one network, trained from scratch, per scene.
Two details make that MLP good enough to compete with classical reconstruction rather than merely a demonstration. Each input coordinate passes through a fixed positional encoding before the network’s first layer — mapping a scalar to , applied with to each of the three position coordinates and to each of the two direction components — which lets a network that is otherwise biased toward smooth, low-frequency functions represent the sharp edges and fine texture real scenes have. And the architecture routes viewing direction in only after density is decided: the position alone, encoded and passed through eight fully connected layers of 256 channels, produces a density and a 256-dimensional feature; only that feature, concatenated with the encoded viewing direction, passes through one more 128-channel layer to produce the final view-dependent color — so a surface’s density is a property of where it is, and only its appearance is allowed to change with how it is viewed, matching how real materials behave.
Optimizing one of these networks to convergence — typically 100,000 to 300,000 iterations on a single NVIDIA V100 GPU — takes about one to two days, and rendering a single novel frame afterward, at 256 network queries per ray, takes roughly 30 seconds on the same V100. Both numbers matter for what happens next: a representation this slow to train and this slow to render was never going to reach real time by refining the same recipe. It first had to be pushed in the opposite direction, toward needing less input, before it was pushed toward speed.
That opposite direction arrived two and a half years later. DreamFusion, text-to-3D using 2D diffusion (Poole et al., 2022), asks whether a NeRF can be optimized with no photographs of the object at all — only a text prompt and a pretrained 2D text-to-image diffusion model standing in for what “photographs of that object” would even look like. The paper’s own framing is a DeepDream-like procedure: render the NeRF from a randomly sampled camera and light position, add noise to that rendering, and ask a frozen diffusion model — Imagen’s 64×64 base model, with no modifications — how far its predicted noise, conditioned on the text prompt, differs from the noise actually added. That mismatch, backpropagated through the renderer rather than through the diffusion model’s own network, is the entire training signal. No 3D data, no multi-view captures, and no gradient ever has to pass through the diffusion model’s weights, which the paper shows can be skipped without hurting the result and without the cost of differentiating through it.
The optimized representation itself is a mip-NeRF 360 MLP — five ResNet blocks of 128 hidden units with Swish activations and layer normalization between them — trained for 15,000 iterations, about 1.5 hours, on a four-chip TPUv4 machine, at a rendering resolution of only 64×64 to match the diffusion prior’s own resolution. One number stands out against everything 2D diffusion sampling had established: DreamFusion turns its classifier-free guidance weight up to , far past the range 2D image samplers use, and the paper reports this works without the visible artifacts a 2D sampler shows at similarly extreme guidance — because the NeRF’s rendered colors are already bounded by a sigmoid activation, where a 2D pixel sampler needs post-hoc clipping to stay in range. (Classifier-free guidance itself is introduced in full in Guidance; DreamFusion’s contribution here is the number, not a new mechanism.)
DreamFusion proved a NeRF could be conjured from language alone, but it inherited NeRF’s other problem in full: an MLP is still what gets optimized, and an MLP is still slow to render. By mid-2023, a wave of methods had chased that specific weakness — hash-grid feature lookups instead of a pure MLP, explicit voxel grids with far less network left to evaluate — trading some quality for large speedups, but none reaching real-time display at the resolutions unbounded, complete scenes actually need. 3D Gaussian splatting for real-time radiance field rendering (Kerbl et al., 2023) answers by discarding the network entirely. The scene becomes an explicit cloud of a few million 3D Gaussians — each one a position, an anisotropic covariance describing its size and orientation, an opacity, and a color — initialized from the same sparse point cloud a structure-from-motion calibration step already produces before any optimization begins. Training alternates gradient steps on those per-Gaussian parameters with an interleaved density-control pass that clones or splits Gaussians in under-reconstructed regions and prunes ones that have become too transparent or too large to matter, letting the number and placement of primitives adapt rather than staying fixed from initialization. What replaces the ray-marching MLP is a custom, tile-based, visibility-aware rasterizer, written to run efficiently on the GPU rather than assembled from generic autodiff operations, that projects each Gaussian onto the image plane and composites the overlapping ones in depth order — the paper’s stated result is training times competitive with the fastest prior methods and, for the first time on unbounded, complete scenes at 1080p, real-time display at 30 frames per second or more.
The Mathematics
NeRF’s rendering step turns a set of sampled densities and colors along one camera ray into a single pixel color by discretizing the volume rendering integral into a sum over sample points:
| Symbol | Meaning |
|---|---|
| the rendered color for camera ray | |
| number of points sampled along the ray | |
| volume density predicted at sample | |
| view-dependent color predicted at sample | |
| distance between sample and the next sample | |
| accumulated transmittance from the camera to sample |
DreamFusion’s score distillation sampling (SDS) loss replaces NeRF’s photometric loss with a gradient computed entirely from a frozen 2D diffusion model’s noise prediction:
| Symbol | Meaning |
|---|---|
| the NeRF’s parameters, the only thing optimized | |
| a rendered view of the NeRF at the current parameters | |
| that rendering after steps of forward noising | |
| the text prompt conditioning the diffusion model | |
| the frozen diffusion model’s predicted noise | |
| the noise actually added during the forward process | |
| a timestep-dependent loss weight |
A 3D Gaussian is a smooth density function centered at a mean position, with its shape controlled by a covariance matrix built from a separate scale and rotation, so the two stay independently optimizable:
| Symbol | Meaning |
|---|---|
| the Gaussian’s density value at 3D point | |
| a 3D point at which the Gaussian is evaluated | |
| the Gaussian’s center, a learned 3D position | |
| the covariance matrix controlling size and orientation | |
| a rotation matrix, built from a learned quaternion | |
| a diagonal scaling matrix, the learned per-axis extents |
Rendering composites the Gaussians that project onto a given pixel, sorted by depth, with the same transmittance-and-absorption structure NeRF’s volume rendering already established:
| Symbol | Meaning |
|---|---|
| the composited color at this pixel | |
| number of Gaussians overlapping this pixel | |
| color contributed by Gaussian | |
| opacity contributed by Gaussian at this pixel | |
| depth-sorted indices, nearest to camera first |
What It Enabled
| Explicit mesh or point cloud, multi-view stereo | NeRF, implicit MLP, 2020 | 3D Gaussian splatting, explicit primitives, 2023 | |
|---|---|---|---|
| Representation | Fixed set of points or polygons, decided at reconstruction time | Continuous function, one MLP per scene | Explicit but continuously optimizable primitives, one set per scene |
| Optimizable by gradient descent | No | Yes, but through hundreds of network queries per pixel | Yes, through a fast differentiable rasterizer |
| View-dependent effects (reflections, translucency) | Poorly, if at all | Yes, learned per point | Yes, via per-Gaussian, view-dependent color |
| Typical training time | Not learned; computed directly from calibrated photos | 1–2 days on a single V100 | Minutes to tens of minutes on a single GPU |
| Typical rendering rate | Fast, but fixed once reconstructed | Roughly 30 seconds per frame on a V100 | 30+ fps at 1080p, real time |
Reported on the Mip-NeRF360 benchmark dataset at each method’s best-quality setting, the same comparison the 3D Gaussian splatting paper ran against its own predecessors:
| Method | PSNR | Train time | Render rate |
|---|---|---|---|
| Plenoxels | 23.08 | 25m49s | 6.79 fps |
| Instant-NGP, big model | 25.59 | 7m30s | 9.43 fps |
| Mip-NeRF360 | 27.69 | 48h | 0.06 fps |
| 3D Gaussian splatting, 30K iterations | 27.21 | 41m33s | 134 fps |
The pattern across those four rows is the chapter’s real argument: the highest-quality prior method (Mip-NeRF360 itself) was three orders of magnitude too slow to render in real time, and the fastest prior methods (Plenoxels, Instant-NGP) bought their speed with a visible quality cost. 3D Gaussian splatting is the first entry in the table within half a PSNR point of the best quality on offer while rendering over a thousand times faster than that same best-quality method — not a small improvement traded for a small one, but a representation that stopped forcing the tradeoff.
None of the three papers in this chapter is itself a video-generation method, but each answers a question the rest of this book keeps needing an answer to: what does a scene look like from a position or a moment nobody photographed? NeRF and its explicit successor make that question answerable for a static, real scene from real photographs; DreamFusion makes it answerable for an imagined object from nothing but a caption, generalizing the score-distillation idea beyond the 3D case it was invented for. That is the same underlying question — “what is on the other side of this cut, this camera move, this occlusion” — that the learned-simulator framing of Predicting the Next Frame first asked for whole environments rather than single objects, and that the next two chapters push toward video models that behave like interactive worlds rather than fixed clips: whether a generative video model can be steered frame by frame like a game engine (Video Models Become Game Engines), and whether a world model can serve as a general-purpose foundation model rather than a one-off simulator (World Models as Foundation Models). A NeRF’s optimized weights are also a useful point of comparison for what “latent” means elsewhere in this book: they are a compressed, continuous representation of exactly one scene, learned from scratch every time, in contrast to the single shared, amortized latent space a VAE or a latent-diffusion model like Stable Diffusion learns once across an entire dataset (Latent Diffusion and Stable Diffusion) — the same idea of operating in a learned continuous space, applied at opposite ends of the “one model, one scene” versus “one model, every scene” spectrum.
Key Papers
| Paper | Authors | Year | Link | Why it matters |
|---|---|---|---|---|
| NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis | Mildenhall et al. | 2020 | arXiv:2003.08934 | Represented a 3D scene as a continuous, differentiable MLP optimized directly from posed photographs, replacing explicit reconstruction with a rendering loss |
| DreamFusion: Text-to-3D using 2D Diffusion | Poole et al. | 2022 | arXiv:2209.14988 | Introduced score distillation sampling, optimizing a NeRF from a text prompt alone using a frozen 2D diffusion model as the only supervision, with no 3D training data |
| 3D Gaussian Splatting for Real-Time Radiance Field Rendering | Kerbl et al. | 2023 | arXiv:2308.04079 | Replaced the MLP with an explicit cloud of anisotropic 3D Gaussians and a custom rasterizer, reaching real-time rendering at 1080p for the first time on unbounded scenes |
PM Lens
Papers referenced
- NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis Mildenhall et al. · 2020 · arXiv:2003.08934
- DreamFusion: Text-to-3D using 2D Diffusion Poole et al. · 2022 · arXiv:2209.14988
- 3D Gaussian Splatting for Real-Time Radiance Field Rendering Kerbl et al. · 2023 · arXiv:2308.04079