Animation editors have always lacked a light that moves
Move the lamp in a game engine and every shadow follows it. Move it in an animation editor and you redraw the shadows yourself.
The shot where the light has to move
Every animator knows the shot. A lamp swings over a kitchen table, headlights sweep across a bedroom ceiling, the sun goes down while someone waits at a window. The drawing is finished and the timing works, but now the light has to travel, and the light is part of the drawing. So you paint the shadow side again on every key pose, or build it out of gradients and masks that you animate by hand, and hope the in-betweens agree.
In a game engine nobody repaints anything. You move the light, and every frame the engine works out which way each surface faces and what stands between it and the lamp. That is the whole difference. Animation and compositing tools treat light as something painted or something filmed; game engines and 3D programs compute it. For as long as both have existed, the two never met in one animation editor.
They stayed apart for good reasons, and most of those reasons were about cost rather than taste. The cost has changed. Keyframe now puts a computed light inside an After Effects–style editor and keeps it optional: a light you keyframe like a position, and then keep, bend or switch off.
Painted, filmed or computed
In hand-drawn animation, light is drawn. Shadow shapes and highlights are painted onto each drawing, often as their own tone layers, and they move because someone drew them moving. In compositing, light arrives with the footage: the plate was lit on set, and the compositor’s job is to make every new element look as if it stood under that same light.
Animation and compositing
- Paintedshadow shapes drawn on each drawing
- Filmedthe plate carries the light of the set
- Moved by handmasks and gradients, keyframed one by one
Game engines and 3D
- Lightsobjects you place and animate
- Surfacesevery point knows which way it faces
- Shadowsworked out each frame from what blocks the light
Game engines start from the other end. A light is an object with a position, a colour and a falloff. A surface carries the direction it faces, from its geometry or from a normal map, a picture that stores that direction for every pixel. Shadows are worked out every frame from whatever blocks the light.
2D games use the same machinery on flat drawings. Unity’s 2D lights (external website, opens in a new tab), Godot’s 2D lights (external website, opens in a new tab) and the sprite shaders Spine ships for Unity (external website, opens in a new tab) can all light a drawing through a normal map made for it. Animation editors, built around drawings and footage, never took that machinery in.
In a drawing, light is a choice
The first reason is that compositing never needed it. Footage already carries its light, and relighting a shot properly means rebuilding the scene in 3D. Tools that relight footage do exist, such as the Relight effect in DaVinci Resolve (external website, opens in a new tab), which builds a surface map from the picture’s perceived depth so that virtual lights can fall on it. But in compositing, a light that disagrees with the plate is usually a mistake to fix, not a look to animate.
The second reason runs deeper. In hand-drawn animation, physics is the artist’s reference, not the referee. A face is lit from straight above and still has no shadow under the nose, because a shadow there would read as a smudge. A rim light outlines a character in a room with no window behind them. A scene turns cold as someone’s mood drops, though nothing in the room has changed. Cel shading boils all of it down to two or three flat tones, placed where they read best. And a drawn face is rarely one consistent 3D form: the nose, the eyes and the jaw are each drawn from the angle that looks right, which no single lit model would produce.
The clearest evidence comes from the people who set out to make 3D look drawn. For Guilty Gear Xrd (external website, opens in a new tab), Arc System Works built its characters as 3D models and then adjusted the normals on every major feature by hand, so that shadows fell where an anime artist would have drawn them rather than where the geometry put them. When the goal is a drawn look, even a game engine has its physics bent to fit.
So an animation editor that simply lit every layer by the laws of optics would be fighting the people who use it. That objection is right, and it decides how a computed light should arrive: as something you choose, not something that happens to you.
The missing pieces were expensive
The other two reasons were technical. To light a picture as if it had volume, you need to know which way every part of it faces: a normal map, or a depth map to make one from. Games got theirs by baking them from 3D models or painting them by hand. Sprite Lamp (external website, opens in a new tab), made for exactly this, builds a normal map from two to five greyscale paintings of the same picture, each shaded as if lit from one direction. That is affordable for a game’s sprites, drawn once and used for years. It is not affordable for an animator’s next shot.
The last piece is a picture shadowing itself: the brim of a hat shading a forehead, a scarf shading a chin. That is a real-time rendering technique, not a layer effect. For each pixel the renderer steps across a height field towards the light and checks whether anything rises in between, as parallax occlusion mapping with soft shadows (external website, opens in a new tab) does in games. It needs a renderer that knows where the lights are and how high every pixel stands, which a stack of layers and effects does not have.
- 2006Games shade a surface’s relief by itself, in real time
- 2015Guilty Gear Xrd bends 3D normals to look hand-drawn
- 2024Depth Anything reads depth from one picture
- 2026All of it in an animation editor, in the browser
What changed is the first piece. Models that estimate depth from a single picture have been studied for years, but they became good and quick enough for everyday work only recently; Depth Anything (external website, opens in a new tab), published in 2024, is one of them. A picture that once needed hours of careful normal painting now gets a usable surface in seconds. With that, and a GPU renderer in the browser, the game engine’s light finally fits inside an animation editor.
A game engine’s light in an animation editor
Keyframe puts the pieces together in the browser. Its depth model runs on your own device, and its renderer runs on your graphics card through WebGPU. Preview and export use the same renderer, so the light you see while you scrub is the light you render.
Its lights are the editor’s ordinary light layers (opens in a new tab): point, spot, parallel, ambient and environment, in the same 3D space as the cameras and keyframed on the same timeline. Make picture layers 3D, set them in depth and let them cast shadows, and each one throws its own outline on the layers behind it, with light passing through its transparent parts. For a paper-cut diorama that is physically exact, because the layers really are flat sheets.
A single picture gets relief from its surface (opens in a new tab). Generate from depth turns the picture’s estimated depth into a normal map on your device, and every pixel turns towards the light or away from it. Self Shadow lets that relief shade itself, and Fine Detail adds the picture’s own small lights and darks, for weave and pencil grain too fine for the model to see.
Exported from the editor as it was made. The Agent generated the normal map, placed the lights and keyframed the one that moves.
The film started as the first picture below, drawn on purpose with no light in it at all. The editor’s Agent generated its normal map, set a warm key light and a dim ambient one, and keyframed the key light’s path. Where the Agent overdid it, we corrected it by hand, as you would correct an assistant.
- As drawn

