Weatherade has its own GPU-based particle system that is finely tuned to create snowfall or rain effects with excellent performance.
Internally it generates a particles mesh as a grid of separated quads and then simulate their movement using the power of shaders.
To create an emmiter, use the object creation menu: GameObject ⇒ NOT_Lonely ⇒ Weatherade ⇒ GPU Particles Emitter
A new emitter will appear in the scene directly above the scene view camera.
Determines whether the particle mesh will be generated in the editor or in Start function at runtime.
Size of the particle emitter square in its local space.
How many particles will be generated in the particle mesh by X and Z axis.
Forces the emitter transform to follow an object in the scene. The checkbox enables the use of the “Follow Target” function. The Transform field on the right allows you to explicitly specify the object to follow.
If this option is enabled, the Offset property will also appear. This is the position offset relative to the Follow Target object.
When move the emitter, particles will be teleported to the opposite side of the emitter once they reached the border of the emitter bounds. Treat it as if you were looking at an infinite volume of particles through a window frame.
Below you can see how it works (left - Warp Positions enabled, right - disabled):
If the Warp Positions option is enabled, you can adjust the emitter depth using this property so that the particles will teleport to their original position before their life cycle ends.
If this emitter changes its position too much between frames (teleporting in VR or similar cases), instantly teleport the particles to the new emitter position using this threshold value as a trigger.
Determines whether the system will start playing automatically when the game starts.
When playing, the pre-warmed system will be in a state as if it had been playing for some time.
How many simulation steps are used to prewarm the system.
A percentge of visible particles between 0 and total particles count
You can choose how the particles size will be calculated, pressing this little ▼ button to the right of the input field.
There are two available options:
All particles will be the same size.
The size of each particle will be calculated randomly within the minimum/maximum range.
You can choose how the particles life time will be calculated, pressing this little ▼ button to the right of the input field.
There are two available options:
All particles will have the same lifetime.
The lifetime of each particle will be calculated randomly within the minimum/maximum range.
You can choose how the particles color will be calculated, pressing this little ▼ button to the right of the color field.
There are four available options:
A simple color field is used. All particles will have the same color.
A gradient color field is used. Every particle will change its color during its lifetime cycle usgin this gradient.
The color will be selected randomly from these two gradients. The floating point input field between the gradients represents the ratio between them.
The color will be selected randomly from these two gradients over life time. The floating point input field between the gradients represents the ratio between them.
The particles will react to the scene light by flickering.
Determines how often the particles will flicker during their life cycle.
The object with this tag will be considered as a sun. The direction of its transform will be used to calculate the sparkling area.
If an object with this tag is found in the scene, several more properties will be displayed below.
Not editable field, just for debug purposes.
An HDR color for the sparkle effect.
Defines, how far around the “Sun” will the sparkle effect mask spread.
Sharpness of the sparkle effect mask.
Distance from the camera where the effect becomes visible.
Use point and spot lights in the sparkle effect.
Maximum lights count used in the sparkle effect calculations. The lights are sorted by the distance between them and this particle emitter.
Multiplies the intensity values of point lights used to calculate the sparkle effect.
Multiplies the intensity values of spot lights used to calculate the sparkle effect.
You can choose how the particles velocity will be calculated, pressing this little ▼ button to the right of the input field.
There are four available options:
All particles will use the same constant velocity.
Velocity will be calculated using the curve over the lifetime of the particle.
A multiplier vector that is used to scale the original velocity vector defined by the curve. This vector is applied in world space.
Velocity will be calculated using two curves over the lifetime of the particle. Random values will be selected from the range between curves A and B.
A multiplier vector that is used to scale the original velocity vector defined by the curve. This vector is applied in world space.
The amplitude of the additional sinusoidal wobble applied to the velocity of particles in world space.
Sinusoidal wobble frequency.
You can choose how the particles rotation will be calculated, pressing this little ▼ button to the right of the input field.
There are two available options for both propeties:
Constant initial rotation for each particle.
Random range of initial particle rotations.
Constant particle rotation speed.
Random range of particle rotation speed.
The Weatherade GPU particle system implements ultra-fast depth-based collisions, allowing particles to be killed when they collide with any object in the scene. This is much faster than particle collision in Unity's particle system since it is calculated entirely on the GPU.
Its performance does not depend on the number of particles.
Enables collision to prevent particles from passing through world surfaces.
Scene depth texture source. Used to calculate particles collision.
If you have a coverage instance in the scene, you can reuse its depth texture by setting this parameter to “Global” and the Сoverage Instance's Depth Texture Format to ARGB Half or ARGB Float, since these two formats contain an additional channel with the unmodified depth texture.
If the Depth Texture Source option is set to This Emitter, several more options will appear below.
Resolution of the depth texture used for collision calculations. Use the smallest value possible and only increase it if particles start to pass through objects in the scene.
Object layers that will be included in the collision depth texture. Think of these as objects that particles will collide with.
Defines whether the depth texture should be updated in realtime with the set Interval.
The interval in seconds for the depth texture update. If set to 0, the emitter will perform depth updates every frame. Use values greater than 0 to improve performance.
The particle mask texture. It uses the following channels:
Enables refraction for the particles.
If this option is enabled, an additional texture field will appear.
A normal map texture that is used for the Refraction effect.
Stretch factor for particles. Values greater than 0 will stretch the particles in the direction they move.
The distance where the ⠀R⠀ and ⠀G⠀ channels of the Texture blend ends.
The size of the transition between the unblured and blured particle.
The distance from the camera at which the particles will begin to lose their opacity.
The size of the transition between the original opacity and fully transparent particle.