Following Shaders are implemented, to model polished steel and hematite:
The Lambertian Model just represents diffuse surfaces, and therefor not enough for the two requested materials, because the specular highlights are missing.
With the Phong Lighting Model, there are some specular highlights, but it doesn't look like steel, because the highlights are not anisotropic.
The Blinn-Phong uses instead of the reflected light vector a halfway vector, and therefor hematite looks quite good.
The Ward's Model is a anisotropic model. Steel looks now more realistic than before.
The Cook-Torrance Model is a physics-based reflectance model.
To model rusted steel, I added perlin noise to the Cook-Torrance Model.
The following procedural textures are implemented with perlin noise and the Phong Lighting Model
A 3D Perlin Noise function is used to model wood grain.
A 3D Perlin Noise function is used to model marbel.
A 3D Perlin Noise function is used to model islands with desserts, clouds and water. And bump mapping is also implemented with perlin noise.
To run the framework, you need to start index.html in your browser (recent versions of Firefox and Chrome are supported, don't use IE) It is also live available: http://raytracer.stvturgi.ch/brdf/index.html