ShipVFX · Documentation · v1.9.2

Everything you need to evaluate ShipVFX and get your first ship lit.

These docs cover requirements, install, the no-code quick start, the twelve visual systems, configuration and the runtime API basics. The complete per-parameter reference, shader internals and advanced recipes ship as offline docs inside the pack (README, QuickStart, Manual, API, Changelog).

Overview

ShipVFX is a no-code, data-driven ship-FX framework for Unity 6 / URP - a complete authoring tool, not a particle pack. You author a ship's entire look in a live Configurator with a fly-around preview; everything is stored in one ShipVisualConfig asset and rebuilt identically in player builds. No particle systems, no per-ship prefab wiring, no VFX specialist required.

12visual systems11URP shaders76automated tests~0textures needed

Two tiers of docs. This site covers the essentials so you can evaluate and get running. The full advanced reference (every parameter, shader internals, advanced workflows) is delivered inside the pack as offline documentation.

Requirements

  • Unity 6 (6000.x - developed and tested on 6000.4).
  • Universal Render Pipeline (URP) - ShipVFX is URP-only. Built-in RP and HDRP are not supported.
  • Bloom is strongly recommended - the HDR plumes are designed to glow. The pack includes a one-click Recommended Grade (Bloom + tonemap) so this is never a manual setup.
  • Scales mobile through desktop - cheap additive defaults everywhere; the heavy Powerhouse tiers (reactor trail, volumetric smoke, heat-haze) are opt-in for desktop/console.
  • No third-party packages, no DLLs - full C# source in clean assemblies (runtime / editor / tests).

Installation

  1. Buy ShipVFX and import it into a URP project - it lives under Assets/ShipVFX.
  2. Confirm a URP asset is assigned under Project Settings → Graphics.
  3. Open the bundled showcase - Tools → ShipVFX → Open Showcase Scene - and press Play to confirm everything renders.
  4. If the FX look flat or dull, run Tools → ShipVFX → Add Recommended Grade to Scene (one click, adds Bloom + tonemapping; one-click revert too).
Everything lives under one menu
Tools ▸ ShipVFX ▸ Configurator            - the authoring tool
Tools ▸ ShipVFX ▸ Open Showcase Scene     - the press-Play demo
Tools ▸ ShipVFX ▸ Add Recommended Grade   - Bloom + tonemap, one click

Upgrading from an earlier version? Delete Assets/ShipVFX first, then import fresh. Your own configs are safe - they live outside the package folder (Assets/ShipVFXConfigs by default). Coming from 1.8.0 or earlier, also delete Assets/ShipVFXConfigs/Types: the 12 bundled presets moved inside the package, and the old copies would otherwise keep them pinned at the old path. Delete only that Types subfolder - move any custom types of your own out of it first.

Quick start ~3 min · no code

Open Tools → ShipVFX → Configurator. It starts in Beginner mode - a guided 7-step wizard that takes you from an empty config to a flying, styled ship:

  1. Config - create a fresh ShipVisualConfig asset (or pick one); it saves outside the package folder, so updates never clobber it.
  2. Ship - drop in your FBX or prefab; the FX auto-fit to the model's size. Then set the forward axis so the nose runs along travel - quick nose-nudge buttons (or Orient ship from markers) handle the usual import cases. Models rarely face +Z, and skipping this flies the ship sideways.
  3. Engines - + Add drops a socket (one thruster: plume + trail) on the rear hull; select it and place it with Unity's own Move tool. Scaling a socket resizes that whole engine, and its plume/trail/nozzle toggles live right here.
  4. Lights - opt in to nav blinkers, window glow, the engine-cluster light, a rotating beacon, an LED ribbon and custom light sockets, with a live light-budget hint.
  5. Size - an FX Scale master slider plus Auto-fit (re-measures the model bounds) scale every effect proportionally to your hull.
  6. Style - pick a shape, a thruster type and a colour theme. Your sockets, scale and orientation are always preserved.
  7. Fly - ▶ Enter Live Preview: an isolated bloom scene where you fly the ship, watch the trails bend, tweak anything live, then Save to Config Asset.

To wire it into your game: Add Component → ShipVFX → Ship VFX Binder on the ship, assign the config (or a ShipVFXLibrary + name key), press Play. The binder uses no editor code - it works identically in builds.

Everything above is editor + data. Advanced mode (one click, top-right) exposes all ~300 parameters when you want to go deeper.

The twelve visual systems

One config drives all of them. Each can be toggled and tuned independently - and every one responds to the ship's gameplay state.

01
PlumesVolumetric thruster cones - outer, inner core and nozzle ignition flame. 10 cross-section shapes × 6 patterns × 6 motion modes.
02
TrailsDual-layer motion trails that boil on per-vertex noise and bend through turns.
03
ReactorThe Powerhouse trail tier - flowing plasma, fresnel edges, containment rings.
04
SparksHot ember flecks streaming off the exhaust. Hard-capped, off by default.
05
SmokeVapor or alpha-blended exhaust puffs - Mobile and Powerhouse (curl-noise) tiers.
06
DistortionOpt-in heat-haze refraction around the plume. Desktop/console territory.
07
Nav lightsPort / starboard blinkers on the real maritime convention - 5 blink patterns.
08
BeaconRotating warning fixture - LED columns or a lighthouse beam sweep.
09
LED ribbonBendable light-bars and swept 3D tubes - KITT scanner, flow, strobe modes.
10
Window glowA warm "lights are on inside" cabin light that follows your window sockets.
11
Point lightsEngine-cluster glow plus unlimited custom light sockets, chase-phase capable.
12
Hull glowEmissive hull accent - a slow Pulse breathe or a scrolling Flow energy band.

Configuration & presets

A ShipVisualConfig is a ScriptableObject - the single source of truth for a ship. Every one of its ~300 parameters carries a plain-language tooltip, and the Configurator mirrors whatever you hover in an always-visible help bar.

  • 12 named preset looks - complete visual stacks (Shock-Diamond Jet, Ion Propulsion, Violet Warp Drive, …). They're styled starting points tuned on our own hulls: colours and motion travel anywhere; sizes may want a pass on your ship - applying a preset deliberately preserves your sockets, scale and orientation, so re-tuning is non-destructive.
  • 8 one-click colour themes + any custom colour - recolours every thruster visual coherently while nav lights stay functional (port stays red) and smoke stays neutral. The colour's alpha is a strength knob.
  • 5 per-state profiles - Idle, Selected, Moving, ReturningHome, MiningReady each carry their own intensity, trail, blink-rate and particle settings.
  • JSON export / import - move a complete look between projects, diff configs, keep backups.

Field-by-field reference and advanced recipes are in the in-pack offline docs.

Runtime API build-safe

ShipVFX is built for game state, not just looks. The runtime resolves configs by name with no AssetDatabase, so the editor preview and the shipped build render identically. Drive it from any script:

C# · driving FX from gameplay
using ShipVFX;

var ctrl = GetComponent<ShipVFXBinder>().Controller;

// Idle / Selected / Moving / ReturningHome / MiningReady
ctrl.SetState(ShipVisualState.Moving);

ctrl.SetThrottle(0.8f);   // 0..1 engine power
ctrl.SetBoost(true);      // afterburner multiplier
ctrl.SetWarp(0.5f);       // 0..1 warp charge
ctrl.SetDamage(0.3f);     // misfires as damage rises
ctrl.SetThrustVector(new Vector2(p, y));   // visual gimbal

Events (OnStateChanged, OnFxRebuilt), the optional engine-audio module and the full surface are documented in the in-pack API.md.

Performance

  • Procedural-first: no shipped FX meshes or texture atlases - the default FX need ~0 textures and a tiny footprint, with animation computed in-shader from _Time. A handful of optional hero plume textures ship for an ultra look.
  • Hard budgets by design: sparks cap at 32 particles per engine; mobile smoke at 24; collision, shadows and sub-emitters are force-disabled on all particles.
  • Quality tiers: mobile-safe additive defaults everywhere; Powerhouse tiers (reactor trail, 256-particle curl-noise smoke, heat-haze distortion) are explicit opt-ins for desktop/console.
  • Light budget guidance: defaults are tuned to URP's ~4 pixel-lights-per-object mobile guideline, with a live light tally in the Configurator and a zero-cost hull-emission alternative when you're at the limit.
  • Ship-size auto-scaling: light ranges and intensities derive from the measured hull, so one config reads correctly at any scale - no per-ship re-tuning.
  • 77 automated tests guard the math and the build path, so updates stay build-safe.

