v1.0.0 · Unity 6000.0+ · URP

Forge UI

One asset that replaces six. A code-first, token-driven UGUI toolkit for Unity 6 & URP: GPU-drawn SDF shapes, soft shadows & glow, glassmorphism, filters & soft masks, a 60+ piece component library, flexbox layout, a zero-GC tween engine, MVVM data binding, design-token theming, plus a visual Design Canvas and an AI generation layer — all behind one coherent API.

Unity 6000.0+ URP UGUI + TextMeshPro Sprite-free / Resolution-independent Editor + Runtime
ⓘ
One coherent model, three ways to use it. The exact same public API powers hand-authoring in code, the drag-and-drop Design Canvas, and the AI / MCP layer that builds screens from a description. Whatever you build one way is fully editable the others.
★
Nothing is a sprite. Shapes, strokes, gradients, shadows and masks are rendered analytically on the GPU from signed-distance fields, so they stay crisp at any resolution and DPI — no atlases to bake, no 9-slice seams. A single shared material keeps draw calls batched.

This document is organized by capability. Rendering & Effects covers the GPU drawing layer; Building UI covers components, layout, data and animation; Systems covers theming, localization, accessibility and AI; and Reference covers the demo, module map, requirements and support.

⤓ Installation

Import once. Every module lights up immediately — there is no mandatory setup step.

From the Unity Asset Store

Open Package Manager
In Unity 6000.0 or later, open Window → Package Manager and switch the dropdown to My Assets.
Download & Import Forge
Accept the import dialog with everything checked. The package lands at Assets/Forge/.
Wait for compile
Unity compiles the per-module editor and runtime assemblies. The first import takes ~30 s.
Open the Hub
Tools → Forge → Hub to browse modules and manage the theme, or Window → Forge Canvas to start dragging shapes onto an artboard.

Requirements

See Requirements & Compatibility for the full list, optional integrations and platform notes.

⚠
URP must be active. Forge UI's shaders (Forge/Shape, Forge/RtShadow, Forge/Glass, …) target URP. If your project is on the Built-in or HDRP pipeline, switch to URP before importing. See Requirements.

Optional: create a settings asset

Forge UI works out of the box, but you can create a project-wide configuration asset to toggle module feature-flags:

Tools → Forge → Create Default Settings Asset → FgSettings asset in your project

⚡ Quick Start

From an empty Canvas to a themed, animated screen in a few lines.

Draw a shape

Every visual in Forge UI ultimately comes from FgShape — one component that renders any of eight primitives with gradients, stroke and fill. Add it like any UGUI graphic:

csharpusing Forge.Shapes;

var go = new GameObject("Panel", typeof(RectTransform));
go.transform.SetParent(canvas.transform, false);

var shape = go.AddComponent<FgShape>();
shape.ShapeType   = FgShapeType.RoundedRect;
shape.CornerRadius = 24f;
shape.color       = new Color(0.10f, 0.12f, 0.18f);
shape.StrokeWidth = 2f;
shape.StrokeColor = Color.white;

Drop in a component

Production controls are one-call factories on FgComponents. They return a fully-assembled, theme-bound GameObject:

csharpusing Forge.Components;

var btn   = FgComponents.CreateButton(panel.transform, "Save");
var slider = FgComponents.CreateSlider(panel.transform, 0.5f);
var picker = FgComponents.CreateColorPicker(panel.transform)
                          .GetComponent<FgColorPicker>();
picker.Changed += c => Debug.Log(picker.Color);

Theme it, bind it, animate it

csharp// Switch the whole UI to dark mode at runtime
FgTheme.SetMode("Dark");

// MVVM: change the value once, the label follows
var score = new FgObservable<int>(0);
FgBind.Text(score, scoreLabel, v => $"Score: {v}");
score.Value = 100;   // label updates automatically

