Texture synth

This filter for Filter Forge 4 clones an image in a randomized fashion to fill the target resolution:

Non-tiling base image Texture synth Texture synth sample01a 300x300
Base image: 512×512, non-tiling.
A tiling generated image at 2x resolution Texture synth Texture synth sample01b 300x300
Generated image: 1024×1024, tiling.

The base idea is not complicated: the image is split into 9, similarly sized overlapping areas (patches), each patch gets a mask and randomly placed on the final image:

The 9 areas patches are generated from Texture synth Texture synth fig01
The 5+4 slices on the image.
Basic patch shape Texture synth Texture synth fig02
The basic patch mask.
The placed patches Texture synth Texture synth fig03
The placed patches.

To make the patches less obvious we’ll tweak their masks a bit, but this is still a rather simple algorithm which needs guidance from the user to produce acceptable results.


There are 5 distinct steps to setting up the filter, each with its dedicated view mode and group of controls. Each step focuses on one particular aspect so with a little practice it will be easy to configure it to work with most input images.

Step 0: Selecting the input images

Two images are necessary: A Blend and a Base (although they can reference the same picture). The blend image defines the shape of the patches while the base image provides the content for each patch. This way the same settings and same blend image with different base images will produce matching results. A typical example for this would be a diffuse-bump texture pair, used as base images:

Non-tiling gravel Texture synth Texture synth sample09a 150x150
Base diffuse
Non-tiling gravel bump Texture synth Texture synth sample10a 150x150
Base bump
Tiling generated gravel Texture synth Texture synth sample09b 150x150
Generated diffuse
Tiling generated gravel bump Texture synth Texture synth sample10b 150x150
Generated bump

(These images were rendered from a 3d model created with 123D Catch.)
Since FilterForge can handle 16 bit per pixel data it’s recommended to keep bump textures in that format. Also note that due their nature bump maps usually work better as blend maps than their diffuse counterparts.

Step 1: Selecting the input channel

The blend image is used to break up the simple mask, the radial gradient shown above. In this step we select which channel of the image will be used for that. Setting the View mode slider to 1 will display an overview of the available channels: Hue, Saturation, Brightness, Red, Green, Blue, Cyan, Magenta, Yellow.


The red frame indicates currents selection, defined by the Blend Map Channel slider. (The controls in the View Mode 2 group also have an effect, adjust them if you see totally black or white previews.)


Try to pick the channel which best separates a “foreground” from the “background”. It’s not always obvious what the best choice is so don’t be afraid to experiment.

Step 2: Tweaking the input channel

View mode on 2 shows the selected channel in full size so it can be fine tuned using the controls in the second group. Inversion, brightness, contract adjustments are self explanatory (these operations are applied in this order). Smoothing performs an edge preserving blur which can help when a blend map produces noisy results.

Step 3: Patch setup

This step is about defining the final shape of the patches. View mode 3 shows the first of the 9 patches, a good indicator of roughly how the rest of them will look like. At this point the blend map is already mixed with the base round patch mask, so the controls in the 3rd group affect that mix.


Patch Coverage defines how big area in a patch will be fully visible. It is recommended to set this parameter as high as possible but low enough so the patch does not touches the edges, so the seams there are not visible.


Patch Contrast controls how sharp the edges of the patch will be. A high value makes sense when there are well defined objects/areas on the image so a hard edge makes sense. Lower values produce gradual fade out which works better for more homogeneous surfaces.


Noise Amount adjusts how much random distortion is applied to the base mask while Noise Scale changes the size of the effect. It is useful when the blend map is not enough to break up the round shape of the patch.


Ideally the patch has an odd shape and its contours resemble the content of the base image, kind of like on these examples:

Non-tiling rocky ground Texture synth Texture synth sample02a 150x150
Rocky ground blend input Texture synth Texture synth fig06a 150x150
A rocky ground patch Texture synth Texture synth fig06b 150x150
Non-tiling ivy Texture synth Texture synth sample07a 150x150
Ivy blend input Texture synth Texture synth fig05a 150x150
An ivy patch Texture synth Texture synth fig05b 150x150
Non-tiling pebbles Texture synth Texture synth sample05a 150x150
Pebbles blend input Texture synth Texture synth fig04a 150x150
A pebbles patch Texture synth Texture synth fig04b 150x150
Step 4: Patch placement

Now we tweak the way the patches are arranged in the final image.

Patch Size controls the default size of a patch. Due to technical limitations, it works the opposite way as expected: a higher value makes the patches smaller.

Patch Size Chaos sets how much the patch sizes are randomized (they are scaled both up and down) while Patch Rotation Chaos does the same for rotation.


Patch Density is a multiplier: the higher it is the more patches will be placed on the image. Try to keep it as low as possible for faster rendering.


If Base As Background is true then the patches are placed onto the base image. It helps filling the holes which might appear at low Patch Density density values.

Step 5: Patch tinting

The final step is randomizing the colors of each patch.


Tint Amount controls how strong the tinting effect is. Tint Method defines the mode used for changing colors: overlay, soft light, hard light, vivid light. The tint color comes from the base image, from the pixel under the center of a patch.


With Tint Saturation we can tweak how saturated tinting colors are used. In certain cases high Tint Amount could cause over saturated results but that can be compensated through this slider.