Skip to content

Commit

Permalink
Update README, embed fallback font on macOS to ensure functionality w…
Browse files Browse the repository at this point in the history
…ithin App Sandbox.
  • Loading branch information
adamjs committed Jul 22, 2023
1 parent 1cb7e85 commit 208d653
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 46 deletions.
2 changes: 1 addition & 1 deletion Deps.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ endif ()
set(ULTRALIGHTCORE_REV "41a04e01")
set(WEBCORE_REV "e9fa2251")
set(ULTRALIGHT_REV "561bd7be")
set(APPCORE_REV "e8b473d")
set(APPCORE_REV "5f88113")

set(ULTRALIGHTCORE_DIR "${CMAKE_CURRENT_BINARY_DIR}/deps/UltralightCore/")
set(WEBCORE_DIR "${CMAKE_CURRENT_BINARY_DIR}/deps/WebCore/")
Expand Down
113 changes: 68 additions & 45 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,111 +1,129 @@
<img src="media/logo.png" width="200">
<a href='https://ci.ultralig.ht/job/Ultralight/job/master/'><img src='https://ci.ultralig.ht/buildStatus/icon?job=Ultralight%2Fmaster'></a>

[Website](https://ultralig.ht) | [Join our Discord!](https://chat.ultralig.ht) | [C++ API](https://ultralig.ht/api/cpp/1_3_0/) | [C API](https://ultralig.ht/api/c/1_3_0/) | [Support Docs](https://docs.ultralig.ht) | [Twitter](https://twitter.com/ultralight_ux)
[Website](https://ultralig.ht) | [Chat on Discord!](https://chat.ultralig.ht) | [Browse C++ API](https://ultralig.ht/api/cpp/1_3_0/) | [Browse C API](https://ultralig.ht/api/c/1_3_0/) | [Support Docs](https://docs.ultralig.ht) | [Twitter](https://twitter.com/ultralight_ux)

## Discord Chat
## :video_game: Discord Chat

Got a question about Ultralight? Come chat with us on Discord!
Got a question about Ultralight? [<strong>Chat with us on Discord!</strong> <img src="media/discord-logo.svg">](https://chat.ultralig.ht)

[<strong>Join the Ultralight Discord!</strong> <img src="media/discord-logo.svg">](https://chat.ultralig.ht)
# :star: About

# About
Ultralight makes it easy for C/C++ developers to seamlessly integrate web-content into games and desktop apps.

Ultralight allows C/C++ developers to seamlessly integrate web-content into games and desktop apps. Our ultra-portable engine supports the latest HTML/CSS/JS standards while remaining exceptionally lightweight in binary size and memory usage.
Use our lightweight, high-performance renderer to display HTML/JS/CSS on a variety of platforms and hardware targets.

## Key Features

<dl>
<dt>1. Lightweight and Powerful:</dt>
<dt>1. :zap: Modern HTML/JS/CSS Support:</dt>
<dd>
Thanks to its dual, high-performance CPU and GPU renderers, Ultralight offers the perfect balance between performance and resource consumption-- making it the go-to choice for developers who demand speed in constrained environments.
Based on WebKit, Ultralight enjoys many of the same cutting-edge web features as Apple's Safari browser, simplifying development and reducing production costs.
</dd>

<dt>2. Cross-Platform Compatibility:</dt>
<dt>2. :sparkles: Powerful and Lightweight:</dt>
<dd>
With support for Windows, macOS, Linux, Xbox, PS4, and PS5 (and ARM64 coming in 1.4), Ultralight ensures your content displays smoothly and consistently on a wide range of platforms and hardware targets.
Thanks to its highly-customizable CPU and GPU renderers, Ultralight offers developers unprecedented control over performance and memory usage-- making it the go-to choice for users who demand speed in constrained environments.
</dd>

<dt>3. Modern HTML/JS/CSS Support:</dt>
<dt>3. :jigsaw: Cross-Platform Compatibility:</dt>
<dd>
Based on WebKit, Ultralight enjoys many of the same cutting-edge web features as Apple's Safari browser, simplifying testing and reducing production costs.
With support for Windows, macOS, Linux, Xbox, PS4, and PS5 (and ARM64 coming in 1.4), Ultralight ensures your content displays smoothly and consistently on a wide range of platforms and hardware targets.
</dd>

<dt>4. Deep C/C++ and JavaScript Integration:</dt>
<dt>4. :repeat: Deep C/C++ and JavaScript Integration:</dt>
<dd>
Ultralight facilitates seamless C/C++ and JavaScript integration through direct access to the JavaScriptCore API. Expose native state to web pages, extend JavaScript classes, define C/C++ callbacks, and more.
</dd>

<dt>5. Low-Level Customization:</dt>
<dt>5. :wrench: Low-Level Customization:</dt>
<dd>
Ultralight allows you to override platform-specific functionality, granting OS-level control over file-system access, clipboard management, font loading, and more to suit the unique needs of your application.
Ultralight allows developers the ability to override platform-specific functionality-- granting control over such things as file-system access, clipboard management, font loading, and more to suit the unique needs of each target environment.
</dd>
</dl>

## For Game Developers
## :space_invader: For Game Developers

Developed in collaboration with top AAA game studios, Ultralight is engineered to display high-performance web-content across a diverse set of hardware targets and game engine environments.

Choose between our CPU renderer for fast, reliable rendering or our customizable GPU renderer for unparalleled animation performance.

__→ Learn more by visiting our [Game Integration Guide](https://docs.ultralig.ht/docs/integrating-with-games).__

## For Desktop-App Developers
## :desktop_computer: For Desktop-App Developers

Get the best of both worlds-- save time by building your front-end with HTML/CSS/JS while retaining the power and performance of C/C++.

Embed the renderer directly within your existing run loop or leverage our AppCore framework to do all the heavy lifting for you, offering convenient native window management and accelerated rendering.

__→ Learn more by visiting our [Desktop App Guide](https://docs.ultralig.ht/docs/writing-your-first-app).__

# Architecture
## :classical_building: Architecture

Ultralight is a platform-agnostic port of WebKit for games and desktop apps.

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](https://github.com/ultralight-ux/WebCore) |
| __Ultralight__ | View, compositor, and event logic | Proprietary | (Avaiable with license) |
| __AppCore__ | Optional desktop app runtime | LGPL | [ultralight-ux/AppCore](https://github.com/ultralight-ux/AppCore) |

## Dual High-Performance Renderers
| | Description | License | Source Code |
|--------------------|------------------------------------------|-------------|--------------------------|
| __UltralightCore__ | Low-level graphics renderer | Proprietary | (Available with license) |
| __WebCore__ | HTML layout engine (WebKit fork) | LGPL/BSD | [ultralight-ux/WebCore](https://github.com/ultralight-ux/WebCore) |
| __Ultralight__ | View, compositor, and event logic | Proprietary | (Avaiable with license) |
| __AppCore__ | :sparkles: Optional, desktop app runtime | LGPL | [ultralight-ux/AppCore](https://github.com/ultralight-ux/AppCore) |

We support two different renderers for integration into a variety of target environments.
### :rocket: Dual High-Performance Renderers

### CPU Renderer
We offer two different renderers for integration into a variety of target environments.

For easy integration into games and other complex environments, Ultralight can render to an offscreen pixel buffer via a multi-threaded CPU rendering pipeline. For more info, see the [Game Integration Guide](https://docs.ultralig.ht/docs/integrating-with-games).
<table style="width: 100%;">
<tr><th> :sparkle: CPU Renderer</th><th> :eight_spoked_asterisk: GPU Renderer</th></tr>
<tr>
<td style="width: 50%;">

The library can also render directly to a user-supplied block of memory via the Surface API (see [Using a Custom Surface](https://docs.ultralig.ht/docs/using-a-custom-surface)).
* Fast, lightweight, and easy to integrate.
* Renders to a 32-bit BGRA pixel buffer.
* Based on Skia, accelerated via multi-threaded SIMD.
* See the [Game Integration Guide](https://docs.ultralig.ht/docs/integrating-with-games) for more info.

Paths, gradients, images, and patterns in this pipeline are rasterized and composited in parallel using [Skia](https://skia.org/).
</td>
<td style="width: 50%;">

### GPU Renderer
* High-performance, customizable, and portable.
* Renders on the GPU to a texture.
* Accelerated via tesselated geometry and pixel shaders.
* See [Using a Custom GPUDriver](https://docs.ultralig.ht/docs/using-a-custom-gpudriver) for more info.

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](https://docs.ultralig.ht/docs/using-a-custom-gpudriver).
</td></tr>
</table>

The GPU renderer is enabled by default when using Ultralight via the AppCore runtime.
## :lock: Licensing

# Licensing
It's easy to license Ultralight in projects big and small.

## Free License
<table style="width: 100%;">
<tr><th> :heart_eyes: Free License</th><th> :crown: Commercial License</th></tr>
<tr>
<td style="width: 50%;">

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](license/LICENSE.txt)
* __Free__ for non-commercial use.
* __Free__ for commercial use by indie companies (< $100K annual revenue).
* Full SDK available for all users, download and try now.
* See [LICENSE.txt](license/LICENSE.txt) for more info.

## Commercial Licensing and Support
</td>
<td style="width: 50%;">

We offer commercial licensing, priority support, and source code. To learn more, please [visit our website](https://ultralig.ht).
* Paid licenses for commercial use.
* Enterprise licensing, custom contracts, and volume discounts available.
* Performance tools, extra configurations, and source code.
* See [our website](https://ultralig.ht) for more info.

# Building the Samples

To build the samples in this repo, please [follow the instructions here](https://docs.ultralig.ht/docs/trying-the-samples).
</td></tr>
</table>

# Getting the Latest SDK
## :eyes: Getting the Latest SDK

You can get the latest SDK for each platform via the following links:
You can get the latest SDK for each platform below (contact us for Xbox, PS4, and PS5):

* [Windows | x64](https://ultralight-sdk.sfo2.cdn.digitaloceanspaces.com/ultralight-sdk-latest-win-x64.7z)
* [Linux | x64](https://ultralight-sdk.sfo2.cdn.digitaloceanspaces.com/ultralight-sdk-latest-linux-x64.7z)
Expand All @@ -117,7 +135,12 @@ Pre-built binares are uploaded to the following S3 buckets every commit:

* __Archived Binaries__: <https://ultralight-sdk.sfo2.cdn.digitaloceanspaces.com/>

# Useful Links
## :hammer_and_wrench: Building the Samples

To build the samples in this repo, please [follow the instructions here](https://docs.ultralig.ht/docs/trying-the-samples).


## :information_source: Useful Links

| Link | URL |
| -------------------------- | --------------------------------------------------- |
Expand Down

0 comments on commit 208d653

Please sign in to comment.