Skip to content

VFX Blocks

Thomas ICHÉ edited this page Jun 22, 2018 · 3 revisions

Here is a comprehensive list of blocks of the Visual Effects Standard Library

Attribute Blocks

Attribute Blocks are the most basic blocks and also the most full-featured. They are aimed to serve general-purpose attribute computation from various cases.

These blocks and their configuration are detailed in the VFX Attribute Blocks of this help.

Spawn Blocks

Spawn blocks are dedicated to the spawn context and help process SpawnEvent attributes.

These blocks and their configuration are detailed in the VFX Spawn Blocks of this help.

Collision Blocks

Colliders enable particle collision on various primitives and elements. Particle Collisions share common features to alter behaviour of particles.

Property/Setting Description
Mode (Enum setting) Primitive collision mode : Solid / Inverted. Interprets the primitive volume as a solid or an empty space.
Radius Mode (Enum setting) Enables auto computation of the collision detection radius or use of
Rough surface (Bool setting) Enables rough collision response (randomness in bounce direction) adds a Roughness float input property (0..1)
Elasticity (float input property) Amount of bounciness and energy restitution after collision. 1.0 means 100% restitution.
Friction (float input property) Amount of energy absorption when sliding on surface.
Lifetime loss Percentage of lifetime automatically added to the age every time the particle collides with the primitive.

Sphere Collider

Collides with a sphere primitive

Plane Collider

Collides with an infinite plane primitive

####AABox Collider

Collides with an axis-aligned box

Cylinder Collider

Collides with a cylinder

Signed Distance Field Collider

Collides with a signed DistanceField baked into a 3D Texture Distance fields can be transformed using a TRS Matrix

Flipbook Blocks

Flipbook Player

Flipbook Player is an Update-only block that performs basic texIndex advance over time, based on a frame rate.

Frame rate can be adjusted in two different ways based on the Mode setting : using a float Input property or a curve input Property sampled with the age/lifetime ratio.

Force Blocks

Forces applies to particle velocity in different ways : Absolute forces apply directly without particle resistance, Relative forces apply to the particle until a stable point (such as wind), Drag forces apply to the particle so it resists all other forces (air resistance).

Forces depend mostly of the current velocity of the particle, and its mass attribute.

Force

Force represents a linear force, applied to the particle, based on its mass. The Mode setting lets you choose between Absolute and Relative force.

The Force input property lets you determine the force vector applied to particle. Of course you can use operators to perform per-particle Force vector computation.

Gravity

Gravity is an absolute force that applies to particles regardless of their mass. It represents the gravity vector in a vacuum environment. To reproduce gravity in atmospheric environment, use a Drag force alongside the gravity vector.

Default value is -9,81 squared units per second on Y axis, which represents earth gravity.

Linear Drag

Drag force represents the linear resistance to the medium (for instance, air) of the particle. It relies on the mass attribute and a drag coefficient input property to compute the amount of resistance applied to the particle and speed it down.

The Use Particle Size setting enables the use of particle sizeX attribute to alter the drag coefficient.

Turbulence

Turbulence applies procedural noise turbulence to particles. Noise field can be transformed using a TRS.

Noise force is described by the following properties:

  • Field Transform : Transform applied to the noise field
  • Num Octaves : Number of octaves used for the noise. The more octaves, the more processing will be required to compute the noise.
  • Roughness : Influence of higher octaves (smaller noise) compared to the lower octaves.
  • Intensity : Influence scale of the turbulence.
  • Drag coefficient : Resistance of the particle to the turbulence field. 0 means absolute force.

Vector Field Force

Vector field force applies forces fetched from a 3D Texture containing vector data. Depending on data encoding setting, you can choose UnsignedNormalized if your texture data is centered on 0.5 (middle gray), or Signed if your texture contains actual absolute, signed data.

Unsigned normalized should be used if you encode your textures like normal maps, in 8 bits per-channel, linear textures. Signed should be used if you encode your texture as RGBAHalf or RGBAFloat

Vector field force is described by the following properties:

  • Field Transform : Transform applied to the noise field
  • Intensity : Influence scale of the turbulence.
  • Drag coefficient : Resistance of the particle to the turbulence field. 0 means absolute force.

Conform to Sphere

Conform to sphere applies an attraction force towards a sphere primitive and tries to retain particles onto the surface using a stick force.

Properties:

  • Sphere : the sphere to conform to.
  • Attraction Speed : relative speed used to attract particles to the sphere
  • Attraction Force : relative force used to attract particles to the sphere
  • Stick Distance : distance to the surface of the sphere where stick force applies
  • Stick Force : force applied to particles within the range of the surface and the stick distance, that will try to retain particles to the surface

Conform to Signed Distance Field

Conform to sphere applies an attraction force towards a Signed distance field and tries to retain particles onto the surface using a stick force.

