Yahoo RYOT Lab · Unreal Engine · Metaverse · 2021
Pokémon. Selfridges.
A virtual world that had to actually work.
Technical lead on Yahoo RYOT Lab's virtual 3D experience built in collaboration with designer Charli Cohen and Selfridges — celebrating Pokémon's 25th anniversary. My contribution: a custom Unreal Engine lighting system capable of handling a large-scale metaverse space filled with an unreasonable number of electric lights, without the whole thing grinding to a halt.
The project
For Pokémon's 25th anniversary, Yahoo RYOT Lab partnered with London-based designer Charli Cohen and Selfridges to create an entirely virtual 3D world — a metaverse retail and cultural experience that existed purely in digital space and could be visited by anyone with a browser. The experience was covered by Yahoo Inc and represented one of the more ambitious real-time web experiences of its time.
The world was built in Unreal Engine — large, detailed, and lit with the kind of density you'd expect from a fashion-forward designer's vision of a Pokémon universe. Which is to say: a lot of lights. Electric lights, neon, ambient glow, point lights scattered across an enormous space. Each one physically accurate. Each one with a performance cost.
Getting that to run in real time, at quality, without melting the hardware it ran on, was the problem I was brought in to solve.
Custom lighting system
Large real-time environments and large numbers of dynamic lights are, in the general case, enemies. Each light that needs to affect geometry is a draw call. Each shadow a light casts is a render pass. Multiply that by the scale of the space and the density of the lighting design, and you arrive at a number of milliseconds per frame that nobody wants to see.
The solution was a custom lighting architecture built specifically for this project — designed around the constraint that the space had to be large, the lights had to look dense and electric, and the frame rate had to stay acceptable across a wide range of hardware.
Light budgeting
A per-zone light budget system ensuring only the lights relevant to the player's current position were ever evaluated — the rest culled entirely, not just hidden.
Baked / dynamic hybrid
Static architectural lighting baked into lightmaps for zero runtime cost. Dynamic accent lights — the ones that animate, pulse, or respond to interaction — kept live but tightly constrained in number.
Emissive surface system
Much of the neon and electric glow achieved through emissive materials rather than actual light sources — preserving the visual density of the lighting design without the associated rendering cost.
Reflection captures
Carefully placed reflection captures to simulate the environment's electric atmosphere in specular surfaces — metallic fashion pieces, wet floors, glazed surfaces — without dynamic reflections.
LOD-aware lighting
Light influence radii tuned to match geometry LOD transitions — so distant areas of the space received appropriately simplified lighting matching their reduced geometric detail.
Performance across hardware
The system was tested and tuned across a range of hardware — from high-end workstations to mid-range consumer laptops — to ensure a consistent and acceptable experience regardless of where it was viewed.
Role
Technical lead on the lighting systems side of the project. Worked directly within the Yahoo RYOT Lab team alongside Charli Cohen's creative direction and the Selfridges brand requirements — translating an ambitious visual brief into something a real-time engine could deliver without apology.