PopcornFX v2.18

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
  1. Home
  2. Docs
  3. PopcornFX v2.18
  4. Node Reference
  5. Builtin nodes
  6. Renderers
  7. Ribbon

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

 

Default Materials:

  • Default_Ribbon: Regular transparent ribbon (additive, alpha-blended, or premultiplied-alpha)
  • Opaque_Ribbon: Opaque ribbon, can use alpha-testing for cutouts
  • Distortion_Ribbon: Ribbon drawing in the distortion pass, useful for heat-shimmering effects

 

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

 

Material: Default_Ribbon

PropertyTypeDescription
BillboardingModeenumSpecifies 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
PlaneCountintNumber of intersecting ribbon planes when BillboardingMode is set to SideAxisAlignedMultiPlane.
SegmentCountintNumber of tube subdivisions when BillboardingMode is set to SideAxisAlignedTube.
LitboolEnables the Lit rendering feature:
Lights the particle with the scene lights.
LegacyLitboolEnables the Legacy Lit rendering feature:
Lights the particle with the scene lights. (legacy shader)
SoftParticlesboolEnables the Soft Particles rendering feature:
Particles fade away when becoming too close to solid scene geometry, preventing a hard clipping effect where they intersect the scene.
CorrectDeformationboolWhen enabled, minimizes texture shimmering artefacts when the ribbon size changes significantly from one segment to the next.
CustomTextureUboolEnables the CustomTextureU rendering feature:
Allows to specify per-particle the U texture coordinate of the ribbon segment extremities.
TextureUVsboolEnables the TextureUVs rendering feature:
Allows to independently flip the U and V texture coordinate in the shader, or rotate the UV coordinates 90 degrees clockwise.
TextureRepeatboolWhen enabled, repeats the UV coordinates instead of clamping them.
AlphaRemapboolEnables the Alpha Remap rendering feature:
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.
AtlasboolEnables the Atlas rendering feature:
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.
NormalBendboolEnables the Normal Bend rendering feature:
Bends the vertex normals of the ribbon to mimic a spherical surface when lighting is enabled.
NormalWrapboolEnables the Normal Wrap rendering feature:
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.
DiffuseRampboolEnables the Diffuse Ramp rendering feature:
Uses the red channel of the diffuse texture (can be grayscale) to lookup a 1D color ramp to get the final RGB diffuse color.
EmissiveboolEnables the Emissive rendering feature:
Exposes an emissive map to use as a purely emissive color in addition to the regular diffuse component.
TransformUVsboolEnables the Transform UVs rendering feature:
Exposes more control on the UV coordinates of the ribbon corners.
EmissiveRampboolEnables the Emissive Ramp rendering feature:
Uses the red channel of the emissive texture (can be grayscale) to lookup a 1D color ramp to get the final RGB emissive color.
TypeenumTransparent blending mode.

  • Additive
  • AdditiveNoAlpha
  • AlphaBlend
  • PremultipliedAlpha
SortModeenumAllows to specify a custom sorting key.

  • CameraDistance: Sorts from back to front based on the particle distance to the camera (default)
  • ByCustomValue: When selected, uses the per-particle SortKey input as the value to sort based on, from largest first to smallest last, like if it was a distance value.
GlobalSortOverrideintGlobal sort order of the draw calls.
Different values for 2 renderers will break batching and separate their drawcall.
Smaller values are drawn first (visually behind higher values). The value can be negative.
CameraSortOffsetfloatUsed as a depth bias to allow offseting the draw call bbox along the camera axis (in world units).
Different values for 2 renderers will break batching and separate their drawcall.
+ all common renderer properties
Input pins
Positionfloat3ribbon center in world coordinates
SizefloatWidth of the ribbon in world units
Axisfloat3Normal of the ribbon surface when BillboardingMode is set to NormalAxisAligned
Side axis of the ribbon when BillboardingMode is set to SideAxisAligned*
DiffuseMapStringTexture map used for the diffuse lighting component.
Colorfloat4Diffuse color, multiplied with the diffuse map color.
SortKeyfloatValue to be used for sorting when SortMode is set to ByCustomValue

 

 

Material: Opaque_Ribbon