// Tween: slide a panel up with an elastic ease
panel.FgMoveAnchoredY(0f, 0.4f, FgEase.BackOut);
★
Prefer not to write code? Open Window → Forge Canvas, click items in the palette to spawn them onto the artboard, edit them in the properties panel, and flip theme modes live. See The Hub & Canvas.

⚙ The Hub & Design Canvas

Two editor windows: one to manage Forge UI, one to design with it directly.

Forge Hub Tools → Forge → Hub

The Hub is your control center. From here you browse the modules, toggle feature flags, manage the active theme asset, and jump to the demo and sample scenes. Useful menu items grouped under Tools → Forge:

Menu itemWhat it does
HubOpens the Forge Hub window (modules, flags, theme).
Create Default Settings AssetCreates an FgSettings asset for project-wide configuration.
Build Kitchen-Sink DemoGenerates Assets/Forge/Samples/ForgeKitchenSink.unity.
Build Demo SceneBuilds the guided WebGL demo scene (49 sections).
Build Studio SceneBuilds Forge Studio, the in-play design playground.
Export PackageExports Assets/Forge to a .unitypackage.

Design Canvas Window → Forge Canvas

The Design Canvas is a dockable, drag-and-drop authoring surface inside the Editor:

Components placed here also expose custom inspectors with live preview for stateful drivers (Gauge, Steps, Pagination, Timeline, RangeSlider, NavBar, StatCard).

ⓘ
Everything calls the same API. The Canvas, the custom inspectors, and the AI layer all drive the public FgShape / FgComponents / FgTheme surface — so a screen built by dragging is identical to one built in code and can be edited either way.

★ Shapes (SDF)

One component, eight primitives, infinite resolution. Forge.Shapes.FgShape.

FgShape is a MaskableGraphic that draws its shape analytically in the Forge/Shape shader from a signed-distance field. That means perfectly anti-aliased edges at any size, no source textures, and SDF-accurate raycasting (clicks only register inside the actual shape, optionally only on its outline).

Shape types

FgShapeType: RoundedRect, Ellipse, Triangle, RegularPolygon, Star, ChamferBox, Parallelogram, Capsule. Per-corner radii, polygon sides/rotation, star points/inner-ratio, chamfer and skew are all exposed as properties.

Fills

FillKindDescription
SolidFlat color. Batches with the shared material.
GradientPer-pixel gradient — see Gradients & Patterns.
SpriteSample a texture, clipped to the SDF (used for baked multi-stop gradients too).

Stroke, fill-amount & morph

csharpshape.ShapeType  = FgShapeType.Star;
shape.StarPoints = 5;
shape.FillKind   = FgFillKind.Gradient;
shape.FillMode   = FgFillMode.Radial360;   // radial progress
shape.FillAmount = 0.75f;
★
Batching by default. A plain solid/stroked shape uses the single shared Forge/Shape material, so dozens of shapes draw in one batch. A per-instance material is created only when you actually need a uniform (a gradient, a fill-amount, or a pattern).

🎨 Gradients & Patterns

Per-pixel gradients computed in-shader, plus unlimited-stop baked gradients and procedural patterns.

Per-pixel gradients

Set FillKind = Gradient and assign an FgLinearGradient (two colors, an angle, and a FgGradientKind). Kinds: Linear, Radial, Angular (conical), Diamond. Gradients can be screen-space, and are dithered to avoid banding on flat panels.

csharpshape.FillKind = FgFillKind.Gradient;
shape.Gradient = new FgLinearGradient {
    colorA = Color.HSVToRGB(0.05f, 0.9f, 1f),
    colorB = Color.HSVToRGB(0.95f, 0.9f, 1f),
    angle  = 45f,
    kind   = FgGradientKind.Radial
};

Unlimited-stop gradients

For rainbows and complex ramps, FgGradientFill bakes a native Unity Gradient (any number of stops) into a texture and routes it through the SDF sprite-fill path — so it's still clipped perfectly to the shape, with no change to the core shader.

