Computer graphics student Martin Mirbauer got hands-on with software development during his internship with Chaos’ Innovation Lab. He shares his experiences.
Chaos is always on the lookout for rising academic stars in computer graphics. After all, both V-Ray and Corona began as university projects, and fresh young talent can often contribute ideas and implement features that can help make good rendering software even better.
In this blog post, Martin Mirbauer, a Czech student who interned at Chaos’ Bulgaria offices for three months, reflects on what it was like to join the team and what he learned during his internship.
How the collaboration started
Jaroslav Křivánek, the co-founder of the company behind Corona Renderer, was my advisor and associate professor at CUNI. Aside from academia, he’s also worked in the visualization industry, bringing inspiration from there to his research topics.
CUNI is part of an EU-wide research grant scheme called START. Me and my fellow students applied for it in 2020, with the topic SkyGAN – Generating Clouds with a Neural Network. This project included a research internship abroad, so I took the opportunity to go to Chaos’ offices in Sofia, Bulgaria.
Chaos was a great match for the topic. Asen Atanasov, who works at the Chaos Innovation Lab, was also a remote PhD student at CUNI who started under Jaroslav’s supervision. We met at the Eurographics Symposium on Rendering (EGSR) in 2022, where we both presented our research. We realized we had common interests, and after the paperwork was done, we got started on our collaboration.
The total length of the internship was three months, from early November 2022 until the end of February 2023, with a three-week break around Christmas.
Innovating and improving AI Sky
My first task was to compare the pros and cons of the neural network approach I was working on with the procedurally generated volumetric clouds in V-Ray 6, released a few months before my internship started. Asen and I shared our knowledge and identified improvements that could be made for both techniques. As the visual quality of the procedural approach was better, I continued working on SkyGAN to improve its fidelity, with more stable training in higher resolutions and extending the resolution by tiling.
In addition, I got to explore the current implementation in V-Ray, and worked on smaller features in VRaySun/Sky, such as porting contrails, density, seeds, and night sky (WIP) to become familiar with it. Seeing some of the features in use is a great achievement.
As AI and data-driven methods are booming, I was asked to prepare three presentations from this field at internal developer sessions: a basic introduction to machine learning and neural networks, a presentation of my current research project (SkyGAN), and a deeper dive into one application: processing 3D objects with neural networks.
I could also consult or just “rubberduck” on projects others were working on, as well as newly-starting ones. I liked being useful (hopefully!), as well as gaining experience on how applied research works in a real-world company, compared to academia.
The overall experience
Apart from the work, I got to know the Innovation Lab team and various perks at the office: an office building with an inspiring view of the Vitosha mountain, free breakfasts twice a week, an orange juice machine, and table football, to name a few.
Despite the size of the company, the atmosphere is great, without the corporate stereotypes I heard of elsewhere. There is the freedom to do whatever helps you focus and be productive, which is much needed, especially for researchers.
This internship involved many firsts for me: being abroad and on my own for more than just a few days, working in a larger company, being responsible for my time-management and work-life balance, learning the basics of Bulgarian, and getting around in a new environment.
During my internship, I learned many things, ranging from interesting to extremely useful.
I found out which volumetric computations are feasible to do in real-time, which in an offline path tracer and what parts of the computation can be cached to make it more efficient. I also got an idea how a production code looks compared to research code in academia, which is sometimes inefficient or just a “proof of concept”. Finally, I saw how applied research is done in a real company. This was an especially valuable experience for me as it will likely be very close to my future job after I finish my studies.
Immediately after the internship I will be working, together with my colleagues at CUNI, on writing an article with the current SkyGAN improvements, which we should submit into a scientific journal by the end of the START research project.
After that I will continue my research and start writing a dissertation thesis to finish my Ph.D.