Category: Uncategorized

The Quest for Speed


Originally, the image ‘The Contract’ was conceived incorporating a slight camera move. A moving camera can make the image feel more alive, you feel more ‘there’ when looking at a moving shot than looking at a still image. Sadly, when rendering time came that idea had to be abandoned. It took two days to render one still at 1080 HD, and the volumetric pass (one frame at 720 HD), which was only used for masking purposes, took nearly a week! With render times like these, rendering a ten second clip would take close to 6 years. Goodbye camera move…
Until last week. Since the only light which is lighting the scene is far outside the room and behind the camera the scene has to be rendered with Global Illumination (GI), and GI is slooow. The search is thus for a fast GI renderer. I first tried to use Octane for this, but ran into the limitations of my video card (see my previous post). With this option removed I turned to Kray. Kray is a fast GI renderer for LightWave. Now, I don’t use LightWave that much anymore, I’m in love with my Softimage which I find very flexible and easy to work with, so when creating ‘The Contract’ the thought of using Kray to render it never crossed my mind. Besides I only found out about the excessive render times when it was already too late.
LightWave is still a capable package though with a solid render engine, and being it one of my last options I set myself to the task of converting the scene to LightWave. Softimage has Pointoven with LightWave Object export build in, so transferring the scene from Softimage to LightWave was easy. Next was shader set up. Last December a new version of LightWave came out, LightWave 10, and with it came the VPR. Viewport Preview Render is what it stands for but actually it is a interactive preview renderer, a bit like Octane but using the CPU instead of the GPU. Using this VPR while setting up your shader trees is great, and it speeds up workflow tremendously, no more test renders needed. With the shaders set up it was time to start up Kray.
The week before I had played with this same scene and Kray in trying to make an acceptable clay render, which I finally managed to get with a render time of 45 minutes at 1080 HD. I knew it was gonna be quite a bit longer when I would be adding the shaders, but even 4 hours per frame would be usable.
I have a little render farm consisting of one 2.4 Ghz Q6600 PC with 4GB of RAM. I know, you can’t call that a render farm, you hardly can call it a computer these days, but since I normally work on my Mac Pro, this PC stands idle most of the time and so it has its hands free to do some render work for me. And if it is chugging along rendering day in and day out for a moth or more, that is no problem.
So I set my little PC to work and got a nasty surprise… it took Kray 22 hours at half resolution to complete one frame… This would mean that at full resolution it would take roughly 4 times as much, 4 days per frame which was twice as slow as Mental Ray (the render engine in Softimage). This was not what I had expected. I have to mention that most of that time, more then 20 hours, was used for anti aliasing.
To do a little experiment I changed all shaders from the node trees, which was how I had set them up, to the standard (old) LightWave material. Then I set it to render again with the same settings. Big was my surprise that this time Kray only needed 13 minutes. Something was wrong here. After some research on the Kray forums I was told that some LightWave nodes send huge numbers to Kray, which they are not supposed to do but which can result in huge render times. The trick is to find which shaders are the problem and change those.
This is the point where I am right now. So far I have three options left. One: abandon the project. I could, but I’m not frustrated enough yet to do that. Two: render the camera move with only the standard LightWave material. I won’t do that, the standard LightWave shader just doesn’t produce good enough results, if it comes to this I’d rather go for option one. Three: go hunting for the bugged shader. This should be do-able, I only used three or four different base shaders so the amount of work looks manageable.
It is settled then, I’ll go on another quest, not for speed this time but for bugs. If I succeed I’ll let you know.

Octane Render


Last night I played with the Octane Render for the first time. I bought into the beta program some time ago but never did anything with it sofar. For people not in the know, Octane is a render engine which uses the computers video card to render images and because of that it is insanely fast. It renders so fast that you can interactively change your materials and directly see the results, this makes it really fun to use it and setting up materials becomes a breeze.


Shaders

Octane has three shaders, a diffuse (think Lambert), a glossy (metals, plastic etc) and a specular (glass), a SSS shader is not supported but I read that they plan that for Octane 2. The shader options are standard but they have settings for a thin film. Setting up a shader is easy and fast, the layout is good and there are large sliders to fine tune your surface. The range of surfaces you can simulate with these three shaders is big as the companies website gallery shows and even though the shaders themselves give you plenty of options, you can go even further and build your own node trees. Normally all the different surfaces of your mesh are displayed as one long list in the Node Inspector which you can scroll through to get to the one you need, but Octane has a really handy feature to bypass that, click with the material eyedropper on the material you want to edit in the Render Viewport and that shader is loaded into the Node Inspector.  There are more of those little workflow enhancers in Octane, like the instant shader ball in the Render Viewport when you click a shader node in the Graph Editor or the setting of the focus point by clicking where you want it inside the Render View. Things like these make Octane not only fast ro work with but also a pleasure.


Drawbacks

There are some drawbacks though and they are big. The biggest one is memory. Octane can so far only use the memory on your video card and it fills up pretty fast. As a test I used the models from my ‘The Contract’ image.  The mesh itself (1.6 mil quads) loaded without a problem, but I had to strip away a lot of the models to free up some space for textures. As you can see in the image above, the 877 Mb of my GTX 260 was maxed by this little scene and I couldn’t even use all the textures I wanted.
Another point is that the scene you want to render has to be one single obj file. You can load multiple meshes into Octane, but you can’t render them together in one scene or move them about relative to each other. This means that you have to do the layout of your scene in another application. Octane also can’t render subD meshes so you have to freeze your subD meshes before loading them into Octane, and although Octane can render animations, it does it in a brute force kind of way. I haven’t tested this myself yet but I read that the plug-in for your 3D-program (all major ones are supported) freezes all your meshes and send them over to Octane for every frame of your animation. So Octane has to reload the scene for each frame, with my little test scene loading took about one minute so for a 60 frames animation that will add another hour.


Conclusion

So what do I think of Octane Render? I think it is still early days. In a couple of years many of the limitations will probably be gone as the Cuda* technology matures, video cards get bigger memory and the PCI-E bottleneck gets resolved. Octane is really fun to work with, with lots of handy little features and its renders have an instant beauty over them which I find hard to achieve with other render engines. Octane is certainly production ready, be it on a limited scale but even on this limited scale it makes beautiful images is it a pleasure to work with.

* So far Octane is only for Cuda enabled cards (Nvidia), I don’t know if they will switch to Open CL later.