Prototype for Version 2 - Part 1: Introduction

Posted on Oct 29, 2015
Development Lightmetrica Prototype


From this article, I’ll attempt to explain the detail of the prototyping system. The purpose of the prototyping system is to try possible architectural or design direction. The system is implemented from scratch irrespective to the current implementation of version 1.

Rendering system tends to be a complex software system. So in this prototying system, I tried to utilizes various software libraries for some components such as ray-triangle intersection or HDR image manipulation, which allowed me to focus on the implementation of the light transport algorithm itself with a limited time resource.

As a design principle of the rendering system, I tried to focus mainly on the correctness of the implementation rather than the performance. The implementation of the complex rendering techniques often involves in tricky bugs and takes considerable amount of time to fix it. I tried to keep simple design removing unnecessary optimizations. For instance, caching contribution value of a light path is a common technique for the optimization. However such a duplicated state could easily introduce tricky bugs, notable increase in the complexity of codes, or unnecessary code bloats. In my system, such a cached value is removed intensionally and alway recomputed when it is needed.

In the next article, I’ll explain the system overview of the prototyping framework.