# The modification pipeline

Illustration of the modification pipeline concept

The central concept in OVITO's software design is the so-called modification pipeline. It describes a sequence of operations (modifiers) defined by the user that act on the simulation data. After the data has undergone these modification steps, the final result is shown on the screen. OVITO provides a set of modifier types, each performing a different basic task such as selecting particles, coloring particles, or removing particles. By combining and arranging these simple building blocks in a modification pipeline, the user can control the visualization of the simulation data in a very flexible manner.

Each type of modifier provided by the program has a certain set of parameters that control its operation. OVITO's modifiers allow working non-destructively with the simulation data. That means, you can change modifier parameters at any time, and OVITO will immediately recalculate the effect on the original simulation data and update the particle display. To accomplish this, OVITO basically keeps two sets of data in memory: The original particles read from the external input file and the processed dataset that came out of the last evaluation of the modification pipeline. The latter is regenerated every time you change the modification pipeline in some way. An efficient caching mechanism keeps the amount of data processing at a minimum by re-evaluating only those modifiers that are affected by a change.

## The pipeline editor

The modification pipeline editor

The pipeline editor, shown on the right, is the central place to set up the sequence of modifications. It displays the current modification pipeline and lets the user insert new modifiers and change their parameters.

After importing a new simulation file into OVITO, the modification pipeline is initially empty. However, the pipeline editor already shows two sections labeled "Display" and "Input", which are always present. The "Display" section contains one or more items controlling the visual display of particles and other elements loaded from the file. The items under the "Input" section represent the original imported data, i.e. the content of the external data source that enters the modification pipeline.

Above the pipeline editor is a drop-down box labeled "Add modification...", which contains a list of available modifiers. Picking an entry from that box inserts a new modifier into the modification pipeline. The new modifier will be inserted right above the currently selected pipeline item. Note that the modification pipeline is displayed in a bottom-up order. That is, the data source is at the bottom and modifiers are executed from bottom to top.

You can temporarily disable individual modifiers in the modification pipeline by unchecking the box next to them. To permanently remove a modifier from the pipeline, use the red "Delete Modifier" tool button on the right. The up and down arrow buttons allow to change the order of modifiers.

## The input

The section "Input" at the bottom of in the pipeline editor represents the data source of the modification pipeline, i.e. the input simulation file. Selecting the filename entry opens a panel that, among other things, allows replacing the input of the modification pipeline with a different file.

Depending on the contents of the loaded file, the "Input" section lists additional sub-entries corresponding to various input elements. For instance, the Simulation cell entry gives access to the simulation box geometry and boundary conditions that were read from the external file.

If the imported simulation file contains information on particle types, they are listed under the Particle types entry. You can adjust the name, color, and display radius of individual particle types here. Note that a particle radius of zero means that the default display radius will be used instead (which is set in the Particles display object).

## Display objects

The computed results leaving the modification pipeline are displayed in the interactive viewports of OVITO. So-called display objects are responsible for rendering the visual representation and displaying the data. The "Display" section in the pipeline editor lists the display objects that are currently active. For instance, particles are rendered by the Particles display object, which exposes additional parameters controlling the appearance of particles. There's also a display object that controls the display of the simulation cell. When working with OVITO's modifiers, you will notice that additional objects may appear under the "Display" section to render other visual elements such as bonds and displacement vectors.

You can hide individual elements in the viewports by unchecking the corresponding box in the pipeline editor.