PropertyTypeDescription
BillboardingModeenumSpecifies 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
PlaneCountintNumber of intersecting ribbon planes when BillboardingMode is set to SideAxisAlignedMultiPlane.
SegmentCountintNumber of tube subdivisions when BillboardingMode is set to SideAxisAlignedTube.
LitboolEnables the Lit rendering feature:
Lights the particle with the scene lights.
LegacyLitboolEnables the Legacy Lit rendering feature:
Lights the particle with the scene lights. (legacy shader)
CorrectDeformationboolWhen enabled, minimizes texture shimmering artefacts when the ribbon size changes significantly from one segment to the next.
CustomTextureUboolEnables the CustomTextureU rendering feature:
Allows to specify per-particle the U texture coordinate of the ribbon segment extremities.
TextureUVsboolEnables the TextureUVs rendering feature:
Allows to independently flip the U and V texture coordinate in the shader, or rotate the UV coordinates 90 degrees clockwise.
TextureRepeatboolWhen enabled, repeats the UV coordinates instead of clamping them.
AlphaRemapboolEnables the Alpha Remap rendering feature:
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.
AtlasboolEnables the Atlas rendering feature:
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.
NormalWrapboolEnables the Normal Wrap rendering feature:
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.
NormalBendboolEnables the Normal Bend rendering feature:
Bends the vertex normals of the ribbon to mimic a spherical surface when lighting is enabled.
DiffuseRampboolEnables the Diffuse Ramp rendering feature:
Uses the red channel of the diffuse texture (can be grayscale) to lookup a 1D color ramp to get the final RGB diffuse color.
EmissiveboolEnables the Emissive rendering feature:
Exposes an emissive map to use as a purely emissive color in addition to the regular diffuse component.
TransformUVsboolEnables the Transform UVs rendering feature:
Exposes more control on the UV coordinates of the ribbon corners.
EmissiveRampboolEnables the Emissive Ramp rendering feature:
Uses the red channel of the emissive texture (can be grayscale) to lookup a 1D color ramp to get the final RGB emissive color.
TypeenumOpaque mode

  • Solid: Fully opaque, ignores the texture & color alpha channel
  • Masked: When the final pixel’s alpha value is lower than MaskThreshold, the pixel is not drawn
MaskThresholdfloatOpacity mask threshold value.
If the alpha value is below this value, the pixel is discarded.
+ all common renderer properties
Input pins
Positionfloat3Ribbon center in world coordinates
SizefloatWidth of the ribbon in world units
Axisfloat3Normal of the ribbon surface when BillboardingMode is set to NormalAxisAligned
Side axis of the ribbon when BillboardingMode is set to SideAxisAligned*
DiffuseMapStringTexture map used for the diffuse lighting component.
Colorfloat4Diffuse color, multiplied with the diffuse map color.

 

 

Material: Distortion_Ribbon

PropertyTypeDescription
BillboardingModeenumSpecifies 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
PlaneCountintNumber of intersecting ribbon planes when BillboardingMode is set to SideAxisAlignedMultiPlane.
SegmentCountintNumber of tube subdivisions when BillboardingMode is set to SideAxisAlignedTube.
SoftParticlesboolEnables the Soft Particles rendering feature:
Particles fade away when becoming too close to solid scene geometry, preventing a hard clipping effect where they intersect the scene.
CorrectDeformationboolWhen enabled, minimizes texture shimmering artefacts when the ribbon size changes significantly from one segment to the next.
CustomTextureUboolEnables the CustomTextureU rendering feature:
Allows to specify per-particle the U texture coordinate of the ribbon segment extremities.
TextureUVsboolEnables the TextureUVs rendering feature:
Allows to independently flip the U and V texture coordinate in the shader, or rotate the UV coordinates 90 degrees clockwise.
TextureRepeatboolWhen enabled, repeats the UV coordinates instead of clamping them.
TransformUVsboolEnables the Transform UVs rendering feature:
Exposes more control on the UV coordinates of the ribbon corners.
AtlasboolEnables the Atlas rendering feature:
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.
LitboolEnables the Lit rendering feature:
Lights the particle with the scene lights.
DiffuseboolEnables the Diffuse rendering feature:
Draws the particle as a regular diffuse surface in addition to distortion.
DiffuseRampboolEnables the Diffuse Ramp rendering feature:
Uses the red channel of the diffuse texture (can be grayscale) to lookup a 1D color ramp to get the final RGB diffuse color.
EmissiveboolEnables the Emissive rendering feature:
Exposes an emissive map to use as a purely emissive color in addition to the regular diffuse component.
EmissiveRampboolEnables the Emissive Ramp rendering feature:
Uses the red channel of the emissive texture (can be grayscale) to lookup a 1D color ramp to get the final RGB emissive color.
TintboolEnables the Tint rendering feature:
Applies a multiplicative RGB tint on the framebuffer. Useful to simulate stained glass.
+ all common renderer properties
Input pins
Positionfloat3Ribbon center in world coordinates
SizefloatWidth of the ribbon in world units
Axisfloat3Normal of the ribbon surface when BillboardingMode is set to NormalAxisAligned
Side axis of the ribbon when BillboardingMode is set to SideAxisAligned*

 

