Modifiers are one of the most important features supported by the Particle Effect System in CRYENGINE. Although Particle Effects provide a wide range of feature implementations that can be used to make all kinds of effects, their true power is only achieved when modifiers are used to dynamically alter the effect behavior.
Modifiers menu options
On this page, some of the Modifiers are marked as Time-Based Modifiers. These modifiers have additional parameters called the Time Sources. When enabled, these options can display additional fields, depending on the modification itself and the time source type. For more information about the Time-Based Modifiers and the Time Sources, please refer to the Time-Based Modifier's Common Settings section below.
Many properties implemented by particle effect features can contain a stack of modifiers. Each modifier takes that property value and then manipulates it in a specific way and sends the modified value to the next element in the stack. Some of these modifiers combine the output value of the previous modifier with their own input by multiplying them.
Depending on the property in question and the settings of the modifier, its logic can be applied on each component. For example, each modifier logic can be used on a newly spawned particle or each particle in every frame.
The following list outlines the modifiers that are available in a component:
With this option, users can modify the original property based on an effect's attribute.
This modifier is an alternative way of using attributes. Another way would be to use Linear (Time-Based Modifier) with source option set to Attribute.
Defines the name of the attribute to read from. If the attribute does not exist in this emitter, time source will get a value of 1 instead.
Scale and Bias
Allows the attribute to be scaled and biased. Usually useful when the input is not in the 0 to 1 range.
Specifies if the attribute is to be applied only when a particle is first born or if it should always affect all living particles.
This option allows users to modify the original property based on the platform type or the particle quality settings. The best outcome can be achieved when it is used to scale other feature properties higher or lower for performance scalability.
Scale value used when on Low Spec PC.
Scale value used when on Medium Spec PC.
Scale value used when on High Spec PC.
Scale value used when on Very High Spec PC.
Scale value used when on XBox One.
XBox One X
Scale value used when on XBox One X.
Scale value used when on PlayStation 4.
Linear (Time-Based Modifier)
This option allows users to combine properties that are modified with a time source; however, it doesn't apply any additional modification. In this modifier, only the time-based properties are used. Please refer to Time-Based Modifiers Common Settings for more information.
Noise (Time-Based Modifier)
This modifier uses a potential field based on Perlin noise to randomize the input property. Unlike the Random modifier, which tends to get fuzzy or diffuse, the Noise modifier adds smooth variations to the particles.
Defines the time source input to sample the Perlin noise field. For more information, see the Time-Based Modifiers Common Settings section below.
Defines the noise mode:
Indicates the amount of variation that will be added to the particle. If the amount is greater than 1, then it can provide a positive and a negative variation at the same time.
Only available when the Pulse noise mode is active. Given value specifies the balance between the frequency of pulse being turned on or off. For example, a value of 0.5 allows the pulse to be turned on and off in an even frequency; values greater than 0.5 result in the pulse being turned off more often than it's turned on.
Use the time source scale and bias to change the frequency and phase of noise. However, if the time scale is too high, Noise starts to behave closer to pure randomness and fuzziness; as a result, diffuse might start to arise.
Sample of Noise modes for a particle
Wave (Time-Based Modifier)
This modifier is used to provide different types of periodic values. Its options are based on trigonometric mathematics and are useful to add regular behaviors as opposed to variance.
Lets users select a time source input to sample the wave trigonometric equations. For more information, see the Time-Based Modifiers Common Settings section below.
Defines the noise modes:
Lets users add the Waveform settings.
When enabled, this option inverts the waveform.
Use the time source scale and bias to change the frequency and phase of a wave.
Cosine is the same as Sine with a 0.25 phase.
Wave equations samples
A waveform setting sample
This option can only be applied to the new particles. It provides a fast way to add simple variations to the particle behavior.
Specifies the amount of variation that will be added to the particle. If the amount is greater than 1, it can provide positive and negative variations at the same time.
Double Curve (Time-Based Modifier)
Unlike the Curve modifier, the Double Curve modifier uses two Bezier curves. Time source is used to sample both curves at the same time, while the Random field of the particle is used to interpolate between the lower and upper Bezier curves. This is useful in providing additional variance to the particle behavior.
Uses a double Bezier curve to provide additional variance. See Particle Editor for more information about Curve Editor.
Curve (Time-Based Modifier)
This option uses time source input to sample a Bezier curve. In particles, Bezier curves have an unlimited number of points; however, each point has to be in the range 0 to 1 in the X axis and there are no enforced limits on the Y axis. For performance reasons, Bezier points support slopes, but not the slope weight.
Uses a single curve to modify the values. See Particle Editor for more information about Curve Editor.
This option allows child particles to inherit their parent's Field output.
When a particle is born, it inherits the parent component's Field output.
Time-Based Modifiers Common Settings
Many of the Particle Effect Modifiers are time-based. This allows the modifier to accept not only the input from the property value modified by previous modifiers, but also other aspects of the particle. All of these modifiers have a common set of properties.
The easiest way to differentiate a regular modifier from a time-based modifier is that in the case of a time-based modifier, a new dropdown box appears in the user interface allowing users to select the time source input.
Time Source Options
Following options are available on the Time-Based Modifiers dropdown menu:
For immortal particles or properties that are not applied to particles during runtime, those values will always be 0.
Valid when the time source is set to Attribute. This will be the name of the attribute to read from. If the attribute does not exist in this emitter, time source will get a value of 1.
When the time source option in the time source input is set to either Field or Parent Field, this option becomes available. It allows users to select/choose which field to read from:
There is a difference between the Time Source - Random and the Random option which is available if the Field time source is selected. Time source Random will always output a different number and is fully stochastic. Field Random, on other hand, corresponds to a particle's own random number and can be used to have consistent behavior between modifiers. This can be used for example to have varying but consistent size and opacity or to have all children particles share the same randomness as their parent.
Specifies from where the time source or the Field option should be taken from:
When the owner is a parent, but the particle's parent is already dead, then time source will always be 1. The exception to this rule is the Speed feature, which will be set to 0 instead.
Domain Scale and Domain Bias
Allows the time source input to be scaled and biased. Usually useful when the input might not be in the 0 to 1 range, such as Speed or Attribute.
In some cases it is desirable to choose if the Modifier is to be applied for every particle every frame or if the Modifier should only be applied once when the particle is born.
Currently, modifiers have a very limited support in the current GPU pipeline. At the moment, the only modifier that can be used is the Curve modifier; and it can be used only with Owner: Self as the time source.
On This Page
- No labels