Procedural patterns

FgPatternMode overlays a tiling pattern computed in-shader: Stripes, Dots, Checker, Grid, with PatternScale and PatternColor. The pattern path is inert by default (None) so existing shapes render byte-identical until you opt in.

☀ Shadows & Glow

True soft, blurred shadows that follow the real shape of the caster. Forge.Effects.FgRtShadow.

FgRtShadow snapshots the caster's mesh, renders it to a padded render-texture, blurs it with a Kawase pyramid, and composites it back behind (or in front of) the caster. Because it uses the caster's actual geometry, the shadow matches stars, rounded panels and text — not just a rectangle.

Drop shadow

Soft offset shadow with adjustable Size, Offset, Color and Intensity.

Glow

Set UseCasterColor for a colored glow that radiates the element's own color.

Inner shadow

Flip Inner for an inset/pressed look.

Blend modes

Normal, Additive, Screen, Multiply for how the shadow composites.

csharpusing Forge.Effects;

var sh = panel.AddComponent<FgRtShadow>();
sh.Size      = 24f;
sh.Offset    = new Vector2(0, -6);
sh.Color     = new Color(0.20f, 0.22f, 0.28f, 0.7f);
sh.Inner     = false;

A lightweight CPU-only alternative, FgSoftShadow (mesh-duplication with ring sampling), is available for cases where you don't want a render-texture.

❄ Glass & Blur

Frosted-glass / glassmorphism panels that blur whatever is behind them.

The blur is produced by FgGlassController: it renders the scene to a render-texture, runs a Kawase blur pyramid (FgKawaseBlur), and publishes the result to a global shader texture. Any FgGlass panel then samples that blurred backdrop in the Forge/Glass shader and tints it.

ⓘ
Controller-based by design. Glass currently uses a camera-driven controller rather than a URP Render Feature. A render-feature variant (grabbing the already-rendered frame, no second render) is on the roadmap; the controller approach works today on URP.

🎞 Filters & Soft Masks

Per-graphic image filters and anti-aliased masking.

Filters FgFilter

FgFilter swaps a graphic's material for Forge/UIFilter and applies one or more effects to any Image or TMP text: Grayscale, Sepia, Negative, Posterize, Hue, Saturation, Contrast, Brightness, Pixelate, Blur, EdgeDetect, RgbShift, Dissolve, Shiny and Cutoff.

⚠
FgFilter replaces the graphic's material, which means it replaces the FgShape SDF material if you put it on a shape. Use filters on a plain Image or TMP_Text, not on an FgShape you still want drawn as an SDF.

Soft masks FgSoftMask

FgSoftMask clips children to an analytic rounded-rect with a soft, anti-aliased edge — smoother than a stencil Mask. It can also mask to an arbitrary texture's alpha (a star, a logo), so you can clip content to any silhouette. Honored by both Forge/Shape and Forge/UIFilter via global shader parameters.

🧩 Components

60+ production controls, each a one-call factory on Forge.Components.FgComponents.

Every factory returns a fully-assembled GameObject built from Forge UI primitives (SDF shapes + TMP + theming + layout). All are token-themed (a Dark-mode switch restyles them live) and sprite-free. Stateful controls attach a small Fg* driver MonoBehaviour you grab with GetComponent to read state or subscribe to events.

csharpusing Forge.Components;

var picker = FgComponents.CreateColorPicker(panel.transform)
                          .GetComponent<FgColorPicker>();
picker.Changed += c => Debug.Log(picker.Color);

Forms & input

CreateButton, CreateToggle, CreateSwitch, CreateSlider, CreateRangeSlider, CreateStepper, CreateNumberField, CreateInputField, CreateTextArea, CreateInlineEdit, CreateDropdown, CreateCombobox (autocomplete), CreateTagInput, CreateRadioGroup, CreateChipGroup, CreateSegmentedControl, CreateColorSwatches, CreateColorPicker (full HSV), CreateCalendar.

