Acceleration Benchmarking

Hi there.
I did some testing of the various acceleration structures in blender 2.53.

On Linux Mint 32 bit, Athlon 64 X2 4200+ 2.2 GHz Dual core, 4 GB DDR RAM.

I used 2 scenes; you can download them here and here.

SCENE 1: Grass, 450K Verts.
Instancing on. (where applicable)
SIMD QBVH -- 0:22.85, 0:22.89, 0:22.35
100M Peak

SIMD SVBVH -- 0:22.28, 0:22.34, 0:22.78
100M Peak

vBVH -- 0:27.30, 0:27.50, 0:27.46
115M Peak

BLI BVH -- 0:37.72, 0:37.71, 0:37.71
100M Peak

Octree (64) -- 0:22.93, 0:22.84, 0:22.81
125M Peak

Octree (128) -- 0:23.30, 0:23.18, 0:23.13
150M Peak

Octree (256) -- 0:29.07, 0:28.68, 0:28.93
165M Peak

Octree (512) -- 0:41.54, 0:41.59, 0:41.15
240M Peak

Auto -- 0:22.80, 0:22.35, 0:22.36
100M Peak
SCENE 2: Raytracing!, 8500 Verts, 8sample glossy reflections, 4sample AO, 4sample area lamp.
No instancing (no need)
SIMD QBVH -- 0:57.61
25M Peak

SIMD SVBVH -- 0:53.59
25M Peak

vBVH -- 1:09.53
25M Peak

BLI BVH -- 2:30.52
25M Peak

Octree (128) -- 3:39.78
35M Peak

Octree (64) -- 2:28.21
25M Peak

Auto -- 0:53.72
25M Peak

So, I’ve provided the results, would someone care to explain them? :slight_smile:

Although I can’t explain the differences, I do know that, well I have experienced very slow performance with BLI BVH and particle rendering, which was dramatically sped up by changing to octree, so I’d say use octree for particle rendering (hair etcera) and switch to BLI BVH for scenes which contain lots of lighting, this is what I do anyway, it just seems faster, even if only a few seconds in some cases.

From some of my testing SVBVH is about the best accelerator for nearly every type of scene and QBVH isn’t quite as fast, but uses less memory in many heavy scenes.

Great stuff AD - saves some time on my side.

I’m just glad auto always seems to pick the best outcome. :slight_smile:

I always turn auto off, there seems to be a 5-10 second wait while it determines what’s best.

On a slightly different note, it would be great if you could select different acceleration types for different render layers, for example if you had all of your particles and hair on one (or several) layers, and meshes on another, then when it comes to rendering it does the first pass with the selected acceleration structure, then it starts a new render, but in the same window with a different accel. structure, and then the layers are composited like normal.