Squeezing out more performance

Project Page Next project post Post History

Updates: I've edited this post a couple of times now, because I keep finding small improvements. I've now made a new benchmark post here instead, which I'll continue to update instead.

In my efforts to try and make Hyperion as fast as possible (for a CPU renderer), I've managed to squeeze some more time out of it. I can now do the dragon render for one pass in 17.3 seconds. This bumps us up to a 47.6x speedup from our original brute force benchmark.

Now, I know in the future it will get slower again. This is because the colour setting is fairly simple at the moment. There's no specular highlights, reflection or refraction going on. As I add these into the engine, they will hinder performance - some of them quite a bit. This is partly why I've been trying to make it as efficient as I can first. Because the more it's developed, the more the engine will have to do, and the longer the render times will become. Dropping just a few percentage points off a one-pass render can become really beneficial when the time comes for longer renders.

The end goal here is to eventually render a simple character animation using Hyperion. I plan on putting together a render node at some point, a computer with lots of cores like an old Xeon server. The idea is that it can sit down in the garage and render overnight. I'll look at investing in a render node once this engine is working well enough to warrant one.

A few good things happening in some of my projects now. Kind of exciting.

For anyone interested

For those interested, here's a couple of links that have been helping me of late:

Fast bounding box tests (link is for part 1, but part 3 is the one you really want)

Finding and fixing slow code (YouTube)

Emission and Emissive Materials (YouTube)