Media Molecule
Media Molecule abandoned two years of voxel and polygon rendering to build an atomic software splat engine after realizing conventional geometry pipelines could not deliver both intuitive distance-field sculpting and a painterly aesthetic.
AI-assisted summary of Alex Evans at Umbra Ignite 2015: Learning From Failure — original source. Check the original for full context.
Source published:
Key ideas
- Media Molecule built Dreams around Constructive Solid Geometry and signed distance fields, completely eliminating imported polygon meshes, pre-baked UV maps, and traditional 3D texture pipelines. (0:09)
- After two years of R&D across marching cubes, dual contouring, GigaVoxels, and froxels, Alex Evans scrapped the engine to implement a compute-based point splat renderer that matched concept art brushwork. (21:26)
- The final engine encodes geometry as vector-quantized point hierarchies consuming roughly 4.5 bytes per splat, rasterized purely through PS4 compute shader atomic operations. (22:51)
- Stylized rendering shortcuts—such as jittering splats for bokeh depth of field and tracing a single occlusion ray per pixel resolved via TAA—bypassed heavy post-process blur passes while maintaining performance. (25:04)
Detailed notes
## Background This presentation was published on YouTube by Media Molecule on October 2, 2015. It features technical director Alex Evans delivering an adapted version of his SIGGRAPH 2015 talk in Helsinki at Umbra Ignite, reflecting on the four-year journey and technical dead ends involved in discovering the custom engine for Dreams.
## TL;DR Alex Evans details Media Molecule's unconventional engineering journey to build Dreams on the PlayStation 4 without traditional polygon meshes, textures, or UV maps, starting with mathematical signed distance fields and Constructive Solid Geometry. After experimenting with and discarding polygonal dual contouring, order-independent transparency, fuzzy voxels, and froxel-based concentric shell lighting due to crippling performance and visual mismatches, the team hit an artistic and technical dead end. Evans ultimately compromised with art director Karim Hourani by ditching standard pipelines in favor of a vector-quantized point splat engine running entirely through custom compute-shader software rasterization. Paired with imperfect shadow maps, circle-of-confusion bokeh jitter, and single-ray ambient occlusion smoothed by temporal anti-aliasing, this splat architecture realized both the game's distinctive painterly aesthetic and its strict 60 Hz performance budget.
## Atmosphere & style The presentation is candid, breezy, and disarmingly self-deprecating, driven by Evans's energetic, fast-talking enthusiasm and old-school demoscene sensibility. While tackling complex rendering math and architectural failure modes, the tone remains lighthearted, punctuated by wry jokes about broken shader compilers, slide clicker malfunctions, and personal prejudices against graphics techniques. Underneath the humor lies a palpable, authentic emotional arc of creative exhaustion and eventual breakthrough, giving viewers the intimate feeling of an honest postmortem shared over drinks rather than a sanitized corporate keynote.
## Bulletin - [00:09](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=9s) Media Molecule built Dreams around Constructive Solid Geometry and signed distance fields, completely eliminating imported polygon meshes, pre-baked UV maps, and traditional 3D texture pipelines. - [21:26](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1286s) After two years of R&D across marching cubes, dual contouring, GigaVoxels, and froxels, Alex Evans scrapped the engine to implement a compute-based point splat renderer that matched concept art brushwork. - [22:51](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1371s) The final engine encodes geometry as vector-quantized point hierarchies consuming roughly 4.5 bytes per splat, rasterized purely through PS4 compute shader atomic operations. - [25:04](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1504s) Stylized rendering shortcuts—such as jittering splats for bokeh depth of field and tracing a single occlusion ray per pixel resolved via TAA—bypassed heavy post-process blur passes while maintaining performance.
## Key takeaways - [00:09](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=9s) Dreams was engineered around complete in-engine user-generated content on PS4, driven by a tight team of roughly 20 developers out of Media Molecule's 50-person studio. - [02:23](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=143s) The authoring pipeline relies on signed distance fields and minimal Constructive Solid Geometry operations, making freeform organic sculpting immediately accessible to non-technical creators. - [05:22](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=322s) Animating signed distance fields by re-evaluating CSG edit lists frame-by-frame produced fluid topological morphing, but caused an exponential computational bottleneck on complex assets. - [06:53](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=413s) Evaluating billions of virtual voxels required a stack of around 40 compute shaders using adaptive hierarchical space partitioning near surface boundaries. - [09:00](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=540s) Adopting the L-infinity maximum norm simplified Euclidean distance calculations and accelerated voxelization while preserving smooth shape blending. - [10:30](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=630s) Polygonization algorithms like Marching Cubes and Dual Contouring failed due to excessive wireframe densities, non-manifold topology, or persistent self-intersections. - [15:31](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=931s) The 18-month 'brick engine' prototype using 8x8x8 voxel blocks and parallax occlusion mapping proved structurally solid, but order-independent transparency was too slow and visually glitchy for soft volume edges. - [19:42](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1182s) Hierarchical froxels combined with concentric compute-shader lighting shells eliminated pipeline stalls for up to four lights, but the architecture ran 4x to 10x too slow and failed on off-screen lights. - [21:26](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1286s) A creative impasse between sterile digital visuals and painterly concept art drove Evans to abandon the polygonal froxel engine in favor of point splats. - [22:51](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1371s) Scene geometry is organized into nested point-cloud hierarchies, where 4x4x4 distance field voxels yield compressed splats rasterized via software compute shaders rather than the fixed-function triangle pipe. - [25:04](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1504s) Scattering splats along a circle of confusion achieved natural bokeh depth of field within a single Z-buffer, avoiding conventional screen-space post-processing artifacts. - [25:04](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1504s) Coarse Imperfect Shadow Maps and noisy single-ray-per-pixel ambient occlusion were filtered into clean gradients using temporal anti-aliasing (TAA). - [26:40](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1600s) Dynamic ambient occlusion was further augmented with coarse background voxel ray checks inspired by The Tomorrow's Children and Q-Games' graphics architecture. - [28:05](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1685s) Point-jittering techniques failed when applied to motion blur due to temporal occlusion across frames, forcing the engine to retain a traditional post-process blur pass. - [29:06](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1746s) If point-splat rendering had failed, the production fallback was the polygonal 'brick engine,' which would have produced a standard Unreal-style aesthetic at the expense of Dreams' distinct visual identity.
## Detailed walkthrough ### [00:09](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=9s) Introduction and the Philosophy of Dreams
Alex Evans opens the presentation with light self-deprecating humor, struggling momentarily with the conference laptop before launching into his slides. He explains that this talk is a slightly adapted version of a presentation he gave at SIGGRAPH two weeks earlier, urging anyone who has already seen it to think up vicious questions for the Q&A at the end. The session is intentionally fast-paced and candid, designed to walk the audience through four years of research and development at Media Molecule—specifically focusing on the countless dead ends, failed experiments, and thrown-away tech. Evans emphasizes that he hopes highlighting his mistakes will inspire other developers to do things better in their own work.
He cues up the game trailer for *Dreams*, talking over the footage to explain the premise of the project. *Dreams* is built entirely around user-generated content: everything shown in the trailer was constructed inside a PlayStation 4 using either a DualShock 4 or PlayStation Move controller. Crucially, the engine does not rely on conventional 3D game assets—there are no pre-baked texture maps, polygon meshes, or traditional imported 3D models. The development journey required Media Molecule to discover an engine, an authoring toolset, and an artistic direction simultaneously. Evans points out that Media Molecule is a relatively small studio of around 50 people split across two projects, with roughly 20 developers dedicated to *Dreams*. The game rejects the paradigm of collaging pre-made assets, aiming instead to let users sculpt everything from a tiny fingernail up to a sprawling city. Reflecting on the process of designing an engine around this vision, Evans remarks: “And really this is about the mixture between tech direction and art direction. Like, you can't just have a tech, um, plan. You have to have a kind of art plan as well.”
- *Dreams* development team size: approximately 20 people within Media Molecule's 50-person studio. - Target hardware and control schemes: PlayStation 4 using standard DualShock 4 controllers or PlayStation Move motion controllers. - Core design constraint: zero imported meshes, textures, or traditional polygon models; everything is authored and rendered on-console. - Production context: public debut occurred at E3 2015, with an upcoming showing scheduled for Paris Games Week.
---
[02:23](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=143s) Signed Distance Fields and Constructive Solid Geometry
Evans credits the foundational research to his colleagues Anton Kirczenow and Simon Brunet, noting that he himself works on the tech roughly half-time. Anton began prototyping almost four years prior using a DirectX framework on PC, experimenting with mathematical signed distance fields—a technique popular in the demoscene and on platforms like ShaderToy. In simple terms, a distance field is an implicit function where any point in space evaluates whether it is inside, outside, or on a surface, and how far away that surface lies. Evans fell in love with the concept because of how radically different it was from standard polygon pipelines, deciding it would serve as the core mathematical foundation for all geometry in *Dreams*.
The entire creation pipeline in *Dreams* is represented as an ordered list of what Evans calls "edits." Users construct models using simple geometric primitives—such as cones, cubes, spheres, and splines—evaluated through distance fields. Instead of standard polygon modeling, the system uses pure Constructive Solid Geometry (CSG), restricted to a strictly minimal feature set: additive shapes, subtractive cutouts, and color assignment. Crucially, the engine supports smooth blends ("soft adds" and "soft subtracts"), creating organic joins between primitives. Although the team initially intended to implement ZBrush-style surface sculpting tools such as pushing, pulling, and smudging, they never got around to building them—a limitation Evans describes as a blessing in disguise for technical feasibility. The workflow proved remarkably intuitive; even non-technical QA testers could sculpt immediately without worrying about polygon counts, topology, or UV unwrapping. Evans demonstrates this using a time-lapse of a sculpt called "Dad's Head," constructed from 8,274 individual edits, followed by an improvised session that morphs from random primitive additions and subtractions into a creature resembling a "strange fat butter puppy." As Evans describes the creative impact: “And the explosion of creativity you get from having that immediacy is is is the foundation of dreams.”
- Core mathematical primitive: signed distance fields representing distance to surfaces without explicit vertex topology. - Supported CSG operations: addition, subtraction, coloring, and soft blending (smooth unions/differences). - Sculpt complexity example: the "Dad's Head" character bust comprised 8,274 edits. - User experience benefits: eliminated vertex manipulation, polygon limits, and UV mapping, lowering the technical barrier for artists and QA staff.
---
[05:22](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=322s) Animation Experiments and the Scalability Crisis
Once the team verified that static distance-field sculptures worked, they confronted the challenge of motion. Because the project's art direction had not yet crystallized, Evans and his team explored multiple conflicting animation avenues. One test involved converting distance-field assets into low-polygon meshes and applying standard skeletal deformation. Another, more radical approach bypassed skeletal rigging altogether: animating the transformations of the underlying CSG edits themselves and re-evaluating the entire mesh from scratch every single frame. This produced a bizarre, fluid visual signature with dynamic topological changes impossible in standard polygon pipelines.
While re-evaluating hundreds of edits in real time worked in controlled PC prototypes, it posed a catastrophic scalability barrier for real-world scenes containing thousands of edits, such as the 8,000-edit character sculpts. To make matters more daunting for the engine team, Media Molecule's artists became enamored with the tactile claymation aesthetic of Czech filmmaker and animator Jan Švankmajer, whose work relies on continuous physical manipulation and shifting forms. When the artists attempted to animate by cycling through historical sculpting edits frame-by-frame like stop-motion clay, the studio loved the aesthetic, but Evans was terrified by the processing implications. Looking back at his reaction to the team's demands, Evans admits: “And you know when I saw this everyone fell in love with it but as an engine programmer that was my reaction.”
- Animation prototypes explored: deforming low-poly output meshes versus re-evaluating entire CSG edit lists per frame. - Scalability bottleneck: per-frame recalculation scaled poorly as edit lists grew from hundreds to thousands. - Stylistic influence: the claymation stop-motion work of Czech animator Jan Švankmajer inspired artists to demand continuous topological morphing.
---
[06:53](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=413s) Voxel Evaluation and Hierarchical Space Partitioning
To translate raw CSG edit lists into something the console could display, the team constructed an evaluation pipeline based on compute shaders. The architecture routed the edit lists through an intricate stack of roughly 40 compute shaders—a system Evans jokingly terms a "compute shader of doom" and a nightmare to debug on early PS4 development hardware—yielding an intermediate sparse distance field before final screen rendering. The target evaluation space was chosen as a $1,000 \times 1,000 \times 1,000$ voxel grid. Evaluating tens of thousands of edits across a billion uniform voxels would require tens or hundreds of billions of evaluations per frame, making brute-force sampling impossible.
```mermaid flowchart TD accTitle: CSG Edit List to Sparse Distance Field Pipeline accDescr: Pipeline showing how CSG edits pass through compute shaders into a hierarchical sparse distance field before rendering.
subgraph Input ["Authoring Input"] A["CSG Edit List\n(Adds, Subtracts, Colors)"] end
subgraph Compute ["Compute Shader Pipeline"] B["Compute Shaders of Doom\n(~40 Compute Shaders)"] C{"Hierarchical Spatial Splitting\n(1000^3 Virtual Grid)"} end
subgraph Output ["Target Representation"] D["Sparse Distance Field\n(Refined Near Surface Only)"] E["Screen Rendering"] end
A --> B B --> C C -->|"Refine surface cells"| D D --> E ```
To solve this, the engine employs hierarchical spatial subdivision, splitting space adaptively and only refining the voxel grid near actual geometry surfaces. Evans emphasizes that precision during this spatial splitting step is critical: over-subdividing wastes computational budget on empty air, while under-subdividing creates visible gaps and holes in the geometry. Evans reflects on this delicate balance: “If you split too much, you won't end up doing too much work. If you split not enough, you get holes in the surface.” He notes that keeping the CSG toolkit simple—avoiding ZBrush-style warping or smearing—was the only reason this hierarchical evaluation remained tractable. He touches on the mathematical challenges of computing distance norms, contrasting the straightforward Euclidean $L_2$ norm calculations for simple shapes like spheres and boxes against the steep mathematical complexity of computing exact distance fields for shapes like squashed ellipsoids.
- Target evaluation resolution: virtual $1,000 \times 1,000 \times 1,000$ voxel bounding volume (1 billion voxels). - Compute shader complexity: an interconnected pipeline of approximately 40 compute shaders evaluated the CSG data on PS4. - Spatial subdivision strategy: hierarchical tree structures that only allocate and refine cells intersecting the surface boundary. - Mathematical constraints: Euclidean $L_2$ norms are trivial for primitives like spheres or boxes, but become mathematically complex for squashed shapes such as ellipsoids.
[09:00](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=540s) Max-Norm Distance Fields and Edit Visualization
Alex Evans recounts the technical challenges of working with distance fields, noting that colleague Anton advanced the state of the art (referencing several ShaderToy demos included in his slide links). To overcome the computational cost, Evans drew upon a paper titled *Efficient Max-Norm Distance Computation and Reliable Voxelization*. Instead of standard Euclidean distance, the technique relies on the maximum norm ($L_\infty$), which calculates distance as the largest single component of displacement along the cardinal axes (up/down, left/right, front/back). Evans compares this to measuring distances in Manhattan grid fashion, but even simpler. While using the max-norm generates flat facets, it drastically simplifies and accelerates computation. Smooth blending is achieved through an accompanying soft-blending equation.
```mermaid flowchart LR accTitle: Max-Norm Voxelization and Overlap Visualization accDescr: Pipeline showing inputs combined via max-norm distance field and tracked per pixel for shader performance. subgraph Math["Field Evaluation"] A["CSG Edits / Shapes"] --> B["Max-Norm L∞ Distance"] B --> C["Smooth Blending Equation"] end subgraph Profiling["Shader Cost Visualization"] C --> D["Track Contributing Edits per Point"] D --> E["Blue: 1 Edit (Fast)"] D --> F["Yellow/Red: Overlaps (Slow)"] end ```
To make the evaluation performant on hardware, the team visualized the number of contributing edits for every point across a surface. In areas where shapes intersect, multiple operations must be evaluated simultaneously. Evans credits Media Molecule engineer Simon Brown for his rigorous work testing and hardening the platform's toolchain:
> “And at this point, I have to give credit to Simon Brown, who basically spent a long time breaking Sony's PlayStation shader compilers. And for the benefit, much benefit of other teams, he fixed all the compiler bugs before they went out to the third parties.”
The shader diagnostics mapped performance to color: single-edit surfaces showed as blue (“maximal Simon happiness”), while overlapping regions requiring multiple evaluations shifted through yellow into red (“sad Simon, sad PlayStation 4”).
[10:30](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=630s) The Polygon Problem: Dual Contouring and Manifold Meshes
Turning to meshing and rendering, Evans reviews slides prepared by Anton (jokingly referred to as containing Borat-style “cultural learnings”). The team initially tested Marching Cubes on models composed of several hundred edits, but the generated wireframes were excessively dense. To solve this, Anton investigated Dual Contouring, which can adapt mesh resolution through an octree while preserving sharp edges without inflating polygon counts.
However, Dual Contouring struggled with geometric ambiguity: the algorithm could not reliably determine whether features should be hard or soft, creating an automated version of smoothing group artifacts that degraded visual quality and taxed the PlayStation 4. Worse, the process generated self-intersections that broke lighting calculations. The team spent a month implementing a follow-up paper, *Intersection-Free Contouring on an Octree Grid*, which eliminated self-intersections but produced non-manifold (non-watertight) meshes. When they subsequently tried *Manifold Dual Contouring*, the added topological complexity caused the self-intersections to return.
- **Marching Cubes outcome**: Generated excessively dense, subpixel wireframe meshes from only a few hundred constructive solid geometry edits. - **Dual Contouring tradeoffs**: Preserved sharp features with octree LODs, but introduced self-intersecting geometry and surface ambiguity. - **Academic literature rabbit hole**: *Intersection-Free Contouring* resolved self-intersections at the expense of manifold topology; *Manifold Dual Contouring* restored watertight meshes but reintroduced self-intersections.
[12:31](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=751s) Abandoning Polygons for Fuzzy Voxels
Evans plays a short audio-video clip from a studio Q&A where a colleague asks him directly if he likes polygons, to which he replies:
> “No, I do not like polygons. Polygons are actually the best representation of a flat surface, right? They are super awesome way of defining a 2D manifold in 3D space, but they make my head hurt for all the reasons I just went through.”
Watching Media Molecule artists work, Evans observed that they rarely created flat planes or hard geometric cuts; instead, they built crinkly, bumpy, organic surfaces by stacking circular and square CSG edits using subpixel polygons. This aesthetic prompted him to revisit a 2008/2009 graphics paper based on fuzzy voxels treated as semitransparent gas clouds. Rather than using conventional ray marching, the paper rendered screen-aligned polygon slice sheets cut through volume textures.
```mermaid flowchart TD accTitle: Evolution of Volume Rendering Approaches accDescr: Progression from 2008 fuzzy voxel slicing through GigaVoxels to Evans' hybrid Brick Engine. subgraph EarlyVoxel["Fuzzy Voxels (2008 Paper)"] A["Screen-Aligned Slice Sheets"] --> B["Pre-filtered 3D Texture Mipmaps"] B --> C["Order-Independent Transparency (Heavy Fillrate)"] end subgraph Giga["GigaVoxels"] D["Sparse Octree of 8x8x8 Bricks"] --> E["Single Continuous Static Mesh"] end subgraph Hybrid["Alex Evans' Brick Engine"] C -.-> G["Hybrid Concept"] E -.-> G G --> H["LOD-Sized GPU Rasterized Cubes"] H --> I["Parallax Occlusion Mapping (POM)"] end ```
The fuzzy voxel paper offered two major advantages: pre-filtered 3D level of detail (preventing thin geometric features from vanishing at distance, akin to 3D mipmaps) and inherent support for multiple overlapping objects via order-independent transparency (OIT). However, it suffered from severe fill-rate consumption and required complex geometry shaders (which Evans streamlined in his SIGGRAPH notes). While later research like *GigaVoxels* solved sparse hierarchical storage and lighting, it merged everything into a single massive static world structure, making it impractical for interactive video games requiring instanced, dynamic objects.
[15:31](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=931s) The Brick Engine and the 18-Month OIT Rabbit Hole
Seeking a middle ground between fuzzy voxels and GigaVoxels, Evans developed what the studio called the "brick engine," which served as the primary internal artist engine for nearly two years. The system divided models into $8 \times 8 \times 8$ voxel blocks. Instead of ray marching directly from the camera through a monolithic volume tree, the PlayStation 4 GPU rasterized LOD-adapted bounding cubes, ensuring each rendered cube maintained a consistent screen-space footprint. Surface detail was rendered across these cubes using parallax occlusion mapping (POM).
```mermaid flowchart LR accTitle: Dual-Phase Ray Evaluation in the Brick Engine accDescr: A conceptual ray hits fuzzy surface layers first before encountering a solid POM interior core. R["Eye Ray"] --> A["Accumulate Fuzzy Boundary"] A -->|"Store Sample List"| B["Deferred Fuzz Layer"] R --> C["Solid Core Hit"] C -->|"Hard Depth Output"| D["Parallax Occlusion Depth"] ```
While the brick engine was robust enough for production testing, Evans felt it compromised the visual vision: POM output standard per-pixel depth values, causing surfaces to look like untextured polygon assets rather than soft, volumetric material. To recapture the creamy appearance of volume-filtered edges, Evans embarked on an 18-month research detour exploring order-independent transparency. His architecture evaluated volume bricks by casting rays that accumulated a thin, fuzzy translucent perimeter into a sample list while resolving solid inner cores via hard depth outputs. Close-up, this gave overlapping objects (such as intersecting colored arches) a creamy, perfectly antialiased boundary without hard polygon seams.
[18:01](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1081s) The Pitfalls of Fuzzy Cubes and Order-Independent Transparency
Continuing from his experiments with dense geometric models, Alex Evans demonstrates an approach utilizing precomputed, prefiltered levels of detail (LODs). When rendered, this system yielded an anti-aliased look straight out of the box without requiring any post-processing passes. However, technical issues quickly cropped up during implementation. Evans attempted to show a close-up of the effect on his presentation slides, only to find PowerPoint failing to replicate the zoom effect he had prepared on a Mac. Behind the scenes, the engine struggled with order-independent transparency. He tried rendering fuzzy cubes to represent the geometry, but the system persistently generated visual artifacts. Evans sought a sweet spot that was simultaneously fast, accurate, and produced artifacts that were artistically benign, but the engine reliably produced errors that the studio's artists noticed immediately.
This failure marked another low point in the engine's development. Recapping the wreckage of their research so far, Evans notes that traditional polygons were too hard for their freeform editing goals, volumetric billboards consumed far too much fill rate, GigaVoxels only scaled to a single object, and his own hybrid fuzzy cube structure proved far too slow and complex. In spite of the setbacks, Evans emphasizes that being a small, indie-scale team afforded them the freedom to keep failing and iterating. As Alex Evans reflects on their persistence, “And I think that's the spirit of game development, right? Especially when you're smaller, we're a small studio. It's a super indie thing that was referred to earlier. You can afford to keep trying.”
- **LOD Filtering**: Generated clean anti-aliasing inherently without requiring temporal or spatial post-processing anti-aliasing passes. - **Order-Independent Transparency (OIT)**: Proved too computationally expensive to run within frame budgets while remaining artifact-free. - **Techniques Ruled Out**: - Polygons: Infeasible for intuitive, fluid CSG-style sculpting. - Volumetric Billboards: Crippled by excessive fill-rate demands. - GigaVoxels: Limited scalability, viable only for a single isolated asset. - Hybrid Cubes: Excessively slow and plagued by visual glitches.
---
[19:42](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1182s) Hierarchical Froxels and Concentric Shell Lighting
Moving past cubes, Evans pivoted to an architecture based on hierarchical "froxels"—frustum-aligned voxels. This data structure, which also became the foundation of the volumetric rendering technology presented by DICE's Frostbite team at the same SIGGRAPH conference, allowed the engine to dynamically refine froxel resolution wherever characters or detailed geometry appeared in the view frustum. By adaptively subdividing the volume, the engine achieved smooth, artifact-free geometric overlaps at a much more stable framerate than earlier iterations.
```mermaid flowchart TD accTitle: Froxel Lighting Pipeline accDescr: Dynamic froxel refinement around geometry feeding into parallel concentric compute shader shells. subgraph Refinement["Froxel Refinement"] A["View Frustum"] --> B["Hierarchical Froxels"] B --> C["Adaptive Sub-division Around Geometry"] end subgraph Lighting["Concentric Shell Lighting"] C --> D["Dispatch Compute Shaders in Concentric Shells"] D --> E["Interleave 4 On-Screen Lights in Parallel"] E --> F["Smooth Penumbras & Volumetrics (No GPU Stalls)"] end ```
To light these froxels, Evans drew inspiration from a classic 2001 demoscene technique: radial blurs computed from the center outward with a single bilinear texture tap. Translating this trick into 3D compute shaders, he dispatched work in concentric spherical shells radiating outward from each light source. While standard GPU wisdom warned that dispatching dependent concentric shells would cause catastrophic pipeline stalls, Evans worked around the bottleneck by slotting four separate light calculations together in parallel, effectively hiding the latency and yielding soft penumbras. Despite the clever trick, the system hit a wall: it only functioned for lights positioned within the screen boundaries, and the performance fell drastically short of real-time targets. As Alex Evans confesses regarding the math, “Basically, it was four times too slow if I'm optimistic. And it was 10 times too slow if I'm realistic.”
- **Froxel Representation**: Frustum-space voxels subdivided adaptively near characters to eliminate aliasing and boundary seams. - **Demoscene-Inspired Blur**: Adapted 2001-era 2D radial blur techniques to radiate outward in 3D concentric shells from light origins. - **Latency Hiding**: Avoided compute shader pipeline bubbles by processing four independent light dispatches simultaneously. - **Bottlenecks**: Lighting broke down completely for off-screen lights, and rendering ran between 4× and 10× too slow for 60 Hz console performance.
---
[21:26](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1286s) The Showdown: Throwing Out the Engine for Splats
Two years into engine development, Evans found himself at rock bottom. The team was wrestling with immense technical complexity, yet the visuals on the PlayStation 4 looked virtually indistinguishable from an untextured scene in Unreal Engine. The tools were unforgiving, requiring exceptional sculpting skill just to make a scene look passably decent. At the same time, art director Karim Hourani and concept artist John Eckersley were producing concept paintings that possessed a loose, handcrafted, painterly aesthetic that looked nothing like the rigid, semi-photorealistic output of the engine.
This aesthetic divergence sparked an intense confrontation between Evans and the art director. Evans tried to defend the programmer's traditional role of loosely translating concept art into functional game assets, but Karim rejected the compromise and demanded that the screen output match the physical brushwork of the concept art literally. Realizing his technical approach had lost touch with the project's creative soul, Evans made the drastic choice to scrap everything they had built over the previous two years—retaining only the underlying signed distance field evaluator. Overcoming his own long-standing professional prejudice against point splats, Evans agreed to build a pure splat renderer. Recalling his skepticism and surrender, Alex Evans remarks, “And we went with a splat engine, which I hate. I hate splats. My whole prejudice welled up, all right? These things suck. But, I gave Karim the benefit of the doubt. I was at rock bottom anyway.”
- **Project Timeline**: Over two years of R&D had elapsed without a distinct visual identity or usable performance profile. - **The Visual Disconnect**: Sculpting in the engine felt unforgiving, yielding clean, untextured digital clay rather than the lush, expressive brushwork seen in concept art. - **Scrapped Architecture**: Threw away the froxel system, lighting passes, and hybrid volume pipelines, preserving only the procedural distance field evaluator.
---
[22:51](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1371s) Vector Quantization, Atomic Software Rendering, and the Point Hierarchy
Returning to the procedural evaluator, the engine began generating 4×4×4 voxel blocks representing signed distance fields. For every single voxel surface, the system spawned a single splat. To manage memory footprints, Evans grouped these splats into clusters of 256, inserted them into a bounding volume hierarchy (BVH), and applied vector quantization. This compression strategy reduced the cost down to roughly 4.5 bytes per splat, allowing scenes to render millions of surface points simultaneously without blowing past the PlayStation 4's memory constraints.
```mermaid flowchart LR accTitle: Point Cloud Hierarchy in Dreams accDescr: Hierarchical breakdown of scene geometry from distance fields to nested point clouds. A["Evaluator: 4x4x4 SDF Blocks"] --> B["1 Splat per Surface Voxel"] B --> C["Clusters of 256 Splats in BVH"] C --> D["Vector Quantization: ~4.5 Bytes/Splat"] D --> E["PS4 Compute Software Rasterizer"] E --> F["Hierarchical Cloud of Point Clouds"] ```
Rather than feeding these points into the GPU's fixed-function triangle rasterizer, programmer Simon wrote a pure software rasterizer leveraging the atomic compute units on the PS4. To Evans's delight as an old-school demoscene coder, they were rendering millions of sub-pixel splats entirely in software compute shaders. When the team experimented with drawing these splats as slightly enlarged, textured quads, an unexpected visual breakthrough occurred: the overlapping quads naturally took on the appearance of physical brushstrokes. This accidental aesthetic matched the studio's concept paintings, prompting the team to formalize Dreams' geometry into a nested hierarchy: scenes are composed of clouds of objects, which are made of clouds of points, where each point can expand into another point cloud with arbitrary surface displacement.
- **Storage Footprint**: Vector-quantized splat clusters consumed roughly 4.5 bytes per splat. - **Custom Rasterizer**: Completely bypassed the PS4's hardware triangle pipeline in favor of a software rasterizer built around GPU atomic operations. - **Procedural Nesting**: Objects exist as nested point clouds; distant elements collapse to single pixels, while close-up elements expand into displaced clusters of textured splats.
---
[25:04](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1504s) Jittered Bokeh, Imperfect Shadow Maps, and Temporal Denoising
With the splat rendering core established, Evans tackled post-effects and lighting. For depth of field, instead of executing a standard post-process blur, he took advantage of the point-based representation by randomly jittering the splats directly on-screen according to a circle of confusion. This generated circular bokeh highlights without any of the edge bleeding or occlusion artifacts that typically afflict screen-space post-processing. For lighting, Evans implemented Imperfect Shadow Maps (ISM), rendering low-detail paraboloid projection depth maps from splat clusters. Because the entire game already possessed a stylized, painterly aesthetic, any shadowing inaccuracies or low-resolution artifacts blended into the art direction, yielding stable shadows and volumetric light rays at low computational cost.
To complete the rendering pipeline, Evans added specular highlights with an underlying red tone to give materials a warm, painterly sheen. For ambient occlusion, the engine traced a single ray per pixel toward the sky to check for occlusion. While an unfilleted single-ray pass generated extreme high-frequency white noise, passing the noisy buffer through temporal anti-aliasing (TAA) turned the output into clean, soft ambient shadowing. Finally, Evans added a coarse scene voxelization pass inspired by Q-Games' graphics architecture, rounding out the rendering foundation. Pointing to the transformation brought by temporal filtering, Alex Evans notes, “We basically trace one ray per pixel to the sky with occlusion. It looks like total garbage, but when you throw it through TAA, you get this beautiful, beautiful, creamy result.”
- **Bokeh Depth of Field**: Computed by scattering splats on-screen along a circle of confusion, eliminating haloing and occlusion artifacts. - **Imperfect Shadow Maps (ISM)**: Relied on low-resolution paraboloid depth projections; inaccuracies were visually masked by the painterly brushstroke aesthetic. - **Specular Shading**: Layered with a distinct red underlay to simulate traditional oil and acrylic painting techniques. - **Single-Ray Ambient Occlusion**: Traced 1 occlusion ray per pixel, using temporal anti-aliasing (TAA) accumulation to resolve white noise into smooth gradients. - **Inspiration**: Real-time voxelization techniques influenced by Q-Games' technical work.
[26:40](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1600s) Ambient Occlusion, Final Visuals, and Closing Reflections
Alex Evans explains an ambient occlusion technique inspired by the game *The Tomorrow's Children*. He describes implementing a binary system he refers to as "Minecraft style." The engine maintains a Minecraft-like voxelization behind the visible scene and intersects rays against this voxel structure on their path toward the sky. On the presentation slide, the comparison is shown side-by-side: the right half relies entirely on screen-space ambient occlusion, whereas the left half is completely dynamic, intersecting both the underlying voxels and the Z-buffer. Following this technical breakdown, Evans shows several polished non-programmer art slides so the audience can take a visual breath.
Reflecting on the core motivation behind his research, Evans explains that he was determined to find an engine approach that fused a truly unique art style with the technical foundation that began with Anton Kirchengast’s signed distance field sculpting. While the journey was fraught with dead ends and severe difficulties, Evans emphasizes that being transparent about failures is critical if it inspires other developers to explore unconventional technical directions. As Evans put it: “The point of all of this is basically that I was hell-bent on finding something that married an art style that stood apart and a technical plan which began with Anton's distance field sculpting.” He notes that modern hardware and compute shaders harbor vast amounts of untapped potential waiting to be unlocked, and he closes his presentation by thanking the artists and engineers who contributed to the project.
```mermaid flowchart LR accTitle: Dreams Occlusion and Ray Tracing accDescr: Ray casting pipeline intersecting both screen-space depth and background voxelization.
subgraph Geometry["Scene Representation"] ZB["Z-Buffer Screen Space"] VX["Minecraft-style Voxels"] end
subgraph RayCasting["Occlusion Evaluation"] RAY["Rays Cast Toward Sky"] end
subgraph Output["Image Comparison"] SS["Right: Screen-Space Only"] DYN["Left: Fully Dynamic Ambient Occlusion"] end
ZB --> RAY VX --> RAY RAY --> DYN ZB --> SS ```
- Ray intersections against voxel approximations provide dynamic sky occlusion without relying purely on local screen-space depth buffer information. - The overarching goal of the project was uniting distinctive aesthetic goals with Anton Kirchengast's original distance field sculpting prototype. - Evans expressed strong optimism about the future of compute shaders on current hardware platforms.
---
[28:05](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1685s) Q&A: Motion Blur and Point Jittering
The session opens for questions from the audience, with Evans jokingly urging the crowd to “Be mean,” before adjusting to, “Don’t be too mean. Be like half mean.” An audience member asks whether the engine's point-splatting approach could be adapted for motion blur, given how well depth of field worked.
Evans struggles momentarily with the slide remote while navigating back through his deck, noting how painfully slow the slides change. He explains candidly that motion blur was tested, but it completely failed to produce acceptable visuals. With depth of field, scattering points across the circle of confusion works well because points naturally occlude one another within a single Z-buffer. Motion blur requires a fundamentally different model: each distinct moment in time requires its own Z-buffer, which must then be averaged together. Evans tried the naive approach of jittering splat points across time within the same buffer, but the visual result looked poor. Consequently, Media Molecule discarded that approach in favor of traditional post-process motion blur.
- Scatter-based depth of field relies on self-occlusion in a unified Z-buffer, an assumption that breaks down under temporal blur. - Time-jittered point splats produced visual artifacts rather than smooth motion trails. - The production engine relies on standard post-process motion blur rather than point-distribution temporal filtering.
---
[29:06](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1746s) Q&A: The Bricks Fallback, Studio Stakes, and Simon's Partnership
Kimo from game studio Mountain Sheep asks Evans what would have happened to the game if he had failed to find a working point-cloud rendering technique. Evans responds that had the effort completely failed, the team would have fallen back on the "bricks engine"—the traditional polygonal voxel pipeline that resembled a standard Unreal Engine look. Evans admits that while the game still would have been fine thanks to server architecture and strong content creation across the studio, abandoning the signature look would have been a personal heartbreak, noting: “And the game would have been fine. I think someone else made the point that in the end it's not tech that saved your game... But I would have died inside.”
Evans clarifies that the project has not crossed the finish line yet and could still face hurdles, but highlights how crucial his collaboration with his colleague Simon was in reaching a viable solution. Evans characterizes himself as a fast-and-loose programmer who hacks away at the keyboard to get immediate visuals on screen, whereas Simon—originally from Sony—provided the vital, disciplined counterweight. Evans jokingly describes him as "the meticulous German engineer who’s English," crediting their combined dynamic as the primary reason the engine found its technical footing so quickly. With the Q&A concluded, Evans calls for "beer time," bringing the session to a close.
- The official fallback plan was the "bricks engine," a polygonal renderer yielding a conventional, Unreal-style appearance. - Evans acknowledges that technology alone does not make a game successful; gameplay, content, and infrastructure are equally essential. - Simon, an ex-Sony graphics engineer, provided methodical rigor that balanced Evans’s rapid, experimental coding style.
## Notable quotes > [00:09](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=9s) Like, you can't just have a tech, um, plan. You have to have a kind of art plan as well. — Alex Evans
> [25:04](https://www.youtube.com/watch?v=u9KNtnCZDMI&t=1504s) We basically trace one ray per pixel to the sky with occlusion. It looks like total garbage, but when you throw it through TAA, you get this beautiful, beautiful, creamy result. — Alex Evans
## Mentioned Alex Evans, Anton Kirczenow, Simon Brunet, Simon Brown, Karim Hourani, John Eckersley, Jan Švankmajer, Kimo, Media Molecule, Sony, PlayStation 4, DualShock 4, PlayStation Move, Dreams, Unreal Engine, The Tomorrow's Children, Q-Games, Mountain Sheep, SIGGRAPH, E3 2015, Paris Games Week, ShaderToy, DirectX, ZBrush, DICE Frostbite
## Video description Alex went to Helsinki recently and presented his Siggraph 2015 talk to the good folks there. Listen as Alex discusses the journey - including the failures - of 'finding' the Dreams engine.
Read more: http://www.mediamolecule.com/blog/article/siggraph_2015
Find out more about Dreams at: http://dreams.mediamolecule.com
Follow us on twitter: http://twitter.com/mediamolecule
[Source](https://www.youtube.com/watch?v=u9KNtnCZDMI)