Procedural Texture Creator Documentation

Beta Version 0.1
This software was created by Pedro Hermosilla Casajus and it is licensed under a Creative Commons 3.0 license.
Contact: ptc.support@cgstarad.com


Table of contents

1. Application Basics
    1.1. Menu Bar
    1.2. Document Editing
    1.3. Build
2. Filters
    2.1. Input Filters
        2.1.1. Primitive Filter
        2.1.2. Turbulence Filter
        2.1.3. Multi-fractal Filter
        2.1.4. Polynomial Filter
        2.1.5. Product Filter
    2.2. Output Filters
        2.2.1. Output Texture Filter
    2.3. Filters
        2.3.1. Sin Filter
        2.3.2. Normal Map Filter
        2.3.3. Color Spline Filter
        2.3.4. Range Scale Filter
        2.3.5. Clamp Filter
        2.3.6. Mod Filter
        2.3.7. Decomposition Filter
        2.3.8. Composition Filter
        2.3.9. Mask Filter
        2.3.10. Combination Filter
3. Samples


1. Application Basics

ProcTexCreator is an application to create procedural textures in a friendly manner. Texture creation works as a multi-block stage where each block contains a pre-built effect that can be combined with other effects. The user interface is composed by:



Fig. 1 - User Interface.

  1. Menu bar.
  2. Filter list.
  3. Texture graph.
  4. Filter properties.
  5. Build buttons.


The main menu allows the user to manage files and build the texture defined in the current file as well as checking this help. This bar is composed by three menus:


1.2. Document Editing

The system stores the textures as documents that specify the way they are built. Each procedural texture is created by combining different blocks (filters) that will define the process that builds the texture. Available filters are shown on the left - Fig. 1 (2) -, and they are added and moved using drag-and-drop operations. A block can be removed by selecting and pressing the "Del" key. Filter properties can also be edited upon selection - Fig. 1 (4) -.


Fig. 2 - Filter representation.

These filters can be connected left clicking on an output connector - Fig. 2 (2) - and dragging the connection to an input connector - Fig. 2 (1) - of another filter.

There are three kinds of inputs/outputs:

To create a valid texture, the user needs to define a valid graph that models the creation process of this texture. A valid graph is a graph where there is at least one output filter, and these filters are connected to some input filters - directly or through other intermediate filters -. An output filter is a filter that doesn't have output connectors, and an input filter is a filter that doesn't have input connectors.


1.3. Build

Once the graph is finished, the texture can be created pressing the Build button - Fig. 1 (5) -. The way the generation is performed can be configured by the user using the Build Setup button. This button opens the Build Setup dialog - Fig. 3 -.


Fig. 3 - Build Setup dialog. The user can determine the seed properties and the output image dimensions.

This dialog allows for the configuration the initial seed and the image dimensions. The initial seed can be chosen as random, and therefore will always be different, or can be a number the user selects - Fig. 3 (1) -. In this dialog the user can also specify the texture size - Fig. 3 (2) -.

When setup is finished, pressing the Build button will create the resulting texture. A progress bar indicates the status of the texture construction. When this finishes, a dialog shows the results - Fig. 4 -.


Fig. 4 - Result dialog.

The resulting texture can be then saved by pressing the save button - Fig. 4 (1) -. The user can also toggle between the different texture results using the top right combo box - see Fig. 4 (2) -.


2. Filters

Filters are processes that operate over a texture.
There are three kinds of filters:


2.1. Input Filters

Inputs filters are filters that don't have input connectors. These filters create textures procedurally, and the result is used as input for other filters.


2.1.1. Primitive Filter

The primitive filter creates a gray texture (only one value per pixel) evaluating a random function for each pixel:

This filter has several properties that can be changed to obtain different results:


2.1.2. Turbulence Filter


Fig. 6 - Example of a turbulence filter result.

The turbulence filter creates a gray texture -only one value per pixel- evaluating a summation -the same function doubling the frequency and amplitude- for each pixel:

This filter has several properties that can be changed to obtain different results:


2.1.3. Multi-fractal Filter


