So, this week is about catching up with a lot of fragmented things before I pick off something more meaty next week. Mostly that means fixing bugs and addressing small enhancements. Those pesky artists found another bug in the XSI exporter, the little tykes, so I fixed that yesterday - in this case negative bind scalings on bones were throwing out the export. None of my test cases had that before so it slipped through.
I’m home, and recuperating from sleep deprivation and jetlag. I got the overnight flight back to Heathrow on Saturday evening, which meant only a couple of hours of broken sleep on the plane and a little on the bus to Gatwick where my connecting flight back to Guernsey left from. I operated on Starbucks ‘extra shot of expresso’ options for much of the intervening time, but needless to say I crashed out when I got home.
So, the Ogre BOF at Siggraph went pretty well - around 30 people turned up despite the fact that Siggraph had misprinted ‘OGRE’ as ‘ORGE’ in the little schedule booklet they give you (they got it right everywhere else, so I don’t know what that’s about). I did a quick talk about where OGRE is now (Dagon), and what’s upcoming in Eihort, along with letting people know about Greg’s upcoming book and showing off a few screenshots from recent projects in the showcase forum.
Ok, so I’ve uploaded a bunch of new photos from Siggraph. The main public show is open now too, so I had a browse around that. Nothing that stunning to be honest, at least very little I hadn’t seen already, but it was fun to at least visit all the booths like Pixar, Lucasfilm, Softimage, nVidia etc. Also good to see Blender on the show floor, they were sharing a booth with Gnome and were doing demos of Blender and Inkscape and a few other graphical tools.
Well, I’m pretty damn jet-lagged but I’m here at least. I’ve uploaded a few early pictures, most interestingly from the experimental art section which is just plain bonkers. Robotic teddy bears, virtual fish, hologaphic displays (I liked that one a lot, but a photo wouldn’t do it justice), virtual video walls, it’s all there. So far it’s been a bit of a mixture - I dropped in on the Blender BOF briefly and met Ton for the first time - I wouldn’t exactly class myself as a Blender user yet (I’ve barely touched it) but since I had a little time to kill I decided to go along and say well done on behalf of all the people in the Ogre community who use it.
I’ve been running about like a blue-arsed fly (where does that expression come from?) sorting things out before I have to jump on a plane Saturday morning bound for Siggraph. The Dagon maintenance release went fine, although of course a couple more (minor) bugs were spotted 24 hours afterwards, as usual. I did a little work on the short presentation I’ll make at the BOF and I’ve arranged to borrow a projector from some friends in Boston, because the prices the media equipment guys at Siggraph wanted to charge were daylight robbery.
So, this is the last weekend before I go to Siggraph, and it’s a busy one. I have no fewer than 5 (count ‘em) chapters on my reviewing plate right now, all 2nd or 3rd drafts so not so time consuming as a fresh chapter but it’s a fair bit of time out of my schedule. Tomorrow, I plan to do a new maintenance release for Dagon, 1.2.2. I also added support for binding non-standard vertex attributes in GL (ARB and GLSL) to Eihort yesterday, and beefed up support for the tangent and binormal semantics in our toolset.
I had a go at Blender again tonight, since I’m taking the laptop away and would like a modelling tool to play with on it. XSI would normally be my first choice, but it requires carrying around a dongle that I’d prefer not to lose whilst on my travels. Plus, Blender is a little easier on the system requirements, and I keep meaning to learn it anyway. The user interface wasn’t quite as daunting as I remember, still a little bonkers but workable if you twist your brain into its shape.
I’ve been doing some profiling on critical sections, to see just how much time they do take to acquire and release when there is no contention. On my 3GHz P4, over 200 million successful locks, the average time was 0.000073055 milliseconds, or about 73 nanoseconds. That sounds pretty quick, but in fact it’s a fair amount of time given that a single CPU cycle lasts about a third of a nanosecond - a little over 200 cycles then.
I thought before I got any deeper into the background loading code, I thought I’d do a bit more digging on the performance of the approach I was planning to use to make sure I wasn’t barking up the wrong tree. I was particularly concerned that the major synchronisation primitive in Boost.Thread uses is called a mutex, and many of you will know that mutexes are expensive (in Windows anyway) since they involve a transition from user to kernel mode in all cases.