Render-features

Lit

Lights the particle with the scene lights.

PropertyTypeDescription
CastShadowsboolCan cast shadows
RoughnessfloatMaterial roughness (PBR). A roughness of 0.0 represents a mirror, a roughness of 1.0 represents a purely diffuse surface.
MetalnessfloatMaterial 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.
Typeenum
  • Solid
  • Transparent
Input pins
NormalMapStringTexture map representing tangent-space normals to be used for lighting.
RoughMetalMapStringRoughness (R) and Metalness (G) packed in an RGBA texture
LitMaskMapString

 

LegacyLit

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

PropertyTypeDescription
NormalWrapFactorfloatUsed to fake sub-surface scattering on the particles.
Remaps the N dot L of the lighting equation from [-1,1] to [-1+factor,1]
LightExponentfloatExponentiation of the lighting term
LightScalefloat3RGB Multiplier applied to the incoming light
AmbientLightfloat3Additional uniform light
CastShadowsboolCan cast shadows (not implemented in editor)
Input pins
NormalMapStringTexture map representing tangent-space normals to be used for lighting.
SpecularMapStringSource map used in specular lighting computation

 

NormalBend

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

PropertyTypeDescription
NormalBendingFactorfloatBending 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.

PropertyTypeDescription
WrapFactorfloatUsed 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.

PropertyTypeDescription
SoftnessDistancefloatFade 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.

PropertyTypeDescription
Input pins
AlphaMapStringTexture map used as the alpha remap lookup.
The X lookup coordinate is the diffuse texture alpha.
The Y lookup coordinate is the Cursor value.
CursorfloatY 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.

PropertyTypeDescription
FlipUboolWhen enabled, flips the U texture coordinate.
FlipVboolWhen enabled, flips the V texture coordinate.
RotateTextureboolWhen 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.

PropertyTypeDescription
RGBOnlyboolWhen enabled, does not transform the UVs used to sample the alpha channel.
Input pins
UVOffsetfloat2UV offset
UVRotatefloat2UV rotation angle
UVScalefloat2UV 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.

PropertyTypeDescription
Sourceenum
  • 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.
SubDivint2Subdivision count
BlendingenumFrame blending type

  • None: No interpolation between frames
  • Linear: Linear blending
  • MotionVectors: Use the MotionVectorsMap texture as the interpolation vectors to blend between frames
DistortionStrengthfloatMultiplier over the uv distortion
Distortion strength to apply for Houdini exported maps is: -(1.0 / FPS / ColRow).
Input pins
DefinitionStringAtlas definition (.pkat)
MotionVectorsMapStringMotion vectors texture, used to blend between frames when Blending is set to MotionVectors
TextureIDfloatIndex of the sub-rect to use inside the atlas

 

Diffuse

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

PropertyTypeDescription
Input pins
DiffuseMapStringTexture map used for the diffuse lighting component
Colorfloat4Diffuse 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.

PropertyTypeDescription
Input pins
RampMapString1D 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.

PropertyTypeDescription
Input pins
EmissiveMapStringTexture map used for the emissive lighting component.
EmissiveColorfloat3Emissive 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.

PropertyTypeDescription
Input pins
EmissiveRampString1D 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.

PropertyTypeDescription
Input pins
TintMapStringTexture map used for the tint.
Colorfloat3Tint color, multiplied with the tint texture.

 

 

Was this article helpful to you? Yes No

How can we help?