Pavements Plus is an advanced version of the Pavements component. In addition to the functionality of the regular Pavements component, Pavements Plus provides the ability to customize the appearance of individual pavement blocks via slave components that expose various internal parameters of the block (such as random numbers unique for this block, or the coordinates of the block center and corners) to the subtree that defines pavement pattern appearance.
The output of slave components of Pavements Plus changes depending on the pavement block currently being rendered. This means that you can use them in the subtree of the Pavements input to vary any number of inputs in that subtree for each individual block. For more information, see the section 'Using Slave Components' below. For general information about slave components, see Slave components.
Since individual pavement block customization is now possible via slave components, some inputs that are present in the regular Pavements component were removed from Pavements Plus as unnecessary. As a side effect, the removal of inputs related to HLS-based color randomization enabled the support for HDR colors on inputs and output of Pavements Plus. Here's the list of removed inputs:
Pavements Plus is a map component, it can be located in the Patterns category on the Components Bar. This is a discrete component: any filter that uses it is automatically classed as a discrete filter. This component can output HDR colors.
This input defines appearance of the pavement pattern. The appearance of each individual pavement block can be customized via slave components connected to the subtree of this input. This input can accept HDR colors.
Pavements is the only input in the Pavements Plus component that can accept connections from the Pavements Plus slave components. Connecting them to any other inputs will have no effect. For more information, see the section 'Using Slave Components' below.
Defines the color of the spacing between pavement blocks. To set the mortar color for various image areas separately, connect a map component to this input. This input can accept HDR colors.
Mortar Width: Map Input
Sets the width of the spacing between the paving blocks. The actual spacing between a block and its neighbors is also influenced by the Chaos parameter. Since Mortar Width is a map input, its value can be controlled separately for different image areas by connecting a map component to this input.
Bevel Width: Map Input
Defines the width of the paving block slopes. The less the bevel width, the steeper and narrower the block slopes. When Bevel Width is zero, the slopes disappear completely. When Bevel Width is 100, the slopes occupy the entire block area, leaving no flat region in the middle. Since Bevel Width is a map input, its value can be controlled separately for different image areas by connecting a map component to this input.
Corners: Map Input
Defines how round the corners of the paving blocks are. With Corners set to 0, the corners of the blocks will be sharp, with no rounding. With Corners set to 100, the corners will be fully rounded. Since Corners is a map input, its value can be controlled separately for different image areas by connecting a map component to this input.
Specifies the way the paving blocks are laid. The following bonds are available: Basket Weave, Half Basket Weave, Spanish, Flanders Weave, Single Basket Weave, Boxing Basket Weave, Herring Bone, Stack Running, and De La Robia Weave.
Specifies how many times the pavement pattern is repeated. The actual number of repetitions within the output image is also affected by the global parameter Size and the image dimensions. For example, when Repeat is 3, Size is 600 pixels and the image width is 1200 pixels, the pattern will be repeated 6 times within the image width.
This parameter controls only the repetition of the base pattern grid, and does not affect the randomizations introduced by Chaos, Fill Mode parameters – their effects remain fully random and don't repeat across the entire image.
Makes the pavement pattern more realistic by introducing imperfection. Chaos disarranges the pattern by randomly shifting the block rows, and, if Mortar Width allows, the paving blocks themselves. Chaos of 0 means perfect order, larger values increase the disorder. The exact placement of each block is determined randomly.
Variation, technically known as random seed, affects the random aspects of the component which cannot be controlled directly: it randomizes the row shift and block disorder when Chaos is non-zero. The randomization is also affected by the global Variation value. For more information, see How Variation Works.
Bevel: Curve Input
Defines the bevel profile of each paving block (the transition between the block color and the mortar color). When Bevel Width is 0, this parameter has no effect. Three predefined bevel profiles are available: Linear, Smooth, and Contours. To customize the bevel profile, connect a curve component to this input.
For best results, the curve connected to the Bevel input should start at 0 and end at 100% – curves like Linear, Step, Gain and Stairs are perfect choices, while curves like Noise or Wave will require additional adjustments or modifications (for example, you can use the Fade component to force the start and end of any curve into desired positions).
These buttons create slave components linked to the currently selected Pavements Plus component. You can have multiple copies of each slave component.
Add Randomizer
Adds a Randomizer slave component that outputs a normalized random value (converted to color) that is unique for each pavement block. You can create multiple copies of Randomizer, so if you need multiple random values to build or modify the block subtree, you can use multiple Randomizers with different Variation settings (i.e. random seeds).
Add Cell Center X
Adds a Cell Center X slave component that outputs the X coordinate of the grid cell in which the current pavement block is located.
Add Cell Center Y
Adds a Cell Center Y slave component that outputs the Y coordinate of the grid cell in which the current pavement block is located.
Add Cell Left
Adds a Cell Left slave component that outputs the X coordinate of the left border of the grid cell in which the current pavement block is located.
Add Cell Top
Adds a Cell Top slave component that outputs the Y coordinate of the top border of the grid cell in which the current pavement block is located.
Add Cell Right
Adds a Cell Right slave component that outputs the X coordinate of the right border of the grid cell in which the current pavement block is located.
Add Cell Bottom
Adds a Cell Bottom slave component that outputs the Y coordinate of the bottom border of the grid cell in which the current pavement block is located.
Add Element Center X
Adds an Element Center X slave component that outputs the X coordinate of the center of the current pavement block, after all transformations, offsets and chaos have been applied.
Add Element Center Y
Adds an Element Center Y slave component that outputs the Y coordinate of the center of the current pavement block, after all transformations, offsets and chaos have been applied.
Add Element Left
Adds an Element Left slave component that outputs the X coordinate of the left border of the current pavement block, after all transformations, offsets and chaos have been applied.
Add Element Top
Adds an Element Top slave component that outputs the Y coordinate of the top border of the current pavement block, after all transformations, offsets and chaos have been applied.
Add Element Right
Adds an Element Right slave component that outputs the X coordinate of the right border of the current pavement block, after all transformations, offsets and chaos have been applied.
Add Element Bottom
Adds an Element Bottom slave component that outputs the Y coordinate of the bottom border of the current pavement block, after all transformations, offsets and chaos have been applied.
Slave components of Pavements Plus work properly only when the following conditions are met:
First, any slave components must be connected to the subtree of their master's Pavements input, otherwise they will have no effect. The Pavements input is the only input in the Pavements Plus component that generates element data for slaves during sampling.
And second, there must be no bitmap-based components between the slave and the Pavements input. Bitmap-based components (such as Blur or Motion Blur) kill the element data sent to slaves by their master, and thus cannot be used in slave-to-master connections.
Like Loop or any other slave-supporting component, Pavements Plus is nestable: it can be nested within a subtree of another slave-supporting component, or have another slave-supporting component inside its Pavements subtree, or both at the same time.