---
title: "VFX with AllIn1"
slug: /workflows/vfx-allin1/
markdown: /workflows/vfx-allin1.md
section: art-audio-animation
tier: 2
summary: "Build stylized VFX with the AllIn1 toolkit (paid asset)."
sources: ['vfx-allin1.md']
canonical: https://unityworkflowlibrary.dev/workflows/vfx-allin1/
read_first: /read-first.md
---

> Read first, on every prompt: [non-destructive rules](/read-first.md).

# VFX with AllIn1

> Build stylized VFX with the AllIn1 toolkit (paid asset).

Cross-project knowledge for building game VFX with Seaside Studios' AllIn1VfxToolkit, especially
under URP + DOTS/Entities Graphics. Keep project-specific integration notes in your own project docs.

## Shader variant selection (HARD)

- **Entities Graphics / BatchRendererGroup → `AllIn1Vfx/AllIn1VfxDOTS`** — the only variant with
  `multi_compile _ DOTS_INSTANCING_ON` (+ target 4.5). Feature-identical to SRPBatch; both are the
  only SRP-Batcher-compatible variants (real UnityPerMaterial CBUFFER).
- Plain URP GameObjects → `AllIn1VfxURP`. The base `AllIn1Vfx`/`BuiltIn`/`GrabPass` shaders are
  CGPROGRAM Built-In-RP — magenta under URP.
- **`AllIn1VfxURP` ships in `ImportUrpPackage.unitypackage`, NOT in the base import** — a fresh
  install renders every demo material magenta in URP until that package is imported.
- The `AllIn1VfxComponent` is authoring-only (fully `#if UNITY_EDITOR`); saved materials work
  standalone — never ship the component. It can only create `AllIn1Vfx`/`AllIn1VfxURP` materials:
  for DOTS, author normally then switch the shader dropdown to AllIn1VfxDOTS (identical property
  block, values survive). The bulk "auto-setup materials to pipeline" tool silently converts DOTS
  materials back to URP — never run it over your own material folders.
- `All1VfxRandomTimeSeed` uses a MaterialPropertyBlock → breaks SRP batching/instancing — don't.
- **No billboard feature exists in the shader** (verified: zero hits toolkit-wide) — billboard via
  ParticleSystem render mode, or build from 3D meshes (spheres/cones/rings ship in
  `Demo & Assets/Meshes/`) that read correctly from the game's camera pitch.
- Keywords are `shader_feature_local` — variants compile from build-time materials only; runtime
  `EnableKeyword` on a keyword no asset material uses = missing variant in builds.
- Depth/scene-color features (`SOFTPART`, `DEPTHGLOW`, `SCREENDISTORTION`) need URP Depth/Opaque
  Texture and cost mobile bandwidth — keep them off gameplay-density VFX.
- **DOTS shader floats/vectors are per-entity instanceable** — an Entities Graphics
  `[MaterialProperty("_FadeAmount")]` override component animates dissolve/alpha per instance with
  zero material clones (textures are NOT instanceable — declared global).

## Layered stylized effect recipe (from dissecting anime-style packs)

- An effect is a STACK of cheap layers, not one rich one: nested soft additive glows + a shaped
  body (flipbook or scrolled+eroded texture) + accents (stars/rings/spikes) + rare alpha-blended
  smoke. Reference bolt = 3 nested stretched additive quads; reference fire = 2 glows + flame +
  sparks.
- **Brightness for bloom is STACKED LDR additive, not HDR colors** — 5-8 One/One layers summing
  past a 1.0 bloom threshold beat one HDR×8 quad for control and cost.
- Additive layers need no sorting (order-independent); default render queues everywhere, blend
  mode does the layering. Alpha-blend only for smoke/soft rings.
- The anime read comes from: hard smoothstep alpha edges; 2-3 tone white→yellow→orange→deep-red
  over ~0.5s; 1-frame flash pops staggered in 0.05s beats; near-instant scale-in; SHAPE and
  EROSION textures scrolling at DIFFERENT speeds (the licking-flame feel); mesh layers
  (cones/rings/planes) with offset pivots for whooshes emanating outward.
