Tuesday, February 15, 2011

Renderman Fun

I created this crazy looking blobby thing using displacement and surface shading in Renderman. I think it came out kinda neat looking.

Wednesday, February 9, 2011

Ray Tracer: Tone Reproduction

This week I implemented Ward and Reinhard tone reproduction algorithms into the ray tracer. Below are tracing made with each. For each rendering, I modified the maximum luminance of the algorithm while keeping the device range set at 100cd/m^2

Ward Model
1 cd/m^2

1000 cd/m^2

10000 cd/m^2
Ward Model
I can't really see any differences between the renderings below.

1 cd/m^2

1000 cd/m^2

10000 cd/m^2


Saturday, February 5, 2011

Ray Casting (Project Update)

In addition to writing a ray tracer I've also been developing a ray casting program that creates Wolfenstein 3D like graphics by utilizing multi-core CPUs and the GPU texture processing to pipeline collision detection. Below is my first GPU pipelined rendering. Instead of using the traditional libraries for rendering, my engine is specifically optimized for this scenario. The GPU is given two textures as input. Traditionally textures are rasterized image that extend the geographic or shading properties of a 3D mesh. However, my engine utilizes textures entirely different.

The first texture handed to the GPU is the set of rays being cast out into the scene. The second texture is a map of the world into which the rays are being cast. Finally, a third texture, a set of doubles representing where the collisions occurred and how far away from the camera they are. This information is processed to create the final image.

In this style of ray casting, there are a few assumptions that can be made which I optimize for. Ray casting actually takes place in 2D space. All calculations up to the final drawing are 2D math. This means that our map is flat and more importantly, the center of every wall drawn is at the center of the image. I can use simple trigonometric properties to find walls distance from the camera (via the GPU) and then do some more operations to draw this portion of the wall.

Here is my first rendering done this way:

Wednesday, February 2, 2011

Checkpoint #7

In this checkpoint I implemented refraction and transparency into the rendering. Here is an image of my latest run.

Rendering with reflection and transparency