Ultralight is an ultra-fast, ultra-light, standards-compliant HTML renderer for applications and games.

Overview

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!

Join the Ultralight 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:

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
Issues
Releases(v1.2.1)
  • v1.2.1(Dec 17, 2020)

    Website | Read the Docs | Join our Discord! | Browse C/C++ API | Follow on Twitter

    Ultralight v1.2.1 stable is now available!

    This incremental maintenance release contains the following changes:

    • Improve anti-aliased font rendering in CPU renderer (especially when compositing brightly-colored fonts against dark or transparent backgrounds).
    • Fix issue with transparency in CPU renderer (alpha channel was not cleared properly during certain painting operations).
    • Fix image scaling issue in CPU renderer.
    • Fix memory leak in frame loader.
    • Fix memory growth issue with large, shortly-lived images.
    • Fix issue with mouse cursor not being set properly on mouse enter on Windows.

    :bulb: 'Min' Packages: We've included a reduced-size build of Ultralight in this release (those ending in -min)-- these packages are smaller in size (20MB smaller on Windows) and have JavaScript JIT, WebAssembly, and JavaScript Intl features disabled.

    :speech_balloon: Discuss this release on Discord!

    :books: See our porting guide if you're migrating from v1.1

    Source code(tar.gz)
    Source code(zip)
    ultralight-sdk-1.2.1-linux-x64.7z(19.41 MB)
    ultralight-sdk-1.2.1-mac-x64-min.7z(11.98 MB)
    ultralight-sdk-1.2.1-mac-x64.7z(16.27 MB)
    ultralight-sdk-1.2.1-win-x64-min.7z(10.54 MB)
    ultralight-sdk-1.2.1-win-x64.7z(13.78 MB)
  • v1.2.0(Oct 29, 2020)

    Website | Read the Docs | Join our Discord! | Browse C/C++ API | Follow on Twitter

    Ultralight v1.2.0 stable is now available!

    This new release includes the following major changes:

    • New CPU Renderer (easier to integrate into games / dynamic textures)
    • Updated to latest WebKit
    • Improved rendering accuracy
    • Better HTML5/CSS/JS platform support
    • Improved performance
    • Decreased runtime memory usage

    :bulb: 'Min' Packages: We've included a reduced-size build of Ultralight in this release (those ending in -min)-- these packages are smaller in size (20MB smaller on Windows) and have JavaScript JIT, WebAssembly, and JavaScript Intl features disabled.

    :speech_balloon: Discuss this release on Discord!

    :books: See our porting guide if you're migrating from v1.1

    What's New?

    New Website and Branding

    Our website got a facelift for the new release, check it out here.

    We're Now on Discord!

    We're now on Discord-- come chat with us about the library, ask questions, and share awesome projects!

    New CPU Renderer

    To make it easier to integrate Ultralight into games and other environments, we've added a new pure-CPU backend.

    This new renderer can render HTML to a pixel buffer (optionally provided by you) using an SIMD-accelerated CPU rendering pipeline. Paths, gradients, and patterns in this mode are rasterized using Blend2D's high-performance JIT compiler.

    Bindings for C#, Java, Rust, and more

    Some awesome members of our community have ported Ultralight to other languages! Give these projects some love-- many of the maintainers hang out in Discord.

    Improvements for Games

    Many users have expressed desire to integrate Ultralight into games so we've updated our features and API to match!

    We now offer an in-depth game integration guide and improved our API to make the integration process as easy as possible. (PS, we're porting Ultralight to Xbox, PS4, and more, contact us if you're interested!)

    Better C API Coverage

    Ultralight's offers a C++ API and a separate C API (available in <Ultralight/CAPI.h> and <AppCore/CAPI.h> respectively). This C API has now been improved to offer 100% coverage of the functionality available in our main C++ API.

    New OpenGL Integration Sample

    To better showcase the new CPU renderer we've created a new, OpenGL-based cover-flow browser sample. This sample demonstrates how to use the new Surface API with an OpenGL PBO for low-latency, DMA transfer to a GPU texture.

    gl_sample1

    Future Work

    We're already hard at work on the next major branch (1.3), here's a sneak peek at a couple of our priorities for the next release:

    • Multi-window and multi-monitor support
    • HTML5 platform improvements (Video and Audio support, CSS filters, SVG filters, SVG stroke dashed array, dashed borders, JS dialogs)
    • Windowing improvements in AppCore (borderless windows, drag handles, app icons, context menus, notifications, and more)
    • Multi-process API (for View/Renderer crash isolation and 32-bit host communication)
    • DOM Manipulation API (modify DOM and hook DOM events from C/C++)

    Changelog for 1.2.0

    • Updated to latest WebKit
      • Integrated latest updates (WebKit 608.3.10.10.1 / Safari 13.0.3)
      • Added support for WebSockets over SSL
      • Added support for WebAssembly
      • Fixed several flexbox layout bugs
    • Improved HTML5 platform support
      • Improved SVG support
      • Improved HTML5 canvas support
      • Added support for IndexedDB
      • Added support for <select>
      • Added support for <input type="range">
      • Added support for <progress>
      • Added support for <a target="_blank"> and window.open()
    • Sharper rendering at all DPIs
      • Improved glyph compositing (hinting and gamma are now user-configurable)
      • Improved pixel-snapping of various borders
      • Improved hairline stroke rendering
    • Better JavaScript performance
      • Enabled FTL JIT for faster JavaScript performance
      • Enabled Riptide GC for lower-latency collection
    • Added accelerated CPU renderer
      • Implemented an additional SIMD-accelerated CPU rendering backend
      • Can paint directly to a user-supplied BGRA32 pixel-buffer
      • Useful for integrating into games or environments with limited GPU
    • Decreased memory usage
      • Significantly decreased memory usage
      • Added API to dump memory statistics
    • Other improvements
      • Added support for user-selection, cut, copy, and paste (new Clipboard API)
      • Expanded C API support (we now expose all the Platform callbacks).
      • Fix rendering issues with nested scrolling containers and iframes.
      • Improved SSL certificate verification, uses bundled CA cert file (from Mozilla).
      • Exposed network errors to LoadListener API
      • Improved cursor support in AppCore
      • Reduced ICU data size
    Source code(tar.gz)
    Source code(zip)
    ultralight-sdk-1.2.0-linux-x64.7z(19.40 MB)
    ultralight-sdk-1.2.0-mac-x64-min.7z(11.85 MB)
    ultralight-sdk-1.2.0-mac-x64.7z(16.07 MB)
    ultralight-sdk-1.2.0-win-x64-min.7z(10.26 MB)
    ultralight-sdk-1.2.0-win-x64.7z(13.09 MB)
  • v1.2.0-beta.2(Aug 12, 2020)

    Website | Read the Docs | Join our Discord! | Support Forum | Browse API | Follow on Twitter

    Ultralight v1.2.0 is now ready for beta testing!

    Please see our porting guide if you're migrating from v1.1.

    This major update integrates latest changes from WebKit, improves upon a range of rendering issues, adds a new pure-CPU renderer for easier usage in games and limited-GPU environments, and offers improved performance and decreased runtime memory usage.

    Note: no size optimizations have been performed on binaries yet, expect additional improvements for the final stable release

    Discuss this release in Discord!

    Changelog for 1.2.0

    • Updated to latest WebKit
      • Integrated latest updates (WebKit 608.3.10.10.1 / Safari 13.0.3)
      • Added support for WebSockets over SSL
      • Added support for WebAssembly
      • Fixed several flexbox layout bugs
    • Improved HTML5 platform support
      • Improved SVG support
      • Improved HTML5 canvas support
      • Added support for <select>
      • Added support for <input type="range">
      • Added support for <progress>
      • Added support for <a target="_blank"> and window.open()
    • Sharper rendering at all DPIs
      • Improved glyph compositing (hinting and gamma are now user-configurable)
      • Improved pixel-snapping of various borders
      • Improved hairline stroke rendering
    • Better JavaScript performance
      • Enabled FTL JIT for faster JavaScript performance
      • Enabled Riptide GC for lower-latency collection
    • Added accelerated CPU renderer
      • Implemented an additional SIMD-accelerated CPU rendering backend
      • Can paint directly to a user-supplied BGRA32 pixel-buffer
      • Useful for integrating into games or environments with limited GPU
    • Added support for UWP/Xbox
      • Can be used to target Windows Store apps (Windows 10, HoloLens, Xbox One)
      • (Contact us if you are developing with the Xbox toolchain)
    • Decreased memory usage
      • Significantly decreased memory usage
      • Added API to dump memory statistics
    • Other improvements
      • Added support for user-selection, cut, copy, and paste (new Clipboard API)
      • Expanded C API support (we now expose all the Platform callbacks).
      • Fix rendering issues with nested scrolling containers and iframes.
      • Improved SSL certificate verification, uses bundled CA cert file (from Mozilla).
      • Exposed network errors to LoadListener API
      • Improved cursor support in AppCore
    Source code(tar.gz)
    Source code(zip)
    ultralight-sdk-1.2.0-beta.2-linux-x64.7z(24.51 MB)
    ultralight-sdk-1.2.0-beta.2-mac-x64.7z(21.83 MB)
    ultralight-sdk-1.2.0-beta.2-win-uwp-x64.7z(18.63 MB)
    ultralight-sdk-1.2.0-beta.2-win-x64.7z(19.96 MB)
  • v1.1.0(Jan 10, 2020)

    We're excited to announce our latest stable release, v1.1.0!

    Links

    What's New?

    New Quick Start Tutorial

    Building a desktop app? Get started in as little as 5 minutes with our new Quick-Start Tutorial

    New Docs

    Need help getting started? Want to integrate Ultralight into a game? Check our new Docs Website.

    New Samples

    All of the samples included in the SDK have been updated with new visuals and documentation.

    New Compositor

    The renderer/compositor back-end has been redesigned for more fluid CSS animations and transitions. This gives a noticeable performance boost on pages with complex CSS.

    Commercial Licensing

    We now offer commercial licensing options for Ultralight! Check out our website for more info.

    Deprecating 32-bit Support

    We will no longer be supporting 32-bit (x86) since upstream JavaScriptCore has dropped support. On the upside, this change will give a slight performance boost on 64-bit.

    Changelog

    This release brings many important stability, rendering, performance, and memory usage improvements to the library. Notable improvements include:
    Rendering
    • Added CSS 3D / perspective transforms
    • Accelerated CSS transforms / transitions via new compositor
    • Improved Font Hinting and CJK Font support
    • Fixed many CSS / painting glitches (backgrounds, clips, transitions, etc.)
    • Made rendering pipeline sRGB-aware and gamma-correct
    • Improved scrollbar theming and sub-frame scrolling
    • Added support for checkbox, text input, radio buttons
    • Added support for radial gradients
    • Improved SVG Path stroke/fill rendering
    • Accelerated path rendering via MSAA
    • Enabled primitive Canvas API support (filled/stroked paths only)
    • Improved image scaling and memory usage for very large images
    JavaScript
    • Fixed GC crash in pages with heavy JavaScript
    • Enabled DFG JIT for faster performance with long-running scripts
    • Enabled ES6 Module support
    • Enabled bmalloc slab allocator on all platforms
    • Reduced initial memory usage and heap scaling
    Platform / Drivers
    • Added DirectX 12 driver support (experimental in AppCore repo)
    • Fixed rendering glitches on macOS/Metal
    • Added triple-buffering to macOS/Metal driver, improved performance
    • Accelerated View/Window resizing
    • Improve rendering with fractional DPI scales
    • Improved tab key handling (tab navigation works correctly now)
    • Enabled CPU-only WARP fallback in Windows/D3D11 driver
    • Fixed crash during App destruction on Linux
    • Added native Linux font loader (uses FontConfig)
    • Made it easier to bundle shared libs on Linux by having the rpath search the executable path first
    • Fixed crash when creating an App on Windows 7 platform
    • Fixed issues with tracking mouse during drag operation
    Debugging / Profiling
    • Added Web Inspector (useful for debugging JS / CSS locally)
    • Added Config option to force repaints (for debugging GPUDriver)
    • Debug symbols are now available for the WebCore and AppCore modules for every build/commit as part of our continuous delivery system.
    Source code(tar.gz)
    Source code(zip)
    ultralight-sdk-1.1.0-linux-x64.7z(13.57 MB)
    ultralight-sdk-1.1.0-mac-x64.7z(12.87 MB)
    ultralight-sdk-1.1.0-win-x64.7z(11.06 MB)
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Ivan Bobev 94 Jul 31, 2022
Real-time Water - Fast Water Simulation for Games Using Height Fields