- Explosions are never a linear scale-up ("90s effect"): violent front-loaded pop (easeOutQuart),
  then layers ERODE away via noise dissolve with a glowing burn edge (`FADE_ON`+`FADEBURN_ON`,
  drive `_FadeAmount` over the burst), alpha-out only in the last beat.
- AllIn1 fire material skeleton (from the shipped demo set): MainTex `FireEmbers`/`Fire21`/
  `FlameTrail*`, mask `Glow`, shape2 `Noise8`/`Noise105`, distort `Noise9`, normal
  `DistortionRing6`, ramp `Gradient2`; keywords COLORGRADING + SHAPE1DISTORT (+ GLOW/RIM for
  heads, FADE for trails/erosion, VERTOFFSET for boiling surfaces, ALPHACUTOFF to cut overdraw).

## Hybrid VFX paths — energy + solid-form gen + pooled bursts (HARD)

Do not treat AllIn1 as the only authoring tool. Pick by **what the cost scales with**:

| Path | Vehicle | Scales with | Use |
| --- | --- | --- | --- |
| **A — Layered energy** | AllIn1 mats on toolkit/custom meshes → GPU-instanced / BRG entities | Unit / projectile count | Fireballs, orbs, trails, auras that fly with many actors |
| **B — Solid-form core** | AI mesh gen (Meshy/Tripo/etc.) as **one** mesh layer + 1–3 AllIn1 additive shells on the same prefab | Same as A | Race/hero signature projectiles, crystal bolts, spore pods, rune discs — anything that must silhouette as a physical object |
| **C — Pooled bursts** | Stripped ParticleSystem prefabs from quality packs (Polygon Particles, vendor demos) via event → pool | Event rate (hits/casts), hard-capped | Impacts, thunder strikes, heals, ground AoE |

Rules that transfer across games:

- **VFX-SOLID-FORM-GEN** — generative 3D is for the **solid core / prop**, not the whole effect.
  A bare PBR/Simple Lit mesh at gameplay camera distance reads as a prop dump, not magic. Always
  wrap with stacked LDR additive energy layers (path A grammar). Generate **one subject**, no
  hand/character/ground; low poly (≈1k–4k for projectiles); pivot at flight center (or tip for
  arrows). Follow the project's modelgen pipeline for keys, free-retry, multi-object, provenance.
- **Never put ParticleSystems on high-count fliers** — path C only for event-rate FX. Uncapped
  per-unit PS is a mobile killer; pools + caps are the default.
- **Quality packs are structure references, not shader sources** — copy layer count, timing
  stagger, and silhouette language from Polygon/anime packs; re-author materials in the project's
  legal shader (AllIn1 DOTS / URP). Do not ship Built-In vendor shaders under URP.
- **VFX-VENDOR-DERIVE** — modifying existing **URP-native** pack prefabs (e.g. Gabriel Aguiar /
  Polygon / project demos) is a first-class path. **Never edit vendor folders in place** —
  duplicate into the game's own VFX tree, recolor/retune/strip lights & scripts, wire pools only
  to the derivative. Prefer URP-native packs over Built-In store dumps. Live ParticleSystems /
  VFX Graph stay on **event-rate pools**; high-count fliers = mesh layers + project DOTS VFX shader.
- **VFX-VENDOR-BIRP-REMAP** — if a pack is Built-In (`*_BIRP` / surface CGPROGRAM), do not bulk-
  adopt it: either drop the pack or remat derivatives to URP Particles / project VFX URP. Prefer
  replacing the library with a URP pack when available (a mobile strategy game: Vefects removed in favor of
  Gabriel URP).
- **VFX-MOBILE-DEFAULT + PC ceiling** — one stack, two ceilings. **Defaults = mobile-safe**
  (strip lights/distortion on density FX, lite variants, tight steal-oldest caps). **PC / High**
  raises the same pools (higher concurrent caps, full variants, optional short hero lights) —
  never unlimited and never a second VFX architecture. VFX Graph / rich packs = event-rate only
  on both platforms. Never land “desktop pretty only” or “mobile forever with no PC raise path.”
- **Anti-90s** — one mesh + linear scale/dissolve fails the look bar. Require changing silhouettes,
  staggered beats, dual scroll rates (shape vs erosion), and a match-camera accept gate.
- **Developer eye is the look gate** — compile-clean materials / generated GLBs are not proof.
