CParticleRenderer Ribbon

From PopcornFX
Jump to: navigation, search

Ribbon renderer Last update: v1.10.0 - Main page : Particle renderers Particle renderers


The ribbon renderer connects particles with continous ribbons, and maps a texture on them.


This renderer is supported in all of our public engine integrations.
You can check the implementation status of a feature in our public integrations here:


Ribbon renderer


Ribbon renderer Node properties

Field name Default value Description
Ribbon renderer Material
UserData Empty Use this if you need to pass custom data to your game engine's integration (custom PopcornFX SDK). If you're Using UE4 or Unity, you can ignore this.
BillboardingMaterial Additive
  • Additive
  • Additive_NoAlpha
  • Additive_Soft
  • AlphaBlend
  • AlphaBlend_Soft
  • AlphaBlend_Distortion
  • AlphaBlend_Additive_Soft
  • Custom
Quality Simple Billboarder and shading quality:
  • Simple : draws quads, but texturing on non-rectangular quads will appear buggee.
  • CorrectDeformation : draws quads and tries to correct texture deformation for non-rectangular quads.
Diffuse <empty> Diffuse texture path
Normal <empty> Normalmap path, for lit materials (optional)
AtlasDefinition <empty> Atlas definition
AlphaRemapper <empty>

Path to the texture used to remap the Diffuse's alpha. Pseudo-shader looks like: newAlpha AlphaRemapper.sample(float2(Diffuse_color.a, AlphaCursorField)).r;

RotateTexture <empty> Rotate texcoords 90 degrees clockwise (TexU, FlipU, and FlipV are rotated too)
CastShadow false v1.9.0 If active, particles will cast shadows (NOT IMPLEMENTED in the PopcornFX Editor!)
Ribbon renderer Geometry
DrawOrder 0 Rendering order index of the particle. Defines the order in which the particles are rendered. Smaller values will be rendered first.
BillboardMode ViewposAlignedQuad
  • ViewposAlignedQuad
  • AxisAlignedQuad
PositionField Position v1.7.0 Name of the float3 particle field to be used as the billboard position.
Width 1 Static width factor combined with 'WidthField'
WidthField Size Name of the field containing the ribbon width
AxisField name of the particle field containing the ribbon's normal
Ribbon renderer Texture
TextureID 0 Default texture-atlas ID to use if there is no explicit 'TextureIDField'
TextureIDField particle field containing the index of the texture-atlas sub-rect that should be used for this particle. if no atlas, this field is ignored. if the field doesn't exist but an atlas is present, the value of 'TextureID' is used
TextureUField particle field containing the UV's 'U' coordinate
ColorField Color particle field containing the RGBA color of the particle. if it's not found inside the particle fields, a white color will be used.
AlphaCursorField LifeRatio Name of the particle field used to index the Y/V axis of the AlphaRemapper texture.
SoftnessDistance 1.0 v1.9.0 fade distance of soft-particles. only taken into account if a '_Soft' material is selected

for example, a value of 5.0 means the billboard pixels will start fading when the scene depth is closer than 5 world units to the billboard plane.

FlipV false if checked, the texture UVs will be flipped horizontally
FlipU false if checked, the texture UVs will be flipped vertically
TextureRepeat false Repeat or wrap texcoord. Beware Atlases could overflow on other texture ID.
Ribbon renderer Lighting
NormalsBendingFactor 0.5 Controls how much the billboard normals will be 'bent' with respect to the plane normal.

0 means no bending, normals are equal to the plane normal.
1 means fully bent, normals lie on the plane and point outwards, away from the billboard center

NormalsWrapFactor 0.1 Material-specific, remaps the [-1,1] 'n dot l' of the lighting equation to ranges going from [-1,1] to [0,1]. A high value will give the effect of light bleeding through the billboard rim.
LightExponent 1 Material-specific, exponentiation of the lighting term
LightName GlobalLight Name of the light to use for lighting. by default, the particle editor creates a scene with a light named "GlobalLight"
LightScale {1,1,1} Material-specific, Multiplier applied to the incoming light
AmbientLight {0.1,0.1,0.1} Material-specific, Uniform ambient light
Layout CParticleRenderer Ribbon.png


Ribbon renderer How it works

The ribbon renderer connects all particles in a medium that have the same parent.

The parent of a particle can either be a regular particle spawner instance, or another particle that contains a Evolver spawner Spawner evolver.


Ribbon comparison : spawner layer vs spawner evolver
particle spawner action Spawner layer + ribbon Evolver spawner Spawner evolver + ribbon


Ribbon renderer Geometry

  • Top: classic billboard trails, made of many small particles.
  • Middle: ribbon using fewer trail particles.
  • Bottom: ribbon using even fewer trail particles.


Ribbon comparison

Ribbon comparison


Manually defining the ribbon normal

You can create full-3D ribbons by telling the ribbon renderer to use a specific per-particle ribbon normal. (see the 'BillboardMode' and 'AxisField' properties).


NOTE : When specifying per-particle ribbon normals, you'll probably want to activate the 'UseVelocityOrientedSpawnMatrix' property of the Evolver spawner Spawner evolver.


3D ribbon : properties
Node properties


3D ribbon : Axis=Up
Spawn script
3D ribbon : Axis=Up
3D ribbon : properties
Node properties


3D ribbon : Axis=Twisted
Spawn script
3D ribbon : Axis=Twisted