Fig. 7 - Example of a multi-fractal filter result.

The multi-fractal filter creates a gray texture -only one value per pixel- evaluating a product -the same function doubling the frequency and amplitude- for each pixel:

This filter has several properties that can be changed to obtain different results:


2.1.4. Polynomial Filter

The polynomial filter creates a gray texture -only one value per pixel- evaluating a summation -of different functions- for each pixel:

The user can add/delete terms to the summation using the Add/Delete buttons. Each term has its own properties:


2.1.5. Product Filter

The product filter creates a gray texture -only one value per pixel- evaluating a product -of different functions- for each pixel:

The user can add/delete terms to the summation using the Add/Delete buttons. Each term has its own properties:

The result can be scaled modifying the scale factor property.


2.2. Output Filters

These filters are used to create outputs taht can be viewed in the result dialog, and require input. They do not perform changes on the input texture.


2.2.1. Output Texture Filter

This filter has an input connector -gray or color texture-. The texture connected to this filter will be viewed in the result dialog.


2.3. Filters

These kinds of filters have both input and output connectors. These filters take one or more textures as input and, using these, generate one or more output textures.


2.3.1. Sin Filter


Fig. 8 - Example of a sin filter result with a turbulence filter as input.

This filter operates over a gray texture -one channel- and uses its content to displace a sin function:

It has several properties that can be changed to obtain different results:


2.3.2. Normal Map Filter

  
Fig. 9 - Normal map creation from a gray texture.

This filter takes as input one gray texture -one channel- and generates its normal map -color texture-.

It has several properties that can be changed to obtain different results:


2.3.3. Color Spline Filter

This filter takes a gray texture as input and generates a color texture as output. This filter uses a color spline that maps grey values to colors. The user may define the mapping through a widget - Fig. 10 -.


Fig 10 - Color widget.

The user adds/removes a set of points and assigns them a certain color. By changing the point position and color, different results can be obtained.

  
Fig 11 - Result image of apply the color spline in Fig. 11 to a gray texture.

2.3.4. Range Scale Filter

This filter takes as input a texture -gray or color- and it scales the range of values to a new one. The user can define the range of values -min and max- of the input image, or can tell to the filter that it uses the max and min values from the image. The user also can define the range of values of the output image. The value of each pixel is calculated using this function:


2.3.5. Clamp Filter

This filter clamps the pixel values to a defined range.
If the pixel value is greater than the maximum value of the range, the final pixel value will be the maximum value of the range, and if the pixel value is less than the minimum value of the range, the pixel value will be the minimum value of the range.


2.3.6. Mod Filter

This filter makes a mod operation over the pixel values.
The mod operator gives as a result the modulus. For example, if the pixel has a value of 1.3, executing the mod filter with a value of 0.9, the final pixel value will be 0.4.


2.3.7. Decomposition Filter


Fig 12 - Decomposition filter.

This filter takes as input a color texture - 4 channels - and generates four gray textures as output - Fig 12 (R) Red channel, (G) Green channel, (B) Blue channel, (A) Alpha channel -.


2.3.8. Composition Filter


Fig 13 - Composition filter.

This filter takes as input four gray textures - Fig 13 (R) Red channel, (G) Green channel, (B) Blue channel, (A) Alpha channel - and generates one color texture as output.


2.3.9. Mask Filter


Fig 14 - Mask filter.

This filter has three inputs: the first is a gray texture that represents a mask - Fig. 14 (1) -. The other inputs are the textures to combine - Fig. 14 (2) (3) -. The final result is a weighted sum of each component where the weights are used as follows:


2.3.10. Combination Filter


Fig 15 - Combination filter.

This filter combines two input textures - Fig. 15 (1) (2) - using a function selected by the user. The final texture - Fig. 15 (3) - is created using this function:

Where op is the operation selected by the user - Sum, Sub, Mult or Div - and scale1 and scale2 are the scale factors applied to the input values.


3. Samples

Sample textures are located in folder $(Instalation_Folder)/Samples/. You can load these textures and modify some filter properties to view different results. We provided the following samples: