BVH - special build mode.

So i got some idea…

we have spatial splits with makes BVH building slowit increase memory but it render faster.
So my question is or is it possible… is it possible to make some type of Low Memory use mode…

How it would work?
U just check Low memory mode. BVH can build very slowly, however the memory usage will be much lower… the rendering speed can be slower 2…

Why this mode? For some really big sceens… Currently Titan have just 6GB memory and many times u have to render on CPU with makes rendering really slowly. So if there would be some special low memory usage mode even if the render would be 50% of speed. it will be still faster then rendering on CPU…

There isn’t a magical slider that balances speed and memory use. If you know of a method that will reduce the memory use for the accelerator at the cost of render speed, maybe. Do you?

  1. special BVH sauce
  2. ???
  3. Profit.

As far as I know, the only way to reduce the memory usage of an acceleration tree would be to rework the code to reduce the complexity and the subsequent number of elements, but then you might have much slower rendering times. However, I think reduced memory usage along with higher rendering speeds may be had by borrowing some of the newer algorithms from the Embree renderer (assuming you can get them working on the GPU).

Another way might be is to use a new approach known as Divide and Conquer, this doesn’t even make use of a tree and has the potential for much lower memory usage, but the rendertimes have the potential to be much longer.

There where some talks on road map that some optymalizations for CPU. for large sceens so that is why i camed with this topic.

The render time can be 200% but u will render it!

Example:

Yeah GTX 780ti is faster then GTX titan but what if the sceen is bigger then memory on 780ti? U can’t use all that speed… so better is less speed but possibility to render biggers sceens bigger textures… less time spend on optymizations etc…

There could be some things done to lower memory requirements. First it’s better handling of textures. They could be tiled and only loaded when needed. Arnold can do it this way and not only it saves memory but also render time (because of pre-processed mipmapping). Second - subdivision on demand - again I believe arnold does this on the fly which speeds BVH building time and saves memory.
Maybe before all this is done, hardware will get to the point, where the memory can be shared with RAM.