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. Billboard

Billboard

Overview

billboard renderer node
billboard renderer node

 

This is the most used particle renderer. It displays the particles as textured sprites.
It has various options to control how the particles are displayed, rotated, scaled, which texture is mapped on them, etc…
This renderer is supported in all of our public engine integrations.
Billboards are displayed onscreen based on an input position, size, color and additional per particle or static properties.

billboard renderer

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):

billboarding modes

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.

billboard renderer: screenbillboard renderer: screen

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.

billboard renderer: viewposbillboard renderer: viewpos

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

billboard renderer: axisbillboard renderer: axis

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

billboard renderer: spheroidbillboard renderer: spheroid

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.

billboard renderer: capsulebillboard renderer: capsule

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.

billboard renderer: planarbillboard renderer: planarbillboard renderer: planar

 

Material: Default_Billboard

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

  • ScreenAligned: Oriented to always face the camera screen plane
  • ViewposAligned: Oriented to always face the camera position
  • AxisAligned: Constrained along the Axis vector, tries facing the screen by rotating around the axis
  • AxisAlignedSpheroid: Same as AxisAligned, but vertices will always enclose a spheroid, preventing the billboard from looking like a thin slice when looking along the direction of Axis
  • AxisAlignedCapsule: Similar to AxisAlignedSpheroid, but the geometry has 4 triangles and 6 vertices, resembling a stretched cylinder instead of a spheroid
  • PlaneAligned: Constrained on two axes, does not depend on the camera, will appear as a 3D plane
EnableSize2DboolWhen enabled, the billboard size is specified as a float2 value, through the Size2 property, instead of the Size property.
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.
FlipUVsboolSwaps the U and V texture coordinate in the shader.
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 billboard 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 billboard, 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 billboard 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
Positionfloat3Billboard center in world coordinates
SizefloatRadius of the billboard in world units
Size2float22D side/up radius of the billboard in world units.
Only available when EnableSize2D is enabled.
RotationfloatBillboard rotation angle in degrees
Axisfloat3Principal axis of the billboard when BillboardingMode is set to AxisAligned*
Side axis of the billboard when BillboardingMode is set to PlaneAligned
NormalAxisfloat3Normal of the billboard when BillboardingMode is set to PlaneAligned
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_Billboard

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

  • ScreenAligned: Oriented to always face the camera screen plane
  • ViewposAligned: Oriented to always face the camera position
  • AxisAligned: Constrained along the Axis vector, tries facing the screen by rotating around the axis
  • AxisAlignedSpheroid: Same as AxisAligned, but vertices will always enclose a spheroid, preventing the billboard from looking like a thin slice when looking along the direction of Axis
  • AxisAlignedCapsule: Similar to AxisAlignedSpheroid, but the geometry has 4 triangles and 6 vertices, resembling a stretched cylinder instead of a spheroid
  • PlaneAligned: Constrained on two axes, does not depend on the camera, will appear as a 3D plane
EnableSize2DboolWhen enabled, the billboard size is specified as a float2 value, through the Size2 property, instead of the Size property.
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)
FlipUVsboolSwaps the U and V texture coordinate in the shader.
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 billboard, and mimic subsurface scattering / partial backlighting.
NormalBendboolEnables the Normal Bend rendering feature:
Bends the vertex normals of the billboard 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 billboard 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
Positionfloat3Billboard center in world coordinates
SizefloatRadius of the billboard in world units
Size2float22D side/up radius of the billboard in world units.
Only available when EnableSize2D is enabled.
RotationfloatBillboard rotation angle in degrees
Axisfloat3Principal axis of the billboard when BillboardingMode is set to AxisAligned*
Side axis of the billboard when BillboardingMode is set to PlaneAligned
NormalAxisfloat3Normal of the billboard when BillboardingMode is set to PlaneAligned
DiffuseMapStringTexture map used for the diffuse lighting component.
Colorfloat4Diffuse color, multiplied with the diffuse map color.

 

 

Material: Distortion_Billboard

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

  • ScreenAligned: Oriented to always face the camera screen plane
  • ViewposAligned: Oriented to always face the camera position
  • AxisAligned: Constrained along the Axis vector, tries facing the screen by rotating around the axis
  • AxisAlignedSpheroid: Same as AxisAligned, but vertices will always enclose a spheroid, preventing the billboard from looking like a thin slice when looking along the direction of Axis
  • AxisAlignedCapsule: Similar to AxisAlignedSpheroid, but the geometry has 4 triangles and 6 vertices, resembling a stretched cylinder instead of a spheroid
  • PlaneAligned: Constrained on two axes, does not depend on the camera, will appear as a 3D plane
EnableSize2DboolWhen enabled, the billboard size is specified as a float2 value, through the Size2 property, instead of the Size property.
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.
FlipUVsboolSwaps the U and V texture coordinate in the shader.
TransformUVsboolEnables the Transform UVs rendering feature:
Exposes more control on the UV coordinates of the billboard corners.
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.
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
Positionfloat3Billboard center in world coordinates
SizefloatRadius of the billboard in world units
Size2float22D side/up radius of the billboard in world units.
Only available when EnableSize2D is enabled.
RotationfloatBillboard rotation angle in degrees
Axisfloat3Principal axis of the billboard when BillboardingMode is set to AxisAligned*
Side axis of the billboard when BillboardingMode is set to PlaneAligned
NormalAxisfloat3Normal of the billboard when BillboardingMode is set to PlaneAligned

 

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 billboard to mimic a spherical surface when lighting is enabled.

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

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.

 

TransformUVs

Exposes more control on the UV coordinates of the billboard 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. The resulting color will be multiplied with the backbuffer values.

 

 

Was this article helpful to you? Yes No

How can we help?