- Light at her left

- Light in front

- Light at her right

Off until you want it
None of this is switched on for you. A composition without lights shows its layers exactly as they are. A layer’s surface starts flat, with Self Shadow and Fine Detail at 0%. You opt in layer by layer, and one Undo takes a generated normal map back.
When you do opt in, the computed light is a starting point. Keep it where it reads well, keyframe it into a better place where it doesn’t, and paint over it where only a painted shadow will do. It mixes with the light already in your drawings: a hand-painted rim light on one layer and a computed key light across the scene sit in the same composition. The light is a property on the timeline, not a verdict.
What a computed light still gets wrong
Physics is still the referee inside the renderer, and the tools to overrule it are not there yet. A shadow has no colour of its own, only a darkness and a softness. Nothing steps the light into cel shading’s two or three flat tones. And short of turning off a layer’s shadows altogether, you cannot tell one shadow to stay off one face. For now, masks, blending modes and painted layers on top are the way around it.
There is no ray tracing and no global illumination. Light does not bounce from a red wall onto a white shirt; each light reaches a surface directly, and ambient light stands in for everything else.
Self shadow is short and can be hard. It looks towards the light for only a quarter of the normal map’s long side, so a long shadow across a face is cut short. Because the relief’s heights are worked out from its normals, a tall relief under a grazing light can leave a hard edge where small errors add up. In the film above, the Agent first raised the relief so high that a side light covered half her face in a hard black shadow; we brought it back down by hand.
Finally, a picture with light already painted in fights a new one. A portrait lit from the left keeps its bright left cheek when your light moves right, and painted shading reads as relief. The girl was drawn flat on purpose. Most pictures are not.
A light you can keyframe
The point is not to let physics replace the artist. Painted light will stay painted wherever it should. The point is that light can finally be one more thing you animate: set where it starts and where it ends, let the shadows follow in between, then decide what to keep. Animators have had that for position, rotation and colour for as long as there have been keyframes. Light is the one that was missing.