In this project a water-simulation was implemented based on the approach suggested in the presentation "Fast Water Simulation for Game

Henrik Patjens 137 Jun 4, 2022
Niagara UI Renderer | Free Plugin for Unreal Engine 4

Niagara UI Renderer | Free Plugin for Unreal Engine 4 Niagara UI Plugin adds Niagara Particle System Widget that allows you to render Niagara particle

null 127 Jul 30, 2022
Engine-3D is a 3D-Graphics Renderer built from scratch in C++

Engine3D Engine-3D is a 3D-Graphics Renderer built from scratch in C++, as an Undergraduate Computer Engineering Project for 5th Semester, assigned by

Chirag Lamsal 4 Nov 15, 2021
Cross-platform version of Heboris C7EX using a hardware-accelerated SDL 2.0 renderer

Heboris C7EX - unofficial version (YGS2K EX) This version contains the source code for Heboris C7EX. It requires a C compiler, SDL 2.0, SDL 2.0 mixer,

Brandon McGriff 9 May 27, 2022
Ducktape is an Open source Light weight 2d Game Engine that gives utmost priority to user convenience.

Ducktape is an Open source Light weight 2d Game Engine that gives utmost priority to user convenience. It is written in c++ and uses SFML and Box2d for graphics and physics respectively.

