Trace the Ray – Part 5 (HDR Rendering)

Hey trace-masters, High Dynamic Range rendering is here!

In my fifth assignment, my task was to implement:

  • HDR (High Dynamic Range) rendering capability, which includes
    • Exporting images as .exr files, and
    • Performing tonemapping operation to map HDR images to LDR (Low Dynamic Range), so that their approximate appearances can be shown on non-HDR screens.
  • Two new light types, which are
    • Directional light
    • Spot light

In this post, we will examine them together!

Continue reading “Trace the Ray – Part 5 (HDR Rendering)”

Trace the Ray – Part 3 (Transformations, Instancing, Distribution Ray Tracing)

Hello trace-masters!

In my third assignment, my task was to implement those capabilities to my raytracer:

  • Transformations (Scaling, Rotation, Translation)
  • Instancing
  • Distribution Ray Tracing
    • Depth of Field
    • Motion Blur
    • Soft Shadows
    • Glossy Reflections

Let’s examine them together!

Continue reading “Trace the Ray – Part 3 (Transformations, Instancing, Distribution Ray Tracing)”

Trace the Ray – Part 2 (BVH, MSAA, Transparency)

Hey there!

In my second ray tracing assignment, I have done some performance improvements (reduced the amount of memory used by using pointers, and defined thread count as a macro and also incremented it to 8, the core count of my CPU) and also implemented the following capabilities to my ray tracer:

  • Bounding Volume Hierarcy (BVH)
  • Multisample Anti-Aliasing (MSAA)
  • Transparency (Reflection + Refraction)

In this part of my adventures on tracing rays, I will write about how I implemented those capabilities, what difficulties I had experienced, and how I solved them.

Continue reading “Trace the Ray – Part 2 (BVH, MSAA, Transparency)”