Unity Workflow LibraryUWLAbout

Topic 10 · Rendering & VFX

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.