Ducktape 68 Jul 29, 2022
OGRE is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware.

OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware. The class library abstracts all the details of using the underlying system libraries like Direct3D and OpenGL and provides an interface based on world objects and other intuitive classes.

null 2.9k Aug 2, 2022
Distributed server for social and realtime games and apps.

Distributed server for social and realtime games and apps. Features Users - Register/login new users via social networks, email, or device ID. Storage

Heroic Labs 6.2k Aug 6, 2022
3D games console based on RP2040 and iCE40 UP5k

PicoStation 3D This is an unfinished, untested project to develop a 3D games console based on an RP2040 microcontroller and an iCE40 UP5k FPGA. Quick

Luke Wren 36 Jul 26, 2022
A set of libraries and tools to make MSX games using the C programming language.

ubox MSX lib This is a set of libraries and tools to make MSX games using the C programming language. There are three main components: ubox: thin wrap

Juan J. Martínez 42 May 30, 2022
TIC-80 is a fantasy computer for making, playing and sharing tiny games.

TIC-80 is a fantasy computer for making, playing and sharing tiny games.

Vadim Grigoruk 3.5k Jul 30, 2022
Enfusion Artifical Intelligence for DayZ and future Bohemia Interactive games.

Enfusion AI Project (eAI) This mod adds headless player units under the control of a script on the server. Although the script is very rudimentary now

