Ribbon

Overview

ribbon renderer node
ribbon renderer node

The ribbon renderer connects particles with continuous ribbons, and maps a texture on them.
This renderer is supported in all of our public engine integrations.
Ribbons are displayed onscreen based on an input position, size, color and additional per particle or static properties.

ribbon renderer

Geometry generation

The ribbon renderer connects all particles in a layer that have the same parent particle:
ribbon renderer

  1. Particle exact positions displayed with a billboard renderer (red cross) are connected together as they have the same parent particle (EventMultiplier)

  2. Parent particles exact position displayed with a billboard renderer (red cross) emitting trail events. Child particles have a ribbon renderer, connecting all particles with the same parent

Geometry inputs

Property

Type

Description

BillboardingMode

enum

Specifies how the ribbon geometry should be build & aligned.
Unless mentioned otherwise, the generated geometry will be a quad: 2 triangles, 4 vertices.

  • ViewposAligned: Oriented to face the camera position

  • NormalAxisAligned: Constrained along the Axis vector, which represents the normal of the ribbon surface between each segment

  • SideAxisAligned: Constrained along the Axis vector, which represents the axis lying on the ribbon surface between each segment, perpendicular to the ribbon direction

  • SideAxisAlignedTube: Like SideAxisAligned, except the ribbon geometry will be a cylinder instead of a flat plane. The number of subdivisions of the cylinder segments is controlled by the SegmentCount property

  • SideAxisAlignedMultiPlane: Like SideAxisAligned, except the ribbon geometry will be a collection of perpendicular planes. The number of planes is controlled by the PlaneCount property

PlaneCount

int

Number of intersecting ribbon planes when BillboardingMode is set to SideAxisAlignedMultiPlane.

SegmentCount

int

Number of tube subdivisions when BillboardingMode is set to SideAxisAlignedTube.

Lit

bool

Enables the Lit rendering feature:
Lights the particle with the scene lights.

Position

float3

ribbon center in world coordinates

Size

float

Width of the ribbon in world units

Axis

float3

Normal of the ribbon surface when BillboardingMode is set to NormalAxisAligned
Side axis of the ribbon when BillboardingMode is set to SideAxisAligned*

+ all common renderer properties

Editor Materials:

  • Ribbon_Transparent/Legacy_Default_Ribbon: Regular transparent ribbon (additive, alpha-blended, or premultiplied-alpha)

  • Ribbon_Opaque/Legacy_Opaque_Ribbon: Opaque ribbon, depth tested.

  • Ribbon_Distortion/Legacy_Distortion_Ribbon: Ribbon drawing in the distortion pass, useful for heat-shimmering effects

  • Ribbon_CorrectDeformation_Transparent/Legacy_Default_Ribbon: Transparent ribbon with correct-deformation on textures

  • Ribbon_CorrectDeformation_Opaque/Legacy_Opaque_Ribbon: Opaque ribbon with correct-deformation on textures

  • Ribbon_CorrectDeformation_Distortion/Legacy_Distortion_Ribbon: Distortion ribbon with correct-deformation on textures

  • Ribbon_AnimatedMasked: Extented transparent ribbon with animated textures

Render-features

Lit

Lights the particle with the scene lights.

Property

Type

Description

CastShadows

bool

Can cast shadows

Roughness

float

Material roughness (PBR). A roughness of 0.0 represents a mirror, a roughness of 1.0 represents a purely diffuse surface.

Metalness

float

Material metalness (PBR). A metalness of 0.0 represents a pure nonmetal, a metalness of 1.0 represents a pure metal.
Affects the color of the reflections.

Type

enum

  • Solid

  • Transparent

Input pins

NormalMap

String

Texture map representing tangent-space normals to be used for lighting.

RoughMetalMap

String

Roughness ® and Metalness (G) packed in an RGBA texture

LitMaskMap

String

LegacyLit

Lights the particle with the scene lights. (legacy shader)

Property

Type

Description

NormalWrapFactor

float

Used to fake sub-surface scattering on the particles.
Remaps the N dot L of the lighting equation from [-1,1] to [-1+factor,1]

LightExponent

float

Exponentiation of the lighting term

LightScale

float3

RGB Multiplier applied to the incoming light

AmbientLight

float3

Additional uniform light

CastShadows

bool

Can cast shadows (not implemented in editor)

Input pins

NormalMap

String

Texture map representing tangent-space normals to be used for lighting.

SpecularMap

String

