I am trying to DOF blur particles (rendered as voxels) from a PRTLoader. They are taking forever to render, and seem to be mainly single threaded (using only one core).
In the docs it says this: (In order to increase the number of threads to more than the number of cores in the machine)
The number of chunks is controlled by the Preferences > System Preferences > Multi-Thread Particle Sorting and Drawing settings and defaults to the number of CPUs.
I cannot find that setting. However, that section of the docs seems to say it applies to Krak 1.6.0. Is that setting no longer around?
Voxel Rendering is somewhat multi-threaded, but not to the same degree as Point rendering. So there is nothing you can switch on or off to make it faster.
That being said, going to the Krakatoa v2.3 Preferences dialog and expanding the System Preferences rollout clearly shows 4 checkbuttons under the “Performance” group, controlling various stages of rendering (Loading, Sorting, Lighting, Drawing). Not sure why you are not seeing them. They just won’t help you. If you need to do Voxel rendering with native DOF, you will have to wait for as long as it takes.
Krakatoa Voxel Rendering is generally slower than Point (Particle) rendering. The only reason for it to be in Krakatoa it that it uses way less memory than regular atmospheric rendering (e.g. Krakatoa Atmospheric Effect, or VRay / FumeFX volumetric rendering). We needed it for a production sequence that could not be rendered even with 64GB of RAM using FumeFX and VRay, so we added it. It used only about 600MB of RAM and saved our behinds. But it is a “secondary” mode and has its limitations. We would love to get rid of it and replace it with something better (and faster) in the future.
You might want to try the Krakatoa Atmospheric Effect in conjunction with VRay. See if it would render faster with DOF there. It might use a lot more memory though.
I created an awfully simple test which might not be representative of real-world performance. But I took a teapot, turned it into a PRT Volume with only 70K particles, created a Camera and a Target Spot and rendered with DOF in Voxel mode. Then I tried to recreate the same look using VRay and Krakatoa Atmospheric Effect. Set the VRay sampling to Adaptive Subdivision as it works better with atmospherics, reduced the sampling to -2/0 for speed and tried to render with DOF. My results were 3.4 seconds for Krakatoa Voxel vs. around 10 seconds for VRay v2.3 (VRay 3 might be a lot faster though). Of course, VRay used all cores. With more extreme settings and heavier scenes, this relationship might change, so I would be very interested in hearing your experience…
BTW, I initially got into Voxels on this project because we get VERY close to an object, and pull almost through it. It was taking a ton of particles to get the detail up close. Though I may revisit this.
In 1.6, we used our own hand-written threading management so we could limit the threads. Then for 2.0 we switched to the Intel’s TBB library which at that point did not allow us to control the number of threads (it always used the maximum and did its own internal management). Recently, a newer version of TBB came along that would allows us to control the number of threads, so Krakatoa SR and MY (and the C4D Beta) got those controls. KMX should get this in a later update.