OGL Particle Shaders | Type (Primitive) | Type (HW Acc. Sprites) | Type (Billboard) | Type (Velocity Vectors) | Type (Density) | Type (Line Trails) | Lighting and Blending | Render Tree Usage
Category: RealTime > Realtime Particle
Shader Type: RealTime
Output: RealTime
Display Mode: OpenGL
The OpenGL Particle shader allows for the realtime shading of particles in an Softimage 3D view set to the OpenGL display mode. This realtime particle shader implements multiple shader types within a single node. Each shader type applies a different realtime effect to the particle cloud.
![]()
|
The OGLParticle shader is provided as an integrated working example of how you can override the viewing attributes in Softimage by writing your own realtime particle shader. The source code for the OGLParticle shader is available from <Install_Path>\XSISDK\examples\realtimeshader\Particles\OGL. |
|
Shader Type |
Primitive: Draws each particle point as a specific primitive type such as a sphere, snowflake, cube, etc. |
Primitive
|
Primitive Type |
Specifies the type of primitive used to draw the particle. You can choose Points, Cubes, Spheres (Solid), Spheres (Wireframe), Snowflake, Debris, Quad, or Arrows. |
|
Point Size |
Sets the size (width) of the point primitive in pixels. The default is 1.0. Available when Primitive Type is set to Points. |
|
Smooth Point |
Enables primitive antialiasing. Available when Primitive Type is set to Points. |
|
Stretch Along Velocity |
Stretches the primitive along the length of each particle’s velocity vector. Available when Primitive Type is set to Cubes, Spheres (Solid), Spheres (Wireframe), Snowflake, Debris, Quad, or Arrows. |
|
Use GPU Instancing |
GPU instancing is way of transforming the particles using the GPU which can double your render speeds, particularly for very large particle clouds. Instead of transforming the vertices of the primitive on the CPU (basically positioning each particle and then rendering an instance), the GPU renders the instance and then passes the position as an attribute of the vertex. The position of the particle is retrieved and transformed in the vertex shader. When disabled, the primitive is rendered using the traditional method of transforming the instances on the CPU. Available when Primitive Type is set to Cubes, Spheres (Solid), Spheres (Wireframe), Snowflake, Debris, Quad, or Arrows. |
|
Custom Fragment Shader |
Opens a text editor where you can enter the code for a fragment shader. This allows you to override the fixed functionality part of the pipeline with your own custom fragment shader code. Available when Primitive Type is set to Cubes, Spheres (Solid), Spheres (Wireframe), Snowflake, Debris, Quad, or Arrows. |
|
Fragment Shader |
The text editor widget supports text customization (font, color, size), syntax styling, folding (hiding blocks such as functions and subroutines), auto-completion and highlighting for keywords. To implement this text editor widget in your own plug-ins, see Text Editor Widget [SDK Guide]. |
Sprite Settings
|
Sprite Layout |
When you are using a texture as a sprite, you can use the entire image as a tile (Single) or you can separate the texture into tiles of 2x2, 3x3, 4x4, all the way up to 8x8. The texture’s coordinates are updated to use only the tile portion specified by this option. This is particularly useful if you’re using a multi-image texture (such as the image below) to achieve texture animation in the sprite. ![]()
|
|
Shader Type |
HW Accelerated Sprites: Draws OpenGL hardware accelerated point sprites at each point position. |
Primitive
|
Point Size |
Sets the size (width) of the point primitive in pixels. The default is 1.0. |
Sprite Settings
|
Point Size Minimum |
Sets the attenuated minimum point size. The default is 0.0. Values less than zero are invalid. Note: If you set the minimum point size greater than the maximum point size then the point size will be undefined. |
|
Point Size Max |
Sets the attenuated maximum point size. Values less than zero are invalid. |
|
Fade Threshold |
Sets the threshold for alpha attenuation. This fades the point alpha when the point width goes below the given threshold. Values less than zero are invalid. |
|
Attenuation |
Attenuation is the effect of points appearing to diminish in size as a function of distance. Each point has constant, linear, and quadratic attenuation factors that are taken into account when the point size is computed. |
|
Constant |
Allows the size of a point to be affected by constant distance attenuation. |
|
Linear |
Allows the size of a point to be affected by linear distance attenuation. |
|
Quadratic |
Allows the size of a point to be affected by quadratic distance attenuation. |
|
Shader Type |
Billboard Sprites: Draws billboard sprites for each point primitive using the OpenGL point sprite extension. This shader is similar to the hardware accelerated sprites shader, expect that billboard sprites are expanded on the CPU and then sent to the GPU. This means that the size of the sprites remain the same regardless of the viewing angle. |
Sprite Settings
|
Sprite Layout |
When you are using a texture as a sprite, you can use the entire image as a tile (Single) or you can separate the texture into tiles of 2x2, 3x3, 4x4, all the way up to 8x8. The texture’s coordinates are updated to use only the tile portion specified by this option. This is particularly useful if you’re using a multi-image texture (such as the image below) to achieve texture animation in the sprite. ![]()
|
|
Shader Type |
Velocity Vectors: Draws a line behind each point primitive, the length of which is dependent on the particle’s velocity. |
Sprite Settings
|
Sprite Layout |
When you are using a texture as a sprite, you can use the entire image as a tile (Single) or you can separate the texture into tiles of 2x2, 3x3, 4x4, all the way up to 8x8. The texture’s coordinates are updated to use only the tile portion specified by this option. This is particularly useful if you’re using a multi-image texture (such as the image below) to achieve texture animation in the sprite. ![]()
|
|
Shader Type |
Density: Draws each point and displays the cloud density encoded as colors. For each point, the density shader will check the distance of neighboring particles and, depending on the Density Falloff and Density Limit, will shade the point using the Sparse or Dense color settings. This shader is useful for visualizing the density of particle clouds. |
Primitive
|
Point Size |
Sets the size (width) of the point primitive in pixels. The default is 1.0. |
|
Smooth Point |
Enables primitive antialiasing. |
Density Field
|
Density Falloff |
Sets the rate at which the particle color blends from the Dense color to the Sparse color, and vise versa. |
|
Density Limit (in # of particles) |
Sets the number of particles whose proximity to each other (based on a hard-coded distance to neighboring particles) is considered dense. |
|
Sparse |
Sets the color to shade the particles that are considered sparse in terms of their proximity to each other. |
|
Dense |
Sets the color to shade the particles that are considered dense in terms of their proximity to each other. |
|
Shader Type |
Line Trails: Draws particle trails as lines. |
Primitive
|
Use GPU Instancing |
GPU instancing is way of transforming the particles using the GPU which can double your render speeds, particularly for very large particle clouds. Instead of transforming the vertices of the primitive on the CPU (basically positioning each particle and then rendering an instance), the GPU renders the instance and then passes the position as an attribute of the vertex. The position of the particle is retrieved and transformed within the vertex shader. |
|
Custom Fragment Shader |
Opens a text editor where you can enter the code for a fragment shader. This allows you to override the fixed functionality part of the pipeline with your own custom fragment shader code. |
|
Fragment Shader |
The text editor widget supports text customization (font, color, size), syntax styling, folding (hiding blocks such as functions and subroutines), auto-completion and highlighting for keywords. To implement this text editor widget in your own plug-ins, see Text Editor Widget [SDK Guide]. |
|
Use OpenGL Lighting |
Turns on or off lighting. GL lighting produces a primary and secondary color for each vertex. The effects from enabled light sources are used in conjunction with surface material properties to determine the lit color at a particular vertex. |
Blending
In RGBA mode, pixels can be drawn using a function (glBlendFunc) that blends the incoming (source) RGBA values with the RGBA values that are already in the frame buffer (the destination values). For more information, see How Blending Works [Realtime Shaders].
|
Use Blending |
Enable or disable blending. When enabled, the blend function defines the operation of blending. |
|
BlendScr |
The blend source factor (sfactor) specifies which method is used to scale the source color components. Select one of the supported methods from the drop-down menu. Each method defines four scale factors, one each for red, green, blue, and alpha. All scale factors have range [0,1]. |
|
BlendDest |
The blend destination factor (dfactor) specifies which method is used to scale the destination color components. Select one of the supported methods from the drop-down menu. Each method defines four scale factors, one each for red, green, blue, and alpha. All scale factors have range [0,1]. |
Alpha Testing
Alpha testing (glAlphaFunc) discards fragments depending on the outcome of a comparison between an incoming fragment's alpha value and a constant reference value. The alpha test specifies the reference value and the comparison function. The comparison is performed only if alpha testing is enabled.
The alpha function and alpha reference specify the conditions under which the pixel is drawn. The incoming alpha value is compared to AlphaRef using the function specified by AlphaFunc. If the value passes the comparison, the incoming fragment is drawn if it also passes subsequent stencil and depth buffer tests. If the value fails the comparison, no change is made to the frame buffer at that pixel location.
Alpha testing operates on all pixel write operations, including those resulting from the scan conversion of points, lines, polygons, and bitmaps, and from pixel draw and copy operations. It does not affect screen clear operations.
![]()
|
Alpha testing is performed only in RGBA mode. |
|
Perform Alpha Testing |
Enable or disable alpha testing. |
|
AlphaFunc |
Specifies the alpha comparison function (func). Select one of the supported comparison functions from the drop-down menu. The functions are defined as follows: • GL_NEVER Never passes. • GL_LESS Passes if the incoming alpha value is less than the reference value. • GL_EQUAL Passes if the incoming alpha value is equal to the reference value. • GL_LEQUAL Passes if the incoming alpha value is less than or equal to the reference value. • GL_GREATER Passes if the incoming alpha value is greater than the reference value. • GL_NOTEQUAL Passes if the incoming alpha value is not equal to the reference value. • GL_GEQUAL Passes if the incoming alpha value is greater than or equal to the reference value. • GL_ALWAYS Always passes. |
|
AlphaRef |
Specifies the reference value (ref) that incoming alpha values are compared to. This value is clamped to the range [0,1], where 0 represents the lowest possible alpha value and 1 the highest possible value. |
This is a typical render tree set up using the OGL Particle shader.

Autodesk Softimage v.7.5