When you begin a project, any project, you need a purpose. It can be passion, business, you are forced to do it (like those days at high school lab). So why am I doing this thing? Two main reasons:
- Passion. I always wanted to, but for years I have been stuck following other projects.
- To learn. Everybody says, "do not reinvent the wheel"... well most of the times somebody says that is actually saying "Don't challenge me" or "Don't make me look bad"... or actually "Don't waste your time, somebody better than you did it already". However if you want to learn something you got to get your hands dirty. I'm reinventing the wheel because I want to know more about wheels.
Would that be enough to keep my determination high? Hum... probably not.
For many years I have been working in the VFX industry. If you know something about the visual effect for a movie, or a full feature animation project, then you know how much rendering is the bottleneck to most of the creative process.
Unless you are a visionary, you are not truly creative if you don't have interactive tools that let you explore and visualize what you are doing. Imagine a painter doing a portrait with his eyes closed and looking at the canvas for one second every few minutes.
For my entire career I have felt like that. I often need to "play machine", thinking in terms of the tool mechanics to understand how to best do a pure intuitive artistic action. That is not good enough.
You can argue that there are plenty of good renderers out there that features interactive rendering options where you can change parameters and see the result. You could also argue that our of them only a very few have the features needed to do what I do. I could use one of them and be happy... but that would not satify point 1 and 2. Glimpse is my rationalization. The render engine I would like to use, and that probably I will never finish.
In this idealization I would never leave the render engine. The editor (like Maya) will open with it and I will use it as my main visualization tool. Pretty much the way you work with your openGL quad-views. Everything I do in my scene should instantly reflect in the renderer. I'm still miles away from it but if you saw the video in previous post I'm getting closer.
Stop with the boring motivational background information. If you care about rendering you want to know how it's done :)
Glimpse is a traditional path raytracer using a MIS integrator. It implements a couple of physically plausible shading models (a diffuse and a microfactet BRDF beckmann). A few light types, like dome (IBL capable), distant and area with a few shapes.
Glimpse runs on the CPU. Which doesn't make much sense as a visualization tool... It should run on the GPU and be 5x faster. However when I began writing this I didn't have any GPU in hands. But the real reason is that GPUs perform well on small data set that fits in their limiter graphic memory. Typical production scene is way too large to fit in there and as soon as you are forced to stream off core data, bye bye GPU performance. CPUs seems a better candidate for now and they are easier to program.