Navigation

CreateTabs, CreateTabView, CreateNavBar, CreateNavRail, CreateAppBar, CreateFab, CreateBreadcrumb, CreateSteps (wizard), CreatePagination, CreatePageDots, CreateContextMenu, CreateTreeView, CreateToolbar.

Feedback & overlays

FgToast.Show, FgSnackbar.Show (with an UNDO action), CreateAlert, CreateBanner, CreateModal, CreateBottomSheet, CreateEmptyState, plus the FgTooltip and FgRipple components.

Data display

CreateProgressBar, CreateGauge (circular meter), CreateTimeline, CreateSparkline, CreateStatCard (KPI + delta), CreateKeyValueList, CreateAvatar, CreateAvatarGroup, CreateBadge, CreateChip, CreateAccordion, CreateDivider, plus the FgRating, FgCounter, FgSkeleton, FgSpinner and FgParticles components and the virtualized FgListView.

Why a factory instead of prefabs?

Code factories stay perfectly in sync with the theme system and have no broken prefab references after upgrades. The Canvas and AI layers go through FgComponentLibrary, which can use a prefab variant where one exists and otherwise falls back to the same code factory — so you get one consistent result everywhere.

☷ Layout

Flexbox for UGUI, plus masonry, radial and curve arrangements. Forge.Layout.

FgFlexLayout

A flexbox-style container that lays out its children without injecting spacer objects:

Children can carry an optional FgFlexItem for per-child sizing: Hug / Fill / Fixed width & height, grow weight, min/max clamps, aspect ratio, and percentage sizing.

Other layouts

TypeUse
FgMasonryMasonry layout — packs each item into the shortest column.
FgRadialLayoutArrange around a circle, arc or spiral; animated reflow.
FgCurveLayoutSpread children along a Catmull-Rom spline.
FgScrollSnapPaged carousel snapping with an OnPageChanged event.
FgSplitViewTwo resizable panes + a draggable divider.
FgReorderableListDrag rows to reorder; Move(from,to) + Changed.
FgSafeArea / FgResponsiveNotch-safe insets; width-breakpoint switching.

☰ Lists & Virtualization

Scroll 10,000+ rows with a handful of live cells. FgListView.

FgListView pools cells and only instantiates the ones in (and just around) the viewport, so memory and CPU stay flat regardless of data size. It supports uniform lists, grids, variable-height rows (via prefix-sum + binary search), and an infinite loop mode.

csharplistView.SetData(
    count: 10000,
    cellFactory: parent => FgComponents.CreateCard(parent),
    binder: (cell, i) => cell.GetComponentInChildren<TMP_Text>().text = $"Row {i}");

It pairs directly with data binding: FgBind.List(observableList, listView, …) keeps a virtualized list synced to an observable collection.

🔗 Data Binding

MVVM observables — the piece no all-in-one rival bundles. Forge.Data.

Wrap state in an FgObservable<T> (or FgObservableList<T>) and connect it to the UI with the static FgBind helpers. Change the value once and every bound view updates itself — no manual refresh code.

csharpusing Forge.Data;

var volume = new FgObservable<float>(0.5f);

FgBind.Text(volume, label, v => $"{v:P0}");   // one-way  -> label
FgBind.TwoWay(volume, slider);                 // two-way  <-> slider

volume.Value = 0.8f;   // label AND slider both move
BindingDirection
FgBind.Text(obs, label, fmt)one-way → TMP text
FgBind.Color(obs, graphic)one-way → Graphic.color
FgBind.Progress(obs, bar)one-way → progress bar
FgBind.TwoWay(obs, slider)two-way ↔ Slider
FgBind.TwoWay(obs, toggle)two-way ↔ Toggle
FgBind.List(obsList, listView, …)collection → virtualized list

✏ Text Effects

Per-character effects and inline-tag animation on TextMeshPro. Forge.Text.

