Profile picture
Alex Tardif @longbool
, 9 tweets, 2 min read Read on Twitter
Big thread about particle systems! First off, if you've ever wanted to make a full particle management system beyond a specialized demo, you may find this post of mine helpful: alextardif.com/Particles.html (1/N)

I've worked on fx systems for three fantasy MMOs now, for context.
Far from perfect and is a couple years old now (and CPU-focused), but it is quite detailed, and the major concepts translate to GPU systems too. I came back to it recently after writing a new GPU particle manager for ESO to sit alongside the previous one. Mostly aged well haha.
I'll also add here some miscellaneous tips and tricks that I found over the last few years, when you're working with proprietary tech and don't have a fully developed solution already from a commercial engine:
Separate your color control from your alpha control. Artists hate having to keyframe their color graphs with alpha together as a single entity. Separating them saves a lot of hassle and increases their control. Many particle editors make this mistake in my experience (self incl).
Allow artists to be able to animate as many controls as is possible/reasonable. Pick pretty much any particle feature - the artists will want to animate that. Keyframes, curves, whatever, they want it. There's a delicate balance with performance here though.
Don't go third party (however appealing) for your primary solution. Rapid iteration in-engine/in-game is absolutely essential. Build your own, then supplement it with desired third party tools to enhance what artists can do. Relying exclusively on third party will trap you.
Favor component-based editors to data spreadsheets. Many particle solutions are basically excel docs of properties and it's harder for artists to work with. The data behind it can be whatever you want, just visualize it better than that.
Indirect dispatch compute-sim/draw is not the only option. You can also cleanly separate your sim from your render by building particle verts at the end of your sim and stuffing them into a big raw (byte address) buffer which you can bind once for all particle rendering.
A good way I found to do gpu emitters with events (eg to spawn child emitters) is to write a CPU semi-sim with particles seeded the same as the GPU ones. Their properties can be used to drive events rather than needing expensive readback or other complicated solutions.
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Alex Tardif
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

ed 1px #999}