Skip to content

ndouglas/sunhouse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sunhouse

A simple raytracer built in Rust as I work through The Ray Tracer Challenge.

You're of course welcome to poach whatever you want from this, but I'd advise you to probably just walk right on by my step definitions for the Cucumber tests, because they were written in the most absolutely brainless head-down one-thing-at-a-time I'm-the-Juggernaut way possible. Which is arguably fine for this sort of project, but, y'know.

Progress:

  • Tuples, Points, and Vectors
    • Tuples
    • Operations
  • Drawing on a Canvas
    • Representing Colors
    • Implementing Color Operations
    • Creating a Canvas
    • Saving a Canvas
  • Matrices
    • Creating a Matrix
    • Multiplying Matrices
    • The Identity Matrix
    • Transposing Matrices
    • Inverting Matrices
  • Matrix Transformations
    • Translation
    • Scaling
    • Rotation
    • Shearing
    • Chaining Transformations
  • Ray-Sphere Intersections
    • Creating Rays
    • Intersecting Rays With Spheres
    • Tracking Intersections
    • Identifying Hits
    • Transforming Rays and Spheres
    • example5
  • Light and Shading
    • Surface Normals
    • Reflecting Vectors
    • The Phong Reflection Model
    • example6
  • Making a Scene
    • Building a World
    • Defining a View Transformation
    • Implementing a Camera
    • example7
  • Shadows
    • Lighting in Shadows
    • Testing for Shadows
    • Rendering Shadows
    • example8
  • Planes
    • Refactoring Shapes
    • Implementing a Plane
    • example9
  • Patterns
    • Making a Striped Pattern
    • Transforming Patterns
    • Generalizing Patterns
    • Making a Gradient Pattern
    • Making a Ring Pattern
    • Making a 3D Checkered Pattern
  • Reflection and Refraction
    • Reflection
    • Transparency and Refraction
    • Fresnel Effect
  • Cubes
    • Intersecting a Ray With a Cube
    • Finding the Normal on a Cube
  • Cylinders
    • Intersecting a Ray With a Cylinder
    • Finding the Normal on a Cylinder
    • Truncating Cylinders
    • Capped Cylinders
    • Cones
  • Groups
    • Implementing Groups
    • Finding the Normal on a Child Object
    • Using Bounding Boxes to Optimize Large Scenes
  • Triangles
    • Triangles
    • Wavefront OBJ Files
    • Smooth Triangles
    • Smooth Triangles in OBJ Files
  • Constructive Solid Geometry (CSG)
    • Implementing CSG
    • Coloring CSG Shapes
  • Next Steps
    • Area Lights and Soft Shadows
    • Spotlights
    • Focal Blur
    • Motion Blur
    • Anti-Aliasing
    • Texture Maps
    • Normal Perturbation
    • Torus Primitive

About

A simple raytracer built in Rust.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published