/RayTracer

The Ray Tracer Challenge C# Implementation.

Primary LanguageC#

The Ray Tracer Challenge

This repo contains the result of me working through the book, "The Ray Tracer Challenge: A Test Driven Guide to Your First 3D Renderer" by Jamis Buck.

This is complete up through the end of the book. The rest will be stuff I want to add (see the to-do lists below).

The following are improvements I want to make. Most of the ones relating to patterns come from the "Putting It Together" section of chapter 10, plus some things that POVRay has that I want to add. Once an item is checked, you can assume it's done.

General To-Dos:

  • Add a "cheesy" file parser to get things going in that direction.
  • Add lots of named colors.
  • Add a named set of direction vectors.
  • Add a named set of indices of refraction.
  • Motion blur.
  • Antialiasing.
  • Support PNGs.
  • Support other image formats.

To-Dos for Lights:

  • Area lights/soft shadows.
  • Spotlights.

To-Dos for Cameras:

  • Focal blur.

To-Dos for Surfaces:

  • Texture mapping.
  • Normal perturbation.
  • Torus.
  • Other surfaces (Height fields, SORs, etc.)

To-Dos for Patterns:

  • Add a radial gradient color source.
  • Update all color sources to use nested color sources.
  • Add a perturbing noise function to all color sources.
  • Add a blending color source.
  • Add a color map color source ala POVRay.
  • Add a cyclical flag to the gradient color sources (start over vs bounce back).
  • Update the linear gradient to do multiples, similar to how most graphics engines handle dash patterns. POVRay has this, too.

To-Dos for surface rendering:

  • Add a flag that will opt a surface out of shadow consideration; i.e., the surface does not cast a shadow.

To-Dos for the render file language:

  • Move to the Lex port, when available.
  • Support loops for object graph construction.
  • Support variables for easier surface reuse, among other things.

More to come...