Source map used in specular lighting computation

NormalBend

Bends the vertex normals of the ribbon to mimic a spherical surface when lighting is enabled.

Property

Type

Description

NormalBendingFactor

float

Bending factor to apply to the ribbon normals.
0.0 means no bending, the normals will be perpendicular to the ribbon quad plane.
1.0 means fully bent, the normals will be tangent to the ribbon quad plane, pointing outwards.

NormalWrap

Remaps the N dot L value in the lighting equation to move back the unlit area of the ribbon, and mimic subsurface scattering / partial backlighting.

Property

Type

Description

WrapFactor

float

Used to fake sub-surface scattering on the particles.
Remaps the N dot L of the lighting equation from [-1,1] to [-1+factor,1]

SoftParticles

Particles fade away when becoming too close to solid scene geometry, preventing a hard clipping effect where they intersect the scene.

Property

Type

Description

SoftnessDistance

float

Fade distance of particles in world units

AlphaRemap

Allows remapping the alpha using a 2D grayscale texture looked up with the particle alpha along its U coordinate, and a custom per-particle Cursor along its V coordinate.

Property

Type

Description

Input pins

AlphaMap

String

Texture map used as the alpha remap lookup.
The X lookup coordinate is the diffuse texture alpha.
The Y lookup coordinate is the Cursor value.

Cursor

float

Y coordinate used to sample the AlphaMap texture.

TextureUVs

Allows to independently flip the U and V texture coordinate in the shader, or rotate the UV coordinates 90 degrees clockwise.

Property

Type

Description

FlipU

bool

When enabled, flips the U texture coordinate.

FlipV

bool

When enabled, flips the V texture coordinate.

RotateTexture

bool

When enabled, rotates the texture coordinates 90 degrees clockwise. (TextureU, FlipU, and FlipV are rotated too)

TransformUVs

Exposes more control on the UV coordinates of the ribbon corners.

Property

Type

Description

RGBOnly

bool

When enabled, does not transform the UVs used to sample the alpha channel.

Input pins

UVOffset

float2

UV offset

UVRotate

float2

UV rotation angle

UVScale

float2

UV scale

Atlas

Allows to use a sprite-sheet as the diffuse texture, and control which subset of the texture is used using a per-particle TextureID input.

Property

Type

Description

Source

enum

  • External: Atlas tiles are defined in an external .pkat atlas file. Their topology can be arbitrary.

  • Procedural: The number of tiles along the U and V axes are specified by the SubDiv property.

SubDiv

int2

Subdivision count

Blending

enum

Frame blending type

  • None: No interpolation between frames

  • Linear: Linear blending

  • MotionVectors: Use the MotionVectorsMap texture as the interpolation vectors to blend between frames

DistortionStrength

float

Multiplier over the uv distortion
Distortion strength to apply for Houdini exported maps is: -(1.0 / FPS / ColRow).

Input pins

Definition

String

Atlas definition (.pkat)

MotionVectorsMap

String

Motion vectors texture, used to blend between frames when Blending is set to MotionVectors

TextureID

float

Index of the sub-rect to use inside the atlas

Diffuse

Draws the particle as a regular diffuse surface in addition to distortion.

Property

Type

Description

Input pins

DiffuseMap

String

Texture map used for the diffuse lighting component

Color

float4

Diffuse color, multiplied with the diffuse map color.

DiffuseRamp

Uses the red channel of the diffuse texture (can be grayscale) to lookup a 1D color ramp to get the final RGB diffuse color.

Property

Type

Description

Input pins

RampMap

String

1D texture map used tor for diffuse color remap.
Sampled with the Red channel of the DiffuseMap texture.

Emissive

Exposes an emissive map to use as a purely emissive color in addition to the regular diffuse component.

Property

Type

Description

Input pins

EmissiveMap

String

Texture map used for the emissive lighting component.

EmissiveColor

float3

Emissive color, multiplied with the emissive texture

EmissiveRamp

Uses the red channel of the emissive texture (can be grayscale) to lookup a 1D color ramp to get the final RGB emissive color.

Property

Type

Description

Input pins

EmissiveRamp

String

1D texture map used tor for emissive color remap.
Sampled with the Red channel of the EmissiveMap` texture.`

Tint

Applies a multiplicative RGB tint on the framebuffer. Useful to simulate stained glass.

Property

Type

Description

Input pins

TintMap

String

Texture map used for the tint.

Color

float3

Tint color, multiplied with the tint texture.