Previously, I began work on a PlanetCell noise-based world map generator. Work on PlanetCell kind of came to a screeching halt, in large part because rendering proved to be so slow. For my purposes, it seemed entirely possible to make decent map render with Blender’s internal renderer(in fact, it has a better selection of procedural textures installed), but I can’t figure out how to composite multiple textures in internal. I recently saw a YouTube video by Andrew Price on speeding up Cycles renders. With that information under my belt, I decided to try some initial speed optimizations for PlanetCell. I’d consider this version 0.1.1 as I haven’t changed any of the actual texture generation procedures. I figure after I’ve got a fully-developed world map generator I should also optimize the OSL code. But for now, I’m just going to go over Mr. Price’s optimizations.
Some optimizations I found to be impossible for my old, sad computer. My GPU, sadly, is not recognized by Blender. So I’m stuck in CPU rendering. This is a big optimization, and I’m hoping my next computer will have a Blender-recognized CUDA device.
I know that I only have one light source and I have no desire to deal with reflections, transmissions and such, so I set all bounces to 0. This makes rendering a bit less processor-intensive. I also set the integrator preset to Direct Light. I unchecked shadows and all caustics and set filter glossy to 1.0 to reduce noise. I reduced samples from 10 to 4. I raised the internal light strength all the way to 800 and cranked the film exposure down to 0.03 to put more light energy on the subject but keep the effective brightness down about where it had been. Also on the film tab, I increased the filter width to 3 pixels. Again to damp down noise. Also, following the advice of Andrew Price, I reduced the tile size to 32×32. I tried 16×16, but this seemed faster.
I did make a few minor alterations to the texture of the planet surface. Inside the Sea Coloring group, I reduced the distorting noise to 1 octave of detail. I also reduced the Detail of the Sea Coloring itself to 2 octaves. To make up for these changes, I doubled the Distortion strength to 0.2. Mostly for aesthetic effect, because I’m still unhappy with the look of the sea areas, I decreased the scale of the Sea Coloring group to 9,6,9 and changed the scale of the internal distortion noise to 3,3,3. Reducing octaves in noise that isn’t really all that satisfactory anyway should speed up rendering. I don’t expect I’ll be adding much additional complexity to the Sea Coloring group. If anything, I may choose to ditch it altogether in favor of a solid color. For now, though this will have to do.
While the Height generator is still unsatisfactory, I’ll save further work on that for another time. In fact, I might prefer generating elevation data externally, loading it as an image texture, and using PlanetCell as merely a beautifying step. I will probably keep the internal generator as an option depending on how well I get it working.
I guess I’ll refer to this as 0.1.2, because I had some work on optimizations which I’ve lost along the way and I did, ultimately, make minor changes to the texture.
While the earlier version took just about all day(6-8 hours as I recall _I ain’t doing it again_), this one took only 43 minutes and 35 seconds. A major improvement! The actual map image produced is shown at the top of the page.
Although my initial thought was that this was too minor an update to bother posting, after seeing how much of a speedup I got, I decided to put it up for those interested. It’s right here on Google Drive.
Please feel free to use the comment system to leave any comments or questions. Thank you,