William Bowers 55 Jun 13, 2022
Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Storm Devs 637 Aug 6, 2022
Project DELTA - An open-source trainer built on the Void Engine for Toby Fox's games and their spin-offs.

Project DELTA v3 Project DELTA - An open-source, modular mod menu for Toby Fox's games and their spin-offs. Important note to Grossley: Yes, it is out

Archie 7 Apr 20, 2022
Graphical improvements mod for Hyperdimension Neptunia Re;Birth1, Re;Birth2 and Re;Birth3 games.

Neptastic Mod Graphical improvements mod for Hyperdimension Neptunia Re;Birth1, Re;Birth2 and Re;Birth3 games. Features: Resolution upscaling and down

tlaik 29 Jul 19, 2022
Dragon's Dice Roller aims to be a lightweight, simple, reliable and easy-to-use dice roller for RPG games.

Dragon's Dice Roller is the first and (so far the only) open source RPG dice roller written in C available on GitHub. It aims to be a lightweight, simple, reliable and easy-to-use dice roller for any kind of role-playing game.

Michael Kolesidis 10 Apr 22, 2022
YYToolkit is a tool for creating mods and altering GameMaker games.

YYToolkit is a tool for creating mods and altering GameMaker games.

Archie 31 Jul 1, 2022
GRawInput is a modification for games "Gothic" and "Gothic 2"

GRawInput GRawInput is a modification for games "Gothic" and "Gothic 2" that change old deprecated DirectX7 Direct Input Keyboard and Mouse interface

Jakub 4 Aug 1, 2022
A CTRPF plugin for the Nintendo 3DS Pokémon games in which, supports both the 6th and 7th generations.

Multi-Pokémon Framework Multi-Pokémon Framework is a Pokémon plugin developed by Jared0714 that is based off of Nanquitas' CTRPluginFramework. This pl

null 23 Jul 31, 2022