Amr A. Awadallah - My Computer Graphics Teapot

For my last assignment in CS248 (Introduction to Computer Graphics) I had to generate a couple of teapots with different textures. That class was really fun and the teapots came out to look very nice, so here they are:

1) Calligraphic art teapot:

This surface is simply brushed silver with an Arabic art calligraphic carved on it. Teapots like this (and similar objects) are actually very famous in Egypt and sold in a place called Khan-ElKhalily. In case you visit Egypt then remember to buy one of these :)

  To achieve this surface I used the following:

  1- Bump mapping to map the normal according to the calligraphic to be carved on the surface.

  2- Turbulence to slightly perturb the normal hence giving the illusion that the silver is brushed.

  3- Reflection shading to give the illusion of the silver being reflective.

These are the bump-map and the reflection-map:

2) Amr's Bumped Teapot:

    This teapot has my name in arabic engraved on it. To do this I used standard bump-map techniques to perturb the normal. I used bi-linear interpolation to find the texture bump derivatives which is very important, specially for points which are far in perspective.  The texture is wrapped around. Only the green component of the bump map is used since it carries a good fraction of the luminance. I used forward differences to get the texture partial derivatives even though central differences may give better results. Also higher order finite differences may be used to improve the derivative estimation.
This is the bump-map used:

3) Marble Teapot:

  This marble teapot is generated using turbulence functions. I use tricolor for the Marble. I compute two noise parameters based on x,y,z then z,x,y. Then I do a double LERP on the three colors to get a final color. I used the MarbleColor() function in page 1046 0f the (Foley-vanDam-Feiner-Hughes) Computer Graphics book, which is sin( x + Turbulence(x, y, x) ). I modified that function to support three colors. Hence my marble has two colors of veins. One of them modulated in the x-direction and the other is modulated in the z-direction.

4) Wood Teapot:

  Also generated by turbulence functions. I oriented the trunk of the tree in the y-axis. The age of the tree (number of cylinders) can is controlled by changing the noise function parameters. I use fsin(noise) to normalize the noise, after all sin(noise) = noise ! I set the diffuse color and specular color to be the same. If the wood is covered with a plastic layer then this effect can also be simulated by setting the specular color to white.

5) Projected Texture Light Shader:

  Here the teapot is illuminated by three point light sources (red, green, blue) at different positions behind a shader-texture. I simply added a transformation applied on the object to orient it in the light co-ordinate system as if it is lying along the z-axis of the light, then used standard projected texture light shader algorithms.
This is the shader-map used:

6) Algorithmic Light Shader:

  Same as above but instead of using shader-map, and algorithmic shader is used. I compute the Euler angles (directions) for the current point on the surface to the light source. Then I  use modulated sinusoidal functions on these angles to decide whether light should pass or not. Note that the light here either can pass or can not pass which leads to the sharp edges of the patterns generated. For a more complicate scene the light can be attenuated or modulated rather than pure pass/no-pass.
Page maintained by Amr A. Awadallah (If you have comments or suggestions, email me at