Rendering Competition, Patrick Schiel



Click on image to download movie

Topic 1: Texturing / Bump Mapping


Close-up of the effect:


Picture used for bumpmap:


On this sphere, you can observe the bumpmapping shader effect. The bumpmap picture
is used as a heightmap, and the shader takes additional values for diffuse and
specular lighting, which produces the red color.

From the values of the bumpmap picture, the shader computes the corresponding normal
vectors, together with the lighting, a relief effect is produced.

BumpShader sourcecode


Topic 2: Surface Shading / Cook-Torrance-Shader




On this close-up, you see the effect of a cook-torrance shader. It uses diffuse and
specular as well as ambient lighting, and a reflection effect (you can see on the sphere
reflection of the sky, the grass and other spheres).

The shader is implemented with using fresnel term, reflections are implemented by
computing a reflection ray and continueing the raytrace process, incorporating the
result of the reflected ray into the shader.

CookTorranceShader sourcecode


Topic 3: Surface Shading / Procedural Shader




This shader generates a "cow pattern", similar to the texture used in the course,
but without using a texture. A procedural shader algorithm is used to calculate the pattern.

The implementation uses the perlin noise function and lerping between two colors to produce
the desired effect.

ProceduralCowShader sourcecode


Topic 4: Fun / Physics-Simulation


The movement of the spheres is not pre-calculated, the animation is calculated frame by
frame. First, a set of spheres is generated with random positions and 3dimensional velocity
vectors. For each frame, the velocity vector is added to the position. Additionally, a
fixed gravity value is added each time to the y component of the position vector.

Bouncing is realized by checking the sphere positions, if a sphere hits the ground,
the y component of the velocity vector is negated, plus a little percentage is subtracted
of the velocity vector to simulate the energy loss during the bumping on the ground.

Additional collision checking of the spheres amongst each others was planned, the hit test
is implemented, but unfortunately I couldn't derive the equations to calculate the resulting
velocity vectors of both spheres (I had physics for simulating billard balls, but couldn't
transfer it to 3d space...) :-(

The code responsible for the physics is found in the main raytracer file, lines 176-258
MicroTrace.cxx sourcecode