Textures added to renderer

Project Page Next project post Post History

Since migrating my build environment to a more modern platform and architecture, and incorporating an image handling library into Hyperion, I've had to update some key areas to allow for new changes to be used. The addition of the image library will help me compile my own data containers from low quality JPEGs to higher end RAW camera files.

All of the image data in Hyperion is floating point. This gives lots and lots of room for information, and means I can go brighter than white (useful for HDRI images that light the scene) or blacker than black (which I don't have a use for at the present!).

Here's a render with an HDRI sky (can't see directly, but it is there) and our dragon model, on top of a textured floor. This shows that I'm no longer limited to simple surface colours, and can use texture maps instead.

One pass render with texture maps

Those with a keen eye will spot the noise issue towards the top of the render. I believe this is because of my random number generator not seeding things properly. To be fixed.

The image handling however, has been a real plus. Now I should be able to expand the recently incorporated physically based rendering (PBR) engine to use texture maps to calculate things. This is what will make models look fancy. Which it is doing in the render above, just not in a fancy way, yet.

Here's a cleaner rendered version of the shot above:

Cleaner 200 pass render with texture maps

Hyperion has really moved forward in the last few weeks. From a simple brute force renderer, to a much faster and better looking PBR solution. I suspect it's not far off from being used. I would like to add reflection and refraction back into the mix. They were there, but I removed them while I worked on other parts of the renderer, to keep the render times down when testing.

I will try and make a good looking render when I can showcase the real texture and PBR benefits a little more. Shouldn't be too far away now.

As a last liner, I may have fixed the noise. I seed my generators with a pointer address, then for each generator I multiply it by the thread number. The engine seed then produces its own seeds as they're requested. I noticed in the web page display below that there appears to be some strange noise lines in places, but these are not apparent in the original resolution image. So I think this is an HTML/browser scaling artifact. And if that's the case, it seems to have worked OK:

One pass render to test a new noise generation seed