Tier 2 · Visual effects
VFX with AllIn1
Build stylized VFX with the AllIn1 toolkit (paid asset).
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 withmulti_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 baseAllIn1Vfx/BuiltIn/GrabPassshaders are CGPROGRAM Built-In-RP — magenta under URP. AllIn1VfxURPships inImportUrpPackage.unitypackage, NOT in the base import — a fresh install renders every demo material magenta in URP until that package is imported.- The
AllIn1VfxComponentis authoring-only (fully#if UNITY_EDITOR); saved materials work standalone — never ship the component. It can only createAllIn1Vfx/AllIn1VfxURPmaterials: 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. All1VfxRandomTimeSeeduses 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; runtimeEnableKeywordon 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_FadeAmountover the burst), alpha-out only in the last beat. - AllIn1 fire material skeleton (from the shipped demo set): MainTex
FireEmbers/Fire21/FlameTrail*, maskGlow, shape2Noise8/Noise105, distortNoise9, normalDistortionRing6, rampGradient2; 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.