FgTextEffects

Applies composable per-character effects to a TMP_Text mesh: a vertical gradient (TopColor / BottomColor), a sine warp (WarpAmplitude, WarpFrequency), and a typewriter reveal (Reveal 0–1). All three can run at once.

FgTextAnimator

Drives animation from inline tags in the text itself — great for damage numbers, callouts and juicy menus. Supported tags (each takes optional a= amplitude and f= frequency):

textGrab the <wave>treasure</wave> and <shake a=3>RUN!</shake>

<wave>, <bounce>, <wobble>, <shake>, <jitter>, <pulse>, <rainbow>. A typewriter mode reveals characters over time. FgTextAnimator caches the base mesh and offsets vertices per-frame, so there's no expensive re-layout.

⟳ Animation & Tweens

A pooled, zero-GC tween engine with a fluent, chainable API. Forge.Interactions.

Tweens

FgTween animates floats, vectors, colors and curves with 30 easing functions (FgEase: Quad/Cubic/Quart/Quint/Sine/Expo/Circ/Back/Elastic/Bounce, each In/Out/InOut). Tweens are chainable, can loop / ping-pong, run on unscaled time, and be killed by id.

csharpusing Forge.Interactions;

// Extension methods on RectTransform / Graphic / CanvasGroup
panel.FgMoveAnchoredY(0f, 0.4f, FgEase.BackOut);
icon.FgScale(1.2f, 0.15f, FgEase.QuadOut);
group.FgFade(1f, 0.3f);

// Direct tween with a callback
FgTween.Float(0f, 100f, 1f, FgEase.CubicInOut, v => bar.fillAmount = v / 100f)
       .SetLoops(2, pingPong: true)
       .OnComplete(() => Debug.Log("done"));

Sequences, punch, shake & paths

👆 Interactions & Navigation

Wire behavior without scripting, capture states, and manage screens.

Variants & triggers

FgVariant captures named states (transform + color + visibility) and animates between them. FgInteraction maps a trigger to an action with no code:

A preset, FgInteractionPresets.AddHoverPressScale(go), wires the common hover/press scale feedback in one call.

Screen navigation

FgScreenStack manages a stack of screens with push / pop / show and transitions (Fade, Slide, Scale) — the backbone for menus, dialogs and flows.

🎨 Theming & Tokens

Design tokens with modes that restyle the entire UI live. Forge.Theming.

An FgThemeAsset is a ScriptableObject of typed design tokens (colors, numbers, fonts) organized into modes (e.g. Light, Dark, Brand). Tokens can be aliases that resolve to core tokens, so you change primary in one place and everything that references it follows.

csharpusing Forge.Theming;

FgTheme.SetTheme(myThemeAsset, "Light");
FgTheme.SetMode("Dark");          // every binder recolors instantly
FgTheme.ModeChanged += m => Debug.Log($"now in {m}");

Bind any property to a token with FgThemeBinder — targets include a graphic's color, an FgShape stroke color or corner radius, and a text's color or font size. Forge UI's own components are all token-bound, which is why a single SetMode call re-themes the entire screen.

🌐 Localization & RTL

Provider-agnostic translation with automatic right-to-left mirroring. Forge.Localization.

FgLocalization is a small controller backed by a pluggable IFgLocalizationProvider. The built-in FgDictionaryProvider works with zero external packages; bridges to Unity Localization and I2 are available behind version-defines.

csharpusing Forge.Localization;

var provider = new FgDictionaryProvider();
provider.Add("en", "greeting", "Hello");
provider.Add("ar", "greeting", "مرحبا");
provider.SetRightToLeft("ar");

FgLocalization.SetProvider(provider, "en");
FgLocalization.SetLanguage("ar");   // fires LanguageChanged

