Hyperion is a 3D render engine for Cinema4D. It was born out of the need to render images for another piece of software I'm writing, called the Dark Room. If you've read up on the Dark Room project, you may be a little familiar with what's coming here.

It turns out, an annoying limitation in Cinema4D meant I had to jump through some tedious hoops to get what I wanted in order for the Dark Room to work the way I wanted it to. However, an alternate way around this was to write my own render engine. This was a big decision to make, as I'd already spent years developing a couple of pieces of custom software, to find myself now undertaking another one. Writing a render engine is no small task.

Now, there's a few ways you can write a render engine. I chose to use real world physics as opposed to something that might cut corners. I wanted to work with with photons and light waves, and not your typical RGB colour values. This is quite of a hill to climb, so it needed a name to suit. I went looking for one I could borrow (eh, use!), and I found one in the Greek Titan of Light. His name was Hyperion, and so the engine took his name.

I didn't just design Hyperion to work around the physical world of light. I'm also including attributes that make it work like a real world camera and lens. This includes thinking about the physical sensor size, the Bayer pattern of the sensor, the lens and field of view, the aperture and focus distance, and to some extent even the size of light waves themselves. There's a few other things tucked in their as well, but you get the gist of it.

There are down sides to building something like this. An engine like this tends to be slower. This is because they need a lot of photon casts to get a clean image. But, they do have up sides. It renders some things naturally - like noise and depth of field. These do depend on your camera settings of course, assuming your engine can work with this kind of information, but there's no 'fakery' going on in that respect. There's no "Gaussian blur" to cheat depth of field. Just plain physics.

The engine is designed to run on the CPU. Though CPU rendering is considered slower than GPU rendering (in some circles it's even labelled a dying art), it is much more universal to get to work on other operating systems. There's also another, more compelling reason I have, but I can't divulge that here yet. You'll need to keep your eye on the projects section in future for this one!

Hyperion is not made to be a final renderer, more a preview engine. But, there's probably no reason why it couldn't head that way in the future if time permits. Below is an example render where you can see the natural noise. It's a bit like film. There's no depth of field in this image, it hadn't been turned on at this point, but I like the soft white feel of it, it's not 'precise' or 'harsh' like computer generated stuff usually is.

Example render from the Hyperion engine. Note the 'film' noise.

Before this engine existed, I was thinking of developing another program (and still 'sorta' am), which was going to use white marble as the default colour. This was in acknowledgement to the days of artists like Michelangelo who spent so long chipping away at statues like David. So I thought it would be a nice touch to use this somewhere, and decided to use it as Hyperion's default rendering colour. This might be where the engine get's it's slightly softer whites from.

Hyperion is only designed to work under the hood for the Dark Room and isn't meant to be a final renderer. That said, it could evolve in the future to become one. After all, it is sitting there in the render settings as an option!

A history of posts on this project can be found below. For more information on the Dark Room, please visit the project page here.

Project post history:

Specular highlights added (latest)
Surface refractions added
Rusty dragon render
Metallic reflections added
Making a new render interface
Fixing object normals
Textures added to renderer
First physically based rendered images
Rendering benchmarks
Fixing circle of confusion
Squeezing out more performance
Building better colour rendition
Further speed improvements
Rendering acceleration structures
Building a render cache system
Denoiser success
Starting on a denoiser algorithm
Clean depth of field render
Dead pixels issue resolved
Rendering true depth of field
I cracked normal maps
Early camera lens attributes
More efficient refraction
First IBL lighting
ACEScg colour space
First surface colours
Huge speed-up
Missing model parts fixed
Sitting in the wings