# 10.7 - Texture Mapping Using Procedures - Continued¶

Amazing “textures” that simulate the surfaces of real world objects such
as cloth, wood, marble, and water can be created with just the right
mixture of gradients, patterns combined at different scales, and noise.
However, finding the correct gradients, patterns, scales, and noise for
a specific “look and feel” is non-trivial. The job of
“texture designers” is to find the right combinations of these methods for
a specific situation.
The next time you watch a movie that contains computer graphics imagery (CGI),
take special note of the “visual effects artists” in the trailing credits.
It takes special people who have both technical and artistic talents to
design *procedural texture maps*.

This lesson introduces some tools and resources for further investigation
into *procedural texture maps*. If this topic has “peeked your interest” then
please survey the resources below. Otherwise you can skip this lesson and proceed
to texture mapping transformations in the next lesson.

## Shadershop¶

Toby Schachman has created a very cool tool called **Shadershop**. It allows
you to combine functions in interesting ways and see the results in both
visual and equation format. A description and video tutorials for
Shadershop can be found at http://tobyschachman.com/Shadershop/. The actual
tool is web based and can be used at http://www.cdglabs.org/Shadershop/.

There are many ways to combine functions and Shadershop will help you better understand the possibilities. For example:

- Add functions,
`f1(x) + f2(x)` - Multiply functions,
`f1(x) * f2(x)` - Compose functions,
`f1( f2(x) )` - Minimum,
`min(f1(x), f2(x))` - Maximum,
`max(f1(x), f2(x))`

And of course the f1(x) and f2(x) functions can be any function from a large set of possibilities, such as sin(), floor(), abs(), etc.

## Useful Functions¶

Speaking of combining functions to create interesting patterns, several researchers have created lists of foundational functions for the generation of patterns (and other things). Check some of them out:

- Golan Levin :
- Polynomials : http://www.flong.com/texts/code/shapers_poly/
- Exponential : http://www.flong.com/texts/code/shapers_exp
- Circular & Elliptical : http://www.flong.com/texts/code/shapers_circ
- Bezier and Parametric : http://www.flong.com/texts/code/shapers_bez

- Inigo Quilez : http://www.iquilezles.org/www/articles/functions/functions.htm
- Jari Komppa : http://sol.gfxile.net/interpolation/index.html

## Graph Toy¶

Another nice visualization tool for complex functions is Inigo Quilez’s “Graph Toy” at http://www.iquilezles.org/apps/graphtoy/. Note that you can enter any complex equation into each of 6 function edit boxes and plot them on top of each other.

## Book of Shaders¶

Patricio Gonzalez Vivo has created an excellent interactive textbook on shaders called The Book of Shaders. It will take you significant time to work through the entire book, but it has great content.

## Conclusion¶

If you are interested in pursuing more advanced computer graphics topics,
investigating *procedural texture mapping* and *shader programming* is a
great place to start. You can create some pretty amazing visual effects!