Monday 26 June 2017

Ogre: Standing on the Coccyxes of Giants

(Editor's note: I'm not entirely sure if that's the correct pluralisation of "Coccyx".)

I'm currently spending a lot of time working with Ogre (for complicated reasons I can't go into). Having spent a bunch of time with a number of graphics engines over the years, it's certainly an interesting prospect. My previous beau was Irrlicht, though that was as much due to its inclusion in ProtonSDK (which has been my project quickstart of choice for most of a decade now) as to any particular quality of the engine. My previous experiences with Ogre had led me to believe it was pretty much more of the same; bargain basement graphics coding mostly interesting due to the ability to fork it and hack it about any damn way I feel like, at the cost of looking like complete and utter crap.

Well, it turns out Ogre's changed somewhat in recent years. While most other freeware Open Source graphics engines have dwindled in a world in which any indie can grab CryEngine, UE or spits Unity* and have shinies aplenty, a rather devoted corps of volunteers has taken on the task of turning Ogre into a modern graphics engine. The Ogre forums are now actually active again, with people asking questions and getting answers from the devs.

And blow me down if they haven't actually succeeded in their quest to some degree, too! The latest Ogre, version 2.1, comes with a fully-realised Physically Based Shading model that currently works on PC and iOS. Examples are included for everything from radiosity models to SSAO. To add to this, the current version of Ogre is without a doubt the most blindingly fast engine I've seen in a very long time: My test mesh subdivision scenes for work hit 12 million polys onscreen before the renormaliser died. I set up a 40x40 grid of 12,000 poly cubes to test the instancing system out; I got 40-50fps in debug. On an iPhone SE.

The core premise behind the current version of Ogre was to implement DOD and AZDO concepts, and honestly, I'd suggest they succeeded in spades. If you want a really fast engine to render some not-quite-bleeding-edge-but-still-very-very-pretty graphics, pick Ogre. Especially if you don't need anything overly complicated like IK or overly hand-holding like automated navmesh generation, and just need something to push your polygons for you!

BUT. Oh, and there was always gonna be one, wasn't there? The current version of Ogre is new and barely stable and oh heavens is it a mess in so many damn ways.

- Want documentation? Either take the months-out-of-date versions from online, or spend ages trying to work out why the doxygen build doesn't seem to work!
- Want a starting barebones project? Literally only just added in - and to make matters worse, it uses the overengineered sample code shell too!
- Want an art pipeline? Hope you can persuade DERGO to run! ... In Blender! Good look persuading your artist to use that!
- Want to do some custom shader work that works with Pbs? Hope you like poring through hundreds of lines of template code!
- Want to use point lights, which is to day BY FAR the most common light type in most interior game environments? Well then do remember to turn on Forward3D - because it's not on by default, and point lights just flat-out don't work without it!

Yeah. It's not a professional development by any stretch of the imagination. By the standards of open source projects it's doing pretty well, and I'm not going to lose sight that this is just a few guys beavering away at this in their spare time. But there are just so many little frustrations with it that spoil what would otherwise be a pretty stunning engine.

All that said, though... with such a dedicated team, I look forward to the possibilities. Right now Ogre users aren't quite standing on the shoulders of giants, but who knows how high we could climb?

---

* I have a powerful irrational loathing for Unity. Part of it is because C# just shouldn't be a scripting language, part of it is because the tools irritate the hell out of me in exactly the way Unreal Editor never has, and part of it is because it's responsible for the recent deluge of some of the worst shovelware I've ever played (as well as being a really obvious millstone around the neck of some of my favourite games). But I'll do a full post about my irrational Unity hate some other time.

1 comment: