tags: [vr-ar]
Creating visual effects and particle systems for VR graphics
Particle System in VR is a spatial object inches from user's face. An explosion that looks effective on screen in normal game can fill entire view in VR and cause discomfort. Fire burning "too flat" due to billboard particles is immediately noticeable in stereo — billboards always face camera, and in stereo this is visible.
Working with VFX in VR is first understanding performance budget and perception limitations, then artistic approach.
Overdraw: main enemy of VFX in VR
Particle System with Render Mode = Billboard and semi-transparent material is classic overdraw source. Each particle overlaps others several times. 200 particles with 50% overlap — actually 300+ pixel operations per covered pixel.
In RenderDoc Overdraw Heatmap fire particle system with three layers (main flame, smoke, embers) easily shows 8–12x overdraw at center. With 8.3 ms budget per frame (120 Hz Quest) unacceptable.
Solution: reduce particle count and increase each size. Fewer objects with large texture atlases instead of many small particles. 4×4 atlas with different smoke shapes — one particle "twitches" through atlas, imitating animation, instead of 16 separate particles.
Second approach — use VFX Graph instead of Particle System. VFX Graph runs on GPU (Compute Shader), and particles create no CPU overhead. For complex effects with thousands of particles VFX Graph on Quest 3 runs noticeably faster. But requires URP and Unity 2022+ with Compute support on Android — not all devices support it.
Billboard particles in stereo and Mesh Particles
Billboards in VR are known problem. Particle-billboard always perpendicular to view vector. Mono mode this works. In stereo left and right eyes look at different angles — billboard simultaneously correctly oriented for only one. Difference small (~6 cm interpupillary distance), but for close effects (water spray, sparks near hands) this creates noticeable "flat" feel.
For close VFX prefer Mesh Particles: 3D geometries instead of flat sprites. Spark is small stretched octahedron. Water drop is deformed sphere. Flying debris is arbitrary mesh with LOD. Mesh Particles costlier in vertices but eliminate stereo break and look significantly more convincing in VR.
Compromise: distant small particles — billboard, close large — mesh. LOD Group on Particle System level set via Level of Detail Bias in Quality Settings — close instances switch to mesh renderer.
VFX Graph: GPU simulation
VFX Graph — Visual Effect Graph in Unity — fundamentally different approach. Graph built with nodes: Spawn → Initialize → Update → Output. Particle movement logic, collisions, surface attachment — all on GPU via Compute Shader.
For VR key capabilities: GPU Events — particles spawn other particles on collision (spark from impact → several secondary sparks), all on GPU without CPU roundtrip. Depth Collision — particles collide with scene depth buffer without physical colliders. For Quest be careful: depth collision on tile GPU Snapdragon can create tile flush and lose GPU simulation gain.
Practical case: rock destruction effect. Classic Particle System: 300 debris particles with Rigidbody, all with CPU physics — 4.5 ms just Update physics. VFX Graph with Mesh Particles and GPU Flipbook animation: same 300 debris — 0.4 ms CPU, 1.2 ms GPU. Total 2.5x faster for complex effect.
Comfort: what not to do with VFX near face
Stroboscopic effects — flashing flashes, rapidly alternating bright colors — especially dangerous in VR for photosensitive epilepsy users. Meta Quest Store requires compliance with flashing guidelines (no more than 3 Hz for fullscreen flashes). Restrictions built at Particle System level via Max Particle Lifetime and Emission Rate — no point creating effect violating these rules.
Effects covering entire view (explosion right before face, screen completely filled with particles) cause discomfort. Rule: if particles can be closer than 50 cm to HMD camera, add Min Particle Distance or fade-out by distance via Size over Lifetime curve tied to Distance to Camera.
| VFX type | Estimated timeline |
|---|---|
| 3–5 simple effects (Particle System, atlas) | 3–7 days |
| Complete VFX kit for game (10–20 effects) | 2–5 weeks |
| VFX Graph system with custom logic | 3–8 weeks |
Cost calculated after requirements analysis and target platform.





