Make it work, make it right, make it fast

Over the past several weeks we spent a significant amount of effort on improving performance. The work affected the whole stack, and now we have results to show for our effort.

For example, we enhanced the rendering to rely on compositing render layers. In the picture below, on the left we see a test scene with multiple elements and effects, such as shadow. On the right, we see the scene decomposed into render layers. The exciting part is that each of these layers can be rendered separately on different CPUs and GPUs.

Example of a scene and its decomposition into render layers

This change provides a whole new level of flexibility and performance that we will be able to exploit in the future in many ways.

For the time being, we wanted to improve the performance of the existing tools. Of these, Coder saw the largest improvement. You can now scroll through methods without feeling like it's 1990s.

While there are still quite a number of performance improvements we want to, and know how to tackle in the near future (for example, for Documenter), we reached a decent performance and the environment becomes reasonably usable.

It's worth touching on how we approached the problem: of course, we built custom tools. In particular, we now have a profiler that is able to give reports per each individual frame. Have this level of visibility was invaluable and provides another example of moldable development at work.

Example of profiling rendering