Phaser AE

Blob Shadows

Free packv3.0.0-33DLook

Contact shadows: a soft dark ellipse on the ground under every object, drawn in one instanced pass with no shadow map and no second pass over the scene. It does not imitate a real shadow; it solves the problem a scene without shadows has, which is that you cannot tell whether an object is touching the ground or floating above it.

This is a Free pack. Every phaser.io account can use it in their games.

Released October 14, 2026 · updated October 19, 2026

Blob Shadows: a screenshot of its demo
A note about these graphics

Expansion packs don't come with graphics. This screenshot is one way of drawing what the pack does, made for its demo: none of the sprites, tiles or backgrounds in it are in the pack.

That's by design. A pack is a game's logic, mechanics and effects, and it works with whatever art you give it. Some packs draw effects, backdrops or 3D scenes of their own, but none carries a game's sprites.

So the look is yours. Make the art on phaser.io, bring your own, or let your agent draw it in code: the same pack can look like anything.

What it does

Every 3D object with a mesh, or only those carrying a tag you choose, gets an elliptical blob sized from its own footprint and turned with it, so a thin wall gets a thin shadow that hugs it rather than a circle that pokes out past both ends. The ellipse spans about 1.2 times the caster, a slim feathered rim round the shape that stays clear of the neighbours' feet. As an object rises the blob fades and tightens, as a real contact shadow does. Hand it your terrain's height function and the blobs follow the ground; without one they sit on a flat plane.

Three things stop an object casting, because a blob is a contact shadow: a footprint too big to be an object, such as a floor or a plaza; sitting below the ground; and floating higher than the fade height, where a hard ghost on the ground would read as a bug. Blobs are depth-tested, so one behind a wall is hidden, but never write depth, and they fog with the rest of the scene.

Features

  • Automatic casting — every mesh object, or every object with a tag, gets a blob with no per-object setup.
  • Elliptical and rotating — the footprint follows the caster's width, depth and yaw.
  • Fades with height — the blob lightens and shrinks as the object rises, and vanishes at fade.
  • Follows the ground — groundAt takes your terrain's height function.
  • Hand-placed blobs — add places one with its own radii, yaw and darkness for anything the automatic rule misses.
  • One instanced draw — no shadow map and no extra pass, with alpha, max, fade and enabled live.

Good for

  • Any 3D game without a shadow map, where objects otherwise seem to float.
  • Board and tabletop games in 3D, with pieces that must sit clearly on their squares.
  • Room and furniture scenes, where chairs, tables and props need to stand on the floor.
  • Platformers and characters jumping, where a fading blob shows how high they are and where they will land.
  • Scenes with a shadow map, for the small props a camera-following map cannot resolve.

Make it yours

The options set alpha, the darkness at full contact (0.38 by default); max, the widest footprint that still casts (12 world units); fade, the height at which a blob has gone (6); lift, the clearance that stops it flickering against the ground; tag, to limit casting to tagged objects; groundAt; and enabled. Two different uses: a dense office scene where every desk, chair and plant casts a light blob on a flat floor; and an outdoor 3D world where only objects tagged as characters cast, darker, following the terrain's height and fading as they jump.

Works with

  • render-3d — required: the blobs draw into its scene and test its depth, instead of or beside its shadow map.
  • terrain-3d — its height function, given to groundAt, puts blobs on hills and valleys.
  • lighting-3d — point and spot lights, which cast no shadows of their own, so blobs ground what they light.

Good to know

  • A blob always falls straight down and is always an ellipse: the sun's angle does not skew it, and a complex silhouette still gets an oval.
  • It knows only the ground you give it, so a blob under a bridge lands on the terrain below, not the deck.
  • Objects shadow the ground but never each other.
  • A mesh whose look differs a lot from its bounds, such as a wide tree on a narrow trunk, wants a hand-placed blob.

More Look packs

Show all →