Measured, not promised. These numbers come from the automated 17-scenario benchmark we run on the framework - ships flying at full throttle and filling the screen, on our own 35k-triangle test hull (reports dated 2026-07-18):

  • Desktop (RTX 3090, 1080p): one fully dressed Mobile-tier ship adds about 0.2 ms; a fleet of 8 full ships renders at 460 fps with every effect on screen (314 fps with the Powerhouse tier on all eight). Each figure is the median of a 3-pass run on a working machine we do not quiet first, so it is a floor, not a ceiling. Soak testing with live state cycling and FX rebuilds: flat memory, zero errors.
  • Mobile (OnePlus 5T, a 2017 phone, GLES3): the Mobile tier holds a locked 60 fps - one ship in close-up and the 8-ship fleet alike. That is the panel's ceiling rather than the package's, because the handset pins at 60 Hz in almost every scenario. The Powerhouse tier still runs (fleet at 55 fps, measured with the beacon and the ribbon both on) but stays a desktop opt-in by design. Same soak verdict: flat memory, zero errors, no thermal decay.
  • The trails cost effectively nothing: the plasma trail system animates entirely in the vertex shader - measured at 0.0 ms on the 2017 phone and within noise on desktop.
  • The one honest mobile cost: exotic distortion (+1.1 ms on the 5T) - which is exactly why it ships desktop-gated.

Your hulls, scene and target hardware shift the totals; the framework's own overhead is the part we control and re-measure per release. The test hull is our own asset and not part of the package. Full cross-device tables and the complete method live on the Benchmarks page.

License

ShipVFX is sold through the Unity Asset Store and governed by the standard Asset Store End User License Agreement: use it in your own Unity projects - personal or commercial - and ship it compiled inside your finished game or application. Redistributing or reselling the source assets as an asset, template or competing package is not permitted. Full C# source is included.

The ship models and scenes shown on this site and in the interactive demo are our own demonstration assets - they are not part of the package. ShipVFX delivers the VFX and lighting systems, which attach to your own models.

One exception, and it is disclosed deliberately: the package bundles a single AI-generated demo hull, with a finished rig for it, so the Configurator has something to demonstrate on the moment you import it and you can fly a complete ship from one config. It is a test fixture, not content - no modelling or art pass has been done to it, so expect generator artefacts and unoptimised topology, and do not read it as a sample of ShipVFX quality. It carries no separate licence - the standard EULA covers it like everything else - but as raw generator output it is a poor choice for anything you ship, which is a quality warning rather than a restriction. It is the only model in the package, nothing else depends on it, and deleting its folder breaks nothing.

Changelog

  • 1.9.22026-08-23 - Setting a ship’s nose direction is now one click. Nose axis and Top axis each offer six buttons (+X -X +Y -Y +Z -Z) that write an exact multiple of 90 degrees, because almost every model has its nose along one of its own cardinal axes - and aiming two markers across a 3D view could not reliably land on one. Every ship rigged during development carried the drift that left: 90.005, 270.72, 268.52, all trying to be a right angle, and a nose 1.5 degrees out flies visibly crooked. For hulls that genuinely are not axis-aligned, Pick on hull places a marker exactly where you click on the model, and dragging a marker is now magnetic - it rides the hull and orbits it instead of drifting off into space. Fixed: typing a nose alignment by hand was silently reverted, because the markers drove the rotation and nothing drove the markers; marker placement bent a diagonal direction toward the long axis on a longitudinal hull, so the orientation read back was not the one set; and a generated effect dragged in the Hierarchy lost its position - it looked like it worked, then snapped back on the next rebuild, which duplicating a socket triggers, so both lights appeared to reset. On a custom point light or a nav light - the two sockets that own a single generated light by design - the drag is now adopted by the socket and sticks. Engines, beacons and ribbons are left alone, because an offset there may be deliberate. Duplicating a socket also selects the copy, which lands exactly on the original.
  • 1.9.12026-08-21 - The optional engine-audio module now reacts to the whole runtime, not just the throttle. Damage is audible: misfiring engines duck the volume and sag the pitch in step with the flames, riding the same signal the engine cluster light follows, so a cut-out is heard on the frame it is seen. Boost and warp get their own volume and pitch offsets on top of the throttle curve - previously all three collapsed into one intensity value, so an afterburner could only ever sound like more throttle. Warp offsets scale with the charge, which is what makes a spool-up possible, and boost has its own fade so it does not snap. Fixed: the Configurator’s Live Preview was silent and could never have played a sound - it built its scene without an AudioListener, and Unity plays nothing at all without one, with no error; the showcase scene had the same defect; the audio module never worked on a prefab, which is the only place it can usefully live; the package did not compile at all for anyone without the Test Framework package installed; five types sat in the global namespace where they could collide with a buyer’s own classes; and four bundled presets carried values tuned to one specific ship - Thermal Thruster’s path trace was 13x the default width, Afterburner and Crimson Core shared the same stray width, and Jade Shock Pulse held an engine light intensity above its own slider.
  • 1.9.02026-08-04 - Per-ribbon LED shapes: each ribbon socket can carry its own path - points, out-of-plane heights, open or closed, corner rounding, strip width and volume - instead of every ribbon on a ship sharing one. Select a ribbon in the Hierarchy or Scene view to edit it alone, or select none to edit the shape they all share; a ribbon only diverges once you touch it, and Reset to shared drops it back. Colour, intensity, mode, flow and cast-lights stay ship-wide so the LEDs still read as one system, and configs authored before this are untouched. The pack is also a single folder now - the 12 bundled presets moved into Assets/ShipVFX/Presets/Types, so importing writes to Assets/ShipVFX and nowhere else. Fixed: the Live Preview backdrop vanished on any ship bigger than a fighter (the Scene view’s pinned far plane was a constant while the sky is sized to the ship), and zoom-out is now capped at the hex map so the framing is the same on every asset; the Front and Top orientation markers could not be dragged because they spawned on the ship pivot, under Unity’s own move gizmo; selecting a bundled preset in the Project window silently made it the Configurator’s working config; and the Scene-view Edit path tool always edited the first ribbon.
  • 1.8.02026-07-18 - Presets now scope which elements they govern: applying a thruster type rewrites only what the preset authored and leaves everything else (beacon, ribbon, lights, windows, hull) alone, preserving their values so ticking one back on restores your own look instead of the preset version. Ribbon looks revived on the four presets that authored one. Fixed: the beacon and ribbon enable switches did nothing in the Configurator, the bundled presets silently disabled ribbons, a preset could overwrite socket placement, and four inspector sections rendered in the wrong order.
  • 1.7.02026-07-17 - Live throttle response - an authorable curve maps engine power to plume length, width and brightness (warp stretches past full) - plus per-look beacon and LED-ribbon on/off switches. Performance: every per-frame FX deformation moves to the vertex shader (trail churn 4.85ms→0.06ms per ship; plume/nozzle flicker + bend ride the same path), visuals verified identical A/B - nothing animates on the CPU anymore. First measured cross-device benchmarks published: RTX 3090 8-ship fleet 141 fps, 2017 OnePlus 5T Mobile tier locked ~60 (that desktop pass was taken before this release’s own trail fix landed; re-measured on 2026-07-18 the same fleet runs 460 fps - see Performance above). Plus ribbon cast-lights recalibrated to genuinely light the hull, and per-ship misfire de-syncing.
  • 1.6.02026-07-11 - Misfire realism pass: organic, feathered failure gaps that punch through every flame layer at the same world spot, event min/max duration knobs, a low-flame frenzy knob (a near-dead engine sputters faster and deeper), and a real events-per-minute rate with the computed rate shown live in the Configurator.
  • 1.5.02026-07-10 - The exhaust now reads engine power: SetBoost grows flames and trails (synced or manual length/width), the engine aperture drives flame length live from throttle/warp/damage (warp stretches past full), and SetDamage becomes a real misfire system - random per-engine shutdowns and partial-length flickers with rate, shutdown-chance and stutter-speed knobs.
  • 1.4.02026-07-09 - Showcase background styles (sky sphere, flat image, gradient or solid - built for web embeds), a "Graded look" toggle so the edit preview renders with the recommended bloom + tonemap, instant NaN-guarded camera framing, Scene-view clip self-heal, and a continuously animating, state-accurate edit preview.
  • 1.3.02026-06-28 - Lights scale with ship size, LED ribbons become real swept 3D tubes, full-visual colour theming (alpha = strength), plume/nozzle gradients, the 12 named presets, synchronized lights.
  • 1.2.02026-06-14 - HDR-emissive plumes, engine smoke (Mobile/Powerhouse), trail geometry, per-engine plume aim, rebuilt Beginner wizard, one-click Recommended Grade.
  • 1.1.12026-06-12 - Upgrade-safety release: build shader self-repair, showcase orientation and bloom fixes, config JSON export/import.
  • 1.1.02026-06-11 - The big feature wave: dual-mode Configurator with Live Preview, thruster types, custom shapes, sparks, distortion, hex-grid 4X demo, space backdrop.
  • 1.0.02026-06-07 - Initial release: config-driven plumes, trails and lights, runtime gameplay API, build-safe binder + library, Configurator window.

Lifetime updates - new versions land here and in your asset library.

Couldn't find what you need?