Overview
![]()
The ribbon renderer connects particles with continuous ribbons, and maps a texture on them. |
![]() |
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:
- Particle exact positions displayed with a billboard renderer (red cross) are connected together as they have the same parent particle (EventMultiplier)
- 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
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.
|
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. |
LegacyLit | bool | Enables the Legacy Lit rendering feature: Lights the particle with the scene lights. (legacy shader) |
SoftParticles | bool | Enables 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. |
CorrectDeformation | bool | When enabled, minimizes texture shimmering artefacts when the ribbon size changes significantly from one segment to the next. |
CustomTextureU | bool | Enables the CustomTextureU rendering feature: Allows to specify per-particle the U texture coordinate of the ribbon segment extremities. |
TextureUVs | bool | Enables 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. |
TextureRepeat | bool | When enabled, repeats the UV coordinates instead of clamping them. |
AlphaRemap | bool | Enables 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. |
Atlas | bool | Enables 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. |
NormalBend | bool | Enables the Normal Bend rendering feature: Bends the vertex normals of the ribbon to mimic a spherical surface when lighting is enabled. |
NormalWrap | bool | Enables 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. |
DiffuseRamp | bool | Enables 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. |
Emissive | bool | Enables the Emissive rendering feature: Exposes an emissive map to use as a purely emissive color in addition to the regular diffuse component. |
TransformUVs | bool | Enables the Transform UVs rendering feature: Exposes more control on the UV coordinates of the ribbon corners. |
EmissiveRamp | bool | Enables 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. |
Type | enum | Transparent blending mode.
|
SortMode | enum | Allows to specify a custom sorting key.
|
GlobalSortOverride | int | Global 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. |
CameraSortOffset | float | Used 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 | ||
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* |
DiffuseMap | String | Texture map used for the diffuse lighting component. |
Color | float4 | Diffuse color, multiplied with the diffuse map color. |
SortKey | float | Value to be used for sorting when SortMode is set to ByCustomValue |
Material: Opaque_Ribbon
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.
|
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. |
LegacyLit | bool | Enables the Legacy Lit rendering feature: Lights the particle with the scene lights. (legacy shader) |
CorrectDeformation | bool | When enabled, minimizes texture shimmering artefacts when the ribbon size changes significantly from one segment to the next. |
CustomTextureU | bool | Enables the CustomTextureU rendering feature: Allows to specify per-particle the U texture coordinate of the ribbon segment extremities. |
TextureUVs | bool | Enables 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. |
TextureRepeat | bool | When enabled, repeats the UV coordinates instead of clamping them. |
AlphaRemap | bool | Enables 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. |
Atlas | bool | Enables 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. |
NormalWrap | bool | Enables 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. |
NormalBend | bool | Enables the Normal Bend rendering feature: Bends the vertex normals of the ribbon to mimic a spherical surface when lighting is enabled. |
DiffuseRamp | bool | Enables 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. |
Emissive | bool | Enables the Emissive rendering feature: Exposes an emissive map to use as a purely emissive color in addition to the regular diffuse component. |
TransformUVs | bool | Enables the Transform UVs rendering feature: Exposes more control on the UV coordinates of the ribbon corners. |
EmissiveRamp | bool | Enables 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. |
Type | enum | Opaque mode
|
MaskThreshold | float | Opacity mask threshold value. If the alpha value is below this value, the pixel is discarded. |
+ all common renderer properties | ||
Input pins | ||
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* |
DiffuseMap | String | Texture map used for the diffuse lighting component. |
Color | float4 | Diffuse color, multiplied with the diffuse map color. |
Material: Distortion_Ribbon
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.
|
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 . |
SoftParticles | bool | Enables 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. |
CorrectDeformation | bool | When enabled, minimizes texture shimmering artefacts when the ribbon size changes significantly from one segment to the next. |
CustomTextureU | bool | Enables the CustomTextureU rendering feature: Allows to specify per-particle the U texture coordinate of the ribbon segment extremities. |
TextureUVs | bool | Enables 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. |
TextureRepeat | bool | When enabled, repeats the UV coordinates instead of clamping them. |
TransformUVs | bool | Enables the Transform UVs rendering feature: Exposes more control on the UV coordinates of the ribbon corners. |
Atlas | bool | Enables 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. |
Lit | bool | Enables the Lit rendering feature: Lights the particle with the scene lights. |
Diffuse | bool | Enables the Diffuse rendering feature: Draws the particle as a regular diffuse surface in addition to distortion. |
DiffuseRamp | bool | Enables 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. |
Emissive | bool | Enables the Emissive rendering feature: Exposes an emissive map to use as a purely emissive color in addition to the regular diffuse component. |
EmissiveRamp | bool | Enables 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. |
Tint | bool | Enables the Tint rendering feature: Applies a multiplicative RGB tint on the framebuffer. Useful to simulate stained glass. |
+ all common renderer properties | ||
Input pins | ||
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* |
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 |
|
Input pins | ||
NormalMap | String | Texture map representing tangent-space normals to be used for lighting. |
RoughMetalMap | String | Roughness (R) 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 |
|
SubDiv | int2 | Subdivision count |
Blending | enum | Frame blending type
|
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 |
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. |