A complete WebP codec for Unity — encode and decode, still and animated, lossy and lossless, with alpha — written entirely in managed C#. It ships as one assembly with zero runtime dependencies. There is no .dll, .so, .a, or .aar to ship, sign, or debug. Unity compiles the same code for every target, so the same .webp decodes bit-identically in a Windows editor, on an iPhone, and on a WebGL page.
Display a .webp with no code. Drop the file into Assets/ and the editor importer turns it into a Texture2D, complete with a Project-window thumbnail and an inspector preview. At runtime, add a drop-on component to a GameObject — a uGUI RawImage or Image, a SpriteRenderer, or any Renderer. Point it at a path, StreamingAssets, a URL, a TextAsset, or raw bytes, and the image appears.
Stream from the web in one call. Fetch a .webp over UnityWebRequest straight into a Texture2D, with an optional memory and disk cache. Decoding runs on a background worker thread, and the texture upload is marshalled back to the main thread. The loaders come in async/Task, coroutine, and Awaitable forms, all cancellable.
Play animated WebP. The animation player component plays an animated .webp with play, pause, loop, speed, and seek, plus per-frame events. It streams frames by default to keep memory low, and can pre-decode short loops for zero per-frame cost.
Encode from Unity. The same package encodes a readable Texture2D, RenderTexture, or Color32 buffer back to WebP — lossy, lossless, near-lossless, and with alpha. Use it for screenshots, user-generated content, and runtime export.
Safe where native plugins break. The codec is reflection-free and driven entirely through its public API, so it is IL2CPP- and AOT-safe out of the box. A link.xml ships to survive code stripping at any level. Output is deterministic and bit-identical across platforms. The package runs under both Mono and IL2CPP, on desktop and mobile, and on WebGL.