UltralightNext-generation HTML renderer for apps and games
Website | Join our Discord! | Browse C/C++ API | Documentation | Follow on Twitter
Discord Chat
Got a question about Ultralight? Come chat with us on Discord!
About
Ultralight is an ultra-fast, ultra-light, standards-compliant HTML renderer for applications and games. It supports most modern HTML5, CSS, and JavaScript features while still remaining light in binary size and memory usage.
Currently available for Windows, macOS, and Linux (64-bit only, ARM64 coming).
Official API is available for C and C++, with community bindings for C#, Rust, Java, and Go available here.
Get started now by reading the docs.
Next-Generation HTML Renderer
You can think of Ultralight like a smaller, lighter, cross-platform WebKit that's more customizable and designed to display HTML in an existing app rather than function as a standalone browser.
The API allows you to integrate your native code deeply with JavaScript (we offer bare-metal access to the JavaScriptCore VM API) and allows you to customize file system loaders, font loading, clipboard integration, and even drawing itself (via GPU display lists or the Surface API).
For Games
Render HTML to an in-game texture using our CPU renderer or take performance to the next level using our GPU renderer.
Take advantage of our low-level platform API— load HTML assets directly from your game's existing asset pipeline using the FileSystem interface.
→ Learn more by visiting our Game Integration Guide.
For Desktop Apps
Get the best of both worlds by building your native C/C++ desktop app's front-end with modern HTML/CSS/JS.
Take advantage of our AppCore framework to launch cross-platform windows and render to OS-native GPU surfaces (D3D11, D3D12, Metal, OpenGL, and more).
AppCore is currently under active development and only supports single-window apps at this writing. A number of planned features (app icons, automatic packager, borderless windows with custom draggable titlebars, etc) are missing but on the way.
→ Learn more by visiting our Desktop App Guide.
Base Memory Usage
Ultralight | Electron | |
---|---|---|
Windows | 9 MB | 72 MB |
macOS | 17 MB | 97 MB |
Linux | 15 MB | 136 MB |
Base Distributable Size
Ultralight | Electron | |
---|---|---|
Windows | 40 MB | 147 MB |
macOS | 55 MB | 163 MB |
Linux | 55 MB | 179 MB |
Comparison with Chromium
Ultralight | Chromium | |
---|---|---|
Renderer | Proprietary (GPU or CPU) | Skia (CPU) / GPU Compositor |
Layout Engine | WebCore (WebKit fork) | Blink |
JavaScript VM | JavaScriptCore | V8 |
IPC | None (Single Process) | Yes (Multi Process) |
Architecture
Ultralight is a new port of WebKit combined with a new lightweight renderer intended specifically for embedding in apps and games.
Portions of the library are open-source, here's how the library is laid out:
Description | License | Source Code | |
---|---|---|---|
UltralightCore | Low-level graphics renderer | Proprietary | (Available with license) |
WebCore | HTML layout engine (WebKit fork) | LGPL/BSD | ultralight-ux/WebCore |
Ultralight | View, compositor, and event logic | Proprietary | (Avaiable with license) |
AppCore | Optional, desktop app runtime | LGPL | ultralight-ux/AppCore |
Dual High-Performance Renderers
We support two different renderers for integration into a variety of target environments.
GPU Renderer
Our optional, high-performance GPU renderer can render HTML directly on the GPU. All painting is performed via virtual display lists and translated to your target graphics platform at runtime. For more info, see Using a Custom GPUDriver.
The GPU renderer is enabled by default when using Ultralight via the AppCore runtime.
CPU Renderer
For easier integration into games and other complex environments, Ultralight can render to an offscreen pixel buffer using an SIMD-accelerated CPU rendering pipeline. Fore more info, see the Game Integration Guide.
The library can also render to a user-supplied pixel buffer via the Surface API (see Using a Custom Surface).
Paths, gradients, and patterns in this mode are rasterized using Blend2D's high-performance JIT compiler.
Licensing
Free License
Ultralight is free for non-commercial use and free for commercial use by companies with less than $100K gross annual revenue. For more info see LICENSE.txt
Commercial Licensing and Support
We offer commercial licensing, priority support, and source code. To learn more, please visit our website.
Building the Samples
To build the samples in this repo, please follow the instructions here.
Getting the Latest SDK
You can get the latest SDK for each platform via the following links:
Getting Archived Binaries for a Specific Commit
Pre-built binares are uploaded to the following S3 buckets every commit:
- Archived Binaries: https://ultralight-sdk.sfo2.cdn.digitaloceanspaces.com/
Useful Links
Link | URL |
---|---|
Join our Discord! | https://chat.ultralig.ht |
Docs / Getting Started | https://docs.ultralig.ht |
Browse C/C++ API | https://github.com/ultralight-ux/Ultralight-API/ |
Follow Us on Twitter | https://twitter.com/ultralight_ux |