aura_demo.mp4
Animated aura blob shader for Unity UI Toolkit (URP). Renders a living, iridescent blob with inner layers, edge glow, and star particles — designed to sit behind UI cards as a relationship/status indicator.
Renders via Graphics.Blit into a RenderTexture used as a background-image on a UIToolkit VisualElement.
Key properties
| Property | Description | Range |
|---|---|---|
_BaseHue |
Primary color hue | 0–1 |
_IridShift |
Iridescence spread from base hue | 0–1 |
_Saturation / _Brightness |
Color intensity | — |
_BlobPadding |
Inset of blob edge from RT bounds | 0–0.45 |
_CornerRadius |
Roundness of blob shape | 0–0.5 |
_EdgeAmp / _EdgeFreq |
Organic wobble amplitude and frequency | — |
_EdgeGlow |
Outer glow intensity | 0–1 |
_Speed / _IridSpeed |
Animation speeds | 0–3 |
_LayerCount |
Number of inner concentric layers | 0–6 |
_LayerVisibility |
Opacity of inner layers | 0–0.4 |
_StarDensity / _StarBrightness |
Particle field density and brightness | — |
_InnerCut |
Cuts a hole in the center (1 = full blob, 0 = ring) | 0–1 |
_AspectRatio |
Must be set to width / height each frame |
Float |
_Alpha |
Overall opacity multiplier — used for layer blending | 0–1 |
AuraCard : VisualElement — wraps the shader lifecycle. Drop into a UXML or create in code.
var card = new AuraCard();
card.AddToClassList("ac-aura-card");
container.Add(card);
card.Initialize(auraMaterial, blobPadding: 0.12f);
card.SetGlow(primaryColor, secondaryColor, intensity: 0.6f);
card.SetLayerAlpha(0.8f);Initialize copies the material, sets shader defaults, and starts the 16ms blit loop on GeometryChangedEvent. The RT is re-created automatically when the element is resized. Scale is 3× CSS size with antiAliasing = 4 for sharp rendering.
AuraCustomizerController + AuraCustomizerUI.uxml — interactive demo scene.
- Up to 4 stacked layers, each with independent color and intensity
- Each layer gets a different
_BlobPadding(0.14 → 0.05) so they nest visually - 12 color presets, per-layer intensity slider, scrollable controls panel
- Assign
AuraMaterial(usingCustom/AuraBlob) toAuraCustomizerControllerin the Inspector - The
UIDocumenton the same GameObject should referenceAuraCustomizerUI.uxml - Hit Play — first layer initializes automatically