Put FgLocalizedText on a TMP label to bind it to a key (it also sets TMP's isRightToLeftText), and FgRtlFlex on an FgFlexLayout to mirror row alignment for RTL languages.

♿ Accessibility

Keyboard & gamepad focus navigation plus screen-reader semantics. Forge.A11y.

🤖 AI / MCP Generation

A structured tool layer that lets an AI agent build & edit Forge UI screens. Forge.Mcp.

FgMcpTools exposes Forge UI's authoring surface as a set of discrete, structured operations — the same operations the Canvas uses — so an agent can compose a screen from a description and then read it back to self-correct:

ToolPurpose
ListComponents()The component kinds available to place.
ListTokenCollections()Available theme modes.
SetThemeMode(mode)Switch the active mode.
ApplyLayout(target, …)Flex direction / gap / alignment on a container.
AddInteraction(target, …)Wire a trigger → action.
GenerateUi(json) / CreateScreen(spec)Compose a whole screen from a JSON spec.
ReadSceneUi()Text summary of the open scene's Forge UI (for self-correction).
ⓘ
Status. The FgMcpTools tool layer and an FgMcpServer JSON-RPC dispatcher are complete and testable today. Wiring them to an external MCP client over a stdio transport is on the roadmap — the tool surface is ready for it.

🎬 Demo & Studio

See — and tweak — every feature live.

Guided demo

Tools → Forge → Build Demo Scene generates a guided, sidebar-navigated tour of 49 interactive sections — shapes, gradients, shadows, filters, glass, soft masks, text effects, theming, localization, layout, every component, animation, lists of 10,000 rows, data binding and more. The content is generated at runtime, so it builds to a tiny, fast WebGL player; every page is hands-on (drag, type, tweak sliders).

Forge Studio

Tools → Forge → Build Studio Scene builds Forge Studio — an in-play visual design playground that ships inside your build: a tool palette, a center artboard, and a right-hand inspector. Add shapes and components, select and drag them, resize via corner handles, edit fill / corner-radius / stroke live, duplicate, delete, and toggle Dark mode. It's built from the same factories your game uses.

Kitchen-sink sample

Tools → Forge → Build Kitchen-Sink Demo creates Assets/Forge/Samples/ForgeKitchenSink.unity — a dense single-scene showcase of shapes, gradients, morph, glass, shadows, tabs and dropdowns.

🏗 Architecture

One assembly per module under the Forge.* namespace; Runtime never references Editor.

Forge UI is split into independent modules, each with its own assembly definition. Runtime assemblies never depend on editor assemblies, so everything compiles into player builds cleanly. All public types use the Fg prefix.

ModuleAssembly / namespaceHighlights
CoreForge.CoreFgSettings, FgMath (easing), shared utilities.
B · ShapesForge.ShapesFgShape + Forge/Shape shader, 8 SDF primitives.
C · EffectsForge.EffectsFgRtShadow, FgFilter, FgGlass, FgSoftMask, FgParticles.
D · ThemingForge.ThemingFgThemeAsset, FgTheme, FgThemeBinder.
E · InteractionsForge.InteractionsFgTween, FgSequence, FgVariant, FgInteraction, FgScreenStack.
F · ComponentsForge.ComponentsFgComponents factory, FgListView.
G · LayoutForge.LayoutFgFlexLayout, masonry, radial/curve, scroll-snap.
H · TextForge.TextFgTextEffects, FgTextAnimator.
I · CanvasForge.Canvas.EditorForgeCanvasWindow design surface.
J · MCPForge.Mcp.EditorFgMcpTools, FgMcpServer.
K · LocalizationForge.LocalizationFgLocalization, FgLocalizedText, FgRtlFlex.
A11yForge.A11yFgFocusNav, FgAccessibleNode.
DataForge.DataFgObservable, FgObservableList, FgBind.

Shaders

Forge/Shape, Forge/UIFilter, Forge/RtShadow, Forge/Glass, Forge/KawaseBlur.

✅ Requirements & Compatibility

What Forge UI needs, what it integrates with, and what's honestly out of scope.

Required

Optional integrations

Scope & honest limits

⚠

URP only, today. The shaders are written in pipeline-agnostic CG and are likely close on Built-in/HDRP, but only URP is verified — treat other pipelines as unsupported for now.

Glass uses a camera-driven controller, not a URP Render Feature (a feature-grab variant is planned). Soft mask ships a single global analytic/texture mask; deep 4-level hierarchical nesting is not implemented. The MCP stdio transport is not yet wired (the tool layer is).

Forge UI contains no third-party code — every technique (IQ-style 2D SDFs, Kawase blur) is reimplemented from public math. See Assets/Forge/THIRD-PARTY-NOTICES.txt.

💡 Troubleshooting

The handful of things that trip people up.

Shapes render as flat magenta / pink rectangles

That's the Unity "shader error / missing shader" color, and it almost always means the project isn't on URP, or shaders weren't included in a build. Switch the active pipeline to Universal Render Pipeline, and make sure the Forge/* shaders are in Project Settings → Graphics → Always Included Shaders for player builds.

A shape with a fully transparent fill disappears

UGUI's cullTransparentMesh drops meshes whose vertex alpha is 0, so a shape that's "stroke only" with color.a == 0 won't draw its stroke. Use a tiny non-zero alpha (Forge UI uses 0.0039, i.e. 1/255) on transparent hit-areas and stroke-only shapes.

Putting FgFilter on an FgShape removes the shape

FgFilter swaps the graphic's material to Forge/UIFilter, which replaces the Forge/Shape SDF material. Apply filters to a plain Image or TMP_Text. To filter a shape, render the shape and filter it on a separate graphic above it.

A component looks wrong / colorless right after I create it

A driver's OnEnable runs at AddComponent, before the factory has wired its references. Forge UI's factories handle this by calling Apply() / Rebuild() / Select(…) at the end of construction. If you build custom components, do the same, and have setters snap immediately when !Application.isPlaying.

Components don't switch to Dark mode

Make sure an FgThemeAsset is active (FgTheme.SetTheme) and that the mode name you pass to FgTheme.SetMode exists in the asset. Forge UI's own components are token-bound and recolor automatically; custom graphics need an FgThemeBinder (or to resolve colors via FgTheme.TryColor and subscribe to FgTheme.ModeChanged).

❓ FAQ

Quick answers.

Is Forge UI a design-file importer?

No. Forge UI is a UGUI design & build toolkit — you create UI in code, on the Design Canvas, or through the AI layer. It doesn't import external design files.

Does it use sprites or atlases?

No. Shapes, strokes, gradients, shadows and masks are rendered analytically on the GPU, so they're crisp at any resolution and there's nothing to bake. You can still use sprites as a fill if you want.

Will dozens of shapes wreck my draw calls?

No — plain shapes share one material and batch. A per-instance material is created only when a shape needs a unique uniform (a gradient, fill-amount, or pattern).

Is it UGUI or UI Toolkit?

UGUI (Canvas-based), with TextMeshPro for text.

Can I use just one module?

Yes. Modules are separate assemblies — reference only the ones you need (e.g. just Forge.Shapes + Forge.Effects for visuals). Many features sit behind FgSettings flags too.

Does the AI generation need an internet connection or account?

The FgMcpTools layer is local Unity-editor code with no backend. Connecting it to an AI agent is done through the MCP protocol; the stdio transport wiring is on the roadmap.

📬 Support

Questions, bugs and feature requests are welcome.

📧 Email

Reach out at ragendom@gmail.com. Include your Unity version, render pipeline, and a short repro — it gets you a faster answer.

🔗 More from Ragendom

Browse other tools and templates on the Unity Asset Store, or see all projects at ragendom69.github.io.

Forge UI · an all-in-one UGUI design & build toolkit for Unity 6 / URP. Namespace Forge.*, type prefix Fg.