Properties:

  • Distance Field : A 3D Texture containing SDF data, normalized to the UVW range.
  • Field Transform : the transform applied to the signed distance field.
  • Attraction Speed : relative speed used to attract particles to the SDF
  • Attraction Force : relative force used to attract particles to the SDF
  • Stick Distance : distance to the SDF surface of the sphere where stick force applies
  • Stick Force : force applied to particles within the range of the SDF surface and the stick distance, that will try to retain particles to the surface

Kill Blocks

Kill blocks destroy particles based on different conditions. Blocks use a Mode similar to the Collision blocks to decide whether the primitive is Solid or Inverted (Hollow inside a solid world).

Kill blocks set the alive Attribute to false if the condition is met. So automatic reaping of particles is required.

Kill (AABox)

Kills particles if they are inside/outside an Axis-Oriented box

Kill (Plane)

Kills particles if they go below/above an infinite plane.

Orientation Blocks

Orientation blocks are intended to control particle orientation.

Orient

Orient block is a general-purpose block intended to setup particle orientation for most common cases. It uses a Mode enum setting to setup with various behaviors:

  • FaceCameraPlane : Standard camera plane facing, particles stay aligned to the near plane so they do not bend regardless of their position on screen. Up axis is cameraUp
  • FaceCameraPosition : Camera position facing, particles look at camera position so they tend to orient themselves in a circular way. Up axis is cameraUp
  • LookAtPosition : Particles orient themselves towards a given position input property, with camera Up Axis
  • LookAtLine : Particles orient themselves towards a given position, which is the closest point to the particle on a given line input property, with camera Up Axis
  • Fixed Orientation : Particles are oriented using a given front axis and a given up axis determined by input properties
  • Fixed Axis : Particles orient themselves towards camera, with a given up axis as input property
  • Along Velocity : Particles orient themselves towards camera with up axis corresponding to their normalized velocity.

Connect Target

Particles orient towards camera and scale themselves towards a given position (as input property), Also the pivot shift property enables setting the pivot at given relative position between the bottom and the top of the particle. (So applying a scale afterwards will change the Y pivot from the start position to the target position)

Output Blocks

Camera Fade

Camera Fade alters the particle color and/or alpha (based on the fadeMode setting) depending on two distances:

  • Faded Distance : distance from camera at which the particle will be totally faded out
  • Visible Distance : distance from camera at which the particle will be totally not faded out.

Distances can be swapped to particles fade when they are near, or far from the camera.

Optimization : Particles that are fully faded becomes culled if the CullWhenFaded bool setting in the inspector is activated.

Subpixel AA

Subpixel Anti Aliasing prevents small particles from becoming smaller than one pixel, and clamps them to one pixel size. If the particle needed to clamp it size, Alpha is modulated accordingly to simulate the loss of size.

Position Blocks

Position blocks enable setting position for particles depending on configurable shapes. They share the following settings:

  • Mode (enum) : this mode enables to configure the spawn mode for the shape
    • Surface : Positions are evenly computed from the surface of the shape
    • Volume : Position are evenly computed from the volume of the shape
    • ThicknessRelative : Positions are evenly computed from a thick surface relative to the size of the shape
    • ThicknessAbsolute : Positions are evenly computed from a thick surface with absolute thickness.
  • Spawn Mode (enum) : Controls the order of spawn for particles
    • Randomize : Position is computed randomly
    • Custom : Position is computed from a sequencer (Eg arc sequencer) so progression can be controlled.

Position : AABox

Positions are computed from an axis-oriented box

Position : Circle

Positions are computed from a circle / disc

####Position : Line

Positions are computed from a line

Position : Sphere

Positions are computed from a uniform sphere

Position : Cone

Positions are computed from a Cone / Cylinder

####Position : Torus

Positions are computed from a torus

Size Blocks

Screen-Space Size

Screen-space size computes the size of the particle in screen-space units or screen-space ratio depending on a sizeMode setting:

  • PixelAbsolute : SizeX is set to match actual pixel size, in any resolution.
  • PixelRelativeToResolution : SizeX is set to match actual pixel size, at given resolution, and shall be resized according to actual resolution.
  • RatioRelativeToWidth : Calculates a screen-space size for SizeX relative to the screen width (for instance 0.5 will create square particle which width and height equals half of the width of the screen)
  • RatioRelativeToHeight : Calculates a screen-space size for SizeX relative to the screen height (for instance 0.5 will create square particle which width and height equals half of the height of the screen)
  • RatioRelativeToHeightAndWidth : Calculates a screen-space size for SizeX relative to the width of the screen and a screen-space size for SizeY relative to the height of the screen.

Velocity Blocks

Velocity blocks computes velocity for particles from various logic.

Velocity : Direction

Calculates velocity from direction attribute set by the Position : Shape blocks

Velocity : Randomize

Calculates random velocity and blends it to the current velocity

Velocity : Speed

Resets the speed of the current particle velocity

Velocity : Spherical

Sets the particle velocity towards or away from a given point.

Contents

Home

SRP Core
High Definition Render Pipeline
Lightweight Render Pipeline
Shader Graph
Clone this wiki locally
You can’t perform that action at this time.