VellumUI 1.1.0
dotnet add package VellumUI --version 1.1.0
NuGet\Install-Package VellumUI -Version 1.1.0
<PackageReference Include="VellumUI" Version="1.1.0" />
<PackageVersion Include="VellumUI" Version="1.1.0" />
<PackageReference Include="VellumUI" />
paket add VellumUI --version 1.1.0
#r "nuget: VellumUI, 1.1.0"
#:package VellumUI@1.1.0
#addin nuget:?package=VellumUI&version=1.1.0
#tool nuget:?package=VellumUI&version=1.1.0
Vellum
Immediate-mode GUI library for C# with a small renderer API and built-in text rendering.
Install:
dotnet add package VellumUI
Vellum is backend-neutral. Application code builds UI with Ui; a host backend owns the window, collects input, implements Vellum.Rendering.IRenderer, and turns RenderList data into graphics API calls. The package ships the core UI library, not a ready-made desktop host.
Basic usage:
using System.Numerics;
using Vellum;
using Vellum.Rendering;
IRenderer renderer = /* your backend */;
var ui = new Ui(renderer)
{
Theme = ThemePresets.Dark()
};
var state = new AppState();
while (app.Running)
{
Vector2 mouse = app.MousePosition;
UiInputState input = app.BuildUiInput();
ui.Frame(app.Width, app.Height, mouse, input, state, static (root, state) =>
{
root.FillViewport(root.Theme.SurfaceBg);
root.Panel(320f, state, static (panel, state) =>
{
panel.Heading("Hello");
if (panel.Button("Increment").Clicked)
state.Clicks++;
panel.Label($"Clicks: {state.Clicks}");
});
});
bool wantsMouse = ui.WantsCaptureMouse;
bool wantsKeyboard = ui.WantsCaptureKeyboard;
}
sealed class AppState
{
public int Clicks;
}
The current widget set includes labels, panels, buttons, checkboxes, switches, radio buttons, selectables, combo boxes, sliders, drag controls, color pickers, text fields, text areas, progress bars, histograms, spinners, scroll areas, tables, tabs, tree views, menu bars, cascading menus, popups, tooltips, movable windows, dock spaces, and custom canvas drawing.
Windows keep their persistent state in WindowState. Docking is opt-in through DockingState:
var docking = new DockingState();
var inspector = new WindowState(new Vector2(40f, 40f), new Vector2(320f, 220f));
ui.Docking = docking;
ui.Frame(width, height, mouse, input, root =>
{
root.DockSpace("main-dock", root.AvailableWidth, 360f);
root.Window("Inspector", inspector, 320f, body =>
{
body.Label("Selected entity");
}, resizable: true);
});
Vellum includes a lightweight TrueType loader, glyph rasterizer, atlas manager, a default embedded text font, and a bundled Material Symbols Outlined font exposed as UiFonts.MaterialSymbols and MaterialSymbols.Font. Custom fonts can be assigned with TrueTypeFont.FromFile(...); merged fallback stacks can be assigned with UiFont.Merge(...) and tuned with UiFont.Source(...).
Implement IRenderer to connect Vellum to your graphics backend.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on VellumUI:
| Repository | Stars |
|---|---|
|
notgiven688/jitterphysics2
Fast, simple, and dependency-free physics engine written in C# with a clear and user-friendly API.
|
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0 | 24 | 5/9/2026 |
| 1.0.1 | 39 | 5/8/2026 |
| 1.0.0 | 33 | 5/8/2026 |
| 0.9.7 | 35 | 5/8/2026 |
| 0.9.6 | 30 | 5/8/2026 |
| 0.9.5 | 39 | 5/7/2026 |
| 0.9.0 | 52 | 5/5/2026 |
| 0.8.0 | 53 | 5/5/2026 |
| 0.7.0 | 97 | 4/30/2026 |
| 0.6.0 | 91 | 4/29/2026 |
| 0.5.0 | 95 | 4/29/2026 |
| 0.4.0 | 98 | 4/29/2026 |
| 0.3.0 | 103 | 4/28/2026 |
| 0.2.0 | 88 | 4/28/2026 |
| 0.1.0 | 102 | 4/28/2026 |