C# Particle Editor

This is a fully 3D C# custom particle editor developed with Editor tools inside of Unity. The particles show up, update and render all in Edit mode without having to start any game or hit play.

Since our games were mostly designed around Unity and our levels were set dressed in Unity it made sense to setup the particle editor there.

At first, it proved a good challenge to transfer the updating & rendering to Unity’s own rendering methods (…in Edit mode!). Since I wanted a fullscreen fake bloom, I had to store all the particle rendering in a separate pass. This allowed me to do some blur and bloom effects on that fullscreen pass. Grabbing only the Scene view proved difficult but not impossible. Then it was just a matter of loading some matrices and drawing quads using straight GL calls from the editor’s Update function:

GL.Vertex3()

The editor exports straight into a custom binary file format. File sizes range from about 100-250 bytes.

It can handle a vast amount of different options, including random sizes, rotations, rendering modes and velocities. It can also use noise textures to gain a significant visual edge. This also is completely unaffected by game time – which means you can slow down the game and still have a perfectly smooth interpolation. Combined with on-the-fly texture swapping, iteration times are incredibly low.

The editor also has the benefit of being able to export multiple emitters inside of one particle system. This can allow you to have, for example, smoke as well as sparks at the same time as fire without having to load 3 particle systems.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s