← Pixel Light Lab

Credits & method

A browser experiment built by Alex, developed further with Amir. A flat sprite becomes an estimated 2.5D bas-relief through silhouette distance and image lightness. Moving a light changes the shading and cast shadow.

Working with your images

Images are decoded and processed on your device. The tool has no upload endpoint, analytics or external font requests. PNG, WebP and JPEG are supported, up to 20 MB and 24 megapixels. Transparent, centered objects work best. An opaque background remains part of the sprite.

The interactive preview is 256 × 256. Exports offer 256, 512 or 1024 square pixels, with 1024 selected by default. Every export is fitted directly from the retained original image, and normals are recalculated at the selected resolution in a local background worker. Normal map, fitted source and lit sprite use the same crop and alignment. Small original files retain their native detail. Lighting exports have transparency and exclude the stage background and cast shadow.

The normal map uses RGB for XYZ with green pointing up (+Y / OpenGL). Your engine may require flipping the green channel. Normals are estimated from the image; they do not recover measured geometry. This is a 2.5D lighting approximation.

Normal generation

The independent browser implementation is inspired by Sprite Fusion Sprite Normals by Hugo Duprez, under the MIT license.

Assets & typography

Coca-Cola cap, Oreo cookie and LEGO brick are generated product illustrations used as recognizable material and relief examples. The cap came with Alex’s handoff; the cookie and brick were added with ImageGen. OpenAI, Tesla and Bitcoin demonstration marks are sourced from Simple Icons under CC0. All brand names and marks belong to their respective owners. These examples do not imply endorsement.

Manrope is served locally under the SIL Open Font License. The interface follows Amir’s Machine Vision control system.