Overview
![]()
This is the most used particle renderer. It displays the particles as textured sprites. |
![]() |
Default Materials:
- Default_Billboard: Regular transparent billboard (additive, alpha-blended, or premultiplied-alpha)
- Opaque_Billboard: Opaque billboard, can use alpha-testing for cutouts
- Distortion_Billboard: Billboard drawing in the distortion pass, useful for heat-shimmering effects
Geometry generation
Billboard renderers support various billboarding modes (alignments):
Screen aligned
4 vertices / 2 triangles per particle
A screen-aligned billboard has its plane parallel to the screen plane.
Looking around and rotating the view camera changes the billboard orientation, while only changing the camera position doesn’t.
![]() | ![]() |
Viewpos aligned
4 vertices / 2 triangles per particle
A viewpos-aligned quad has its plane normal pointing towards the camera position.
Unlike screen-aligned quads, looking around does not change the billboard geometry.
![]() | ![]() |
Axis aligned
4 vertices / 2 triangles per particle
This billboard mode stretches the billboard geometry along the user-provided axis.
The billboard rotates around the specified axis to try facing the camera
![]() | ![]() |
Axis aligned spheroid
4 vertices / 2 triangles per particle
Unlike the AxisAligned billboarding mode, this one doesn’t suffer from the grazing-angle problem, where the particle appears to vanish when the billboarding axis becomes near-perpendicular with the screen plane.
Instead, this billboarder emulates a spheroid, and binds the screenspace projection of the spheroid with a quad. This fixes the artifacts of the AxisAligned mode
![]() | ![]() |
Axis aligned capsule
6 vertices / 4 triangles per particle
Particles rendered using this billboarder, like the AxisAlignedSpheroid, won’t seem to disappear at grazing angles.
Builds a 6-vertex geometry around the particle. Stretches the texture on its diagonal.
![]() | ![]() |
Plane aligned
4 vertices / 2 triangles per particle
Planar aligned billboarders use two axes for billboarding: like the axial billboarder, a main axis, lying on the plane, and the plane normal vector.
![]() | ![]() | ![]() |
Material: Default_Billboard
Property | Type | Description |
BillboardingMode | enum | Specifies how the billboard geometry should be build & aligned. Unless mentioned otherwise, the generated geometry will be a quad: 2 triangles, 4 vertices.
|
EnableSize2D | bool | When enabled, the billboard size is specified as a float2 value, through the Size2 property, instead of the Size property. |
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. |
FlipUVs | bool | Swaps the U and V texture coordinate in the shader. |
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 billboard 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 billboard, 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 billboard 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 | Billboard center in world coordinates |
Size | float | Radius of the billboard in world units |
Size2 | float2 | 2D side/up radius of the billboard in world units. Only available when EnableSize2D is enabled. |
Rotation | float | Billboard rotation angle in degrees |
Axis | float3 | Principal axis of the billboard when BillboardingMode is set to AxisAligned* Side axis of the billboard when BillboardingMode is set to PlaneAligned |
NormalAxis | float3 | Normal of the billboard when BillboardingMode is set to PlaneAligned |
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_Billboard
Property | Type | Description |
BillboardingMode | enum | Specifies how the billboard geometry should be build & aligned. Unless mentioned otherwise, the generated geometry will be a quad: 2 triangles, 4 vertices.
|
EnableSize2D | bool | When enabled, the billboard size is specified as a float2 value, through the Size2 property, instead of the Size property. |
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) |
FlipUVs | bool | Swaps the U and V texture coordinate in the shader. |
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 billboard, and mimic subsurface scattering / partial backlighting. |
NormalBend | bool | Enables the Normal Bend rendering feature: Bends the vertex normals of the billboard 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 billboard 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 | Billboard center in world coordinates |
Size | float | Radius of the billboard in world units |
Size2 | float2 | 2D side/up radius of the billboard in world units. Only available when EnableSize2D is enabled. |
Rotation | float | Billboard rotation angle in degrees |
Axis | float3 | Principal axis of the billboard when BillboardingMode is set to AxisAligned* Side axis of the billboard when BillboardingMode is set to PlaneAligned |
NormalAxis | float3 | Normal of the billboard when BillboardingMode is set to PlaneAligned |
DiffuseMap | String | Texture map used for the diffuse lighting component. |
Color | float4 | Diffuse color, multiplied with the diffuse map color. |
Material: Distortion_Billboard
Property | Type | Description |
BillboardingMode | enum | Specifies how the billboard geometry should be build & aligned. Unless mentioned otherwise, the generated geometry will be a quad: 2 triangles, 4 vertices.
|
EnableSize2D | bool | When enabled, the billboard size is specified as a float2 value, through the Size2 property, instead of the Size property. |
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. |
FlipUVs | bool | Swaps the U and V texture coordinate in the shader. |
TransformUVs | bool | Enables the Transform UVs rendering feature: Exposes more control on the UV coordinates of the billboard corners. |
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. |
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 | Billboard center in world coordinates |
Size | float | Radius of the billboard in world units |
Size2 | float2 | 2D side/up radius of the billboard in world units. Only available when EnableSize2D is enabled. |
Rotation | float | Billboard rotation angle in degrees |
Axis | float3 | Principal axis of the billboard when BillboardingMode is set to AxisAligned* Side axis of the billboard when BillboardingMode is set to PlaneAligned |
NormalAxis | float3 | Normal of the billboard when BillboardingMode is set to PlaneAligned |
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 billboard to mimic a spherical surface when lighting is enabled.
Property | Type | Description |
NormalBendingFactor | float | Bending factor to apply to the billboard normals.0.0 means no bending, the normals will be perpendicular to the billboard quad plane.1.0 means fully bent, the normals will be tangent to the billboard quad plane, pointing outwards. |
NormalWrap
Remaps the N dot L
value in the lighting equation to move back the unlit area of the billboard, 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. |
TransformUVs
Exposes more control on the UV coordinates of the billboard 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. The resulting color will be multiplied with the backbuffer values. |