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.
Well, as I’d hoped I got New Super Mario Bros today from my wife, and a bit of a cracker it is too. It really does capture the core essence of the enduring all-time classic 2D platformer (in my opinion) Super Mario World, but brings it up to date technically and adds a whole bunch of twists that have been introduced in more recent 3D Mario incarnations, like wall-jumping and butt-stomping.
There’s unlikely to be much coding done this weekend since both my wife and I have birthdays 😀I fixed a couple more bugs and did a Dagon -> Eihort merge last night but that’s probably all I’ll have time for until next week now. I’m part way through some threaded loading enhancements but that’s going to need some more time to mature before it’s totally ready, and I also have to brush up a little more on Collada, since I’ll be demoing Ogre at the Sony/Collada Birds of a Feather at Siggraph in just over a couple of weeks.
Well, yesterday I had an utterly unsporting stomach bug of some sort that took me out for 12 hours. I basically stayed at home all day and didn’t feel up to anything (no, not even my new glossy DS Lite) except a little reading and TV. I even found myself watching the Bloomberg channel at one point without realising, my eyes glazed over, absorbing financial information at some subconscious level in my sickly stupor.
Ok, so I caved. Just over 2 weeks since I bought my wife a white DS Lite, I couldn’t stand it anymore - I bought myself a black one. Going back to the original DS, most noticeably of all the old screen brightness, was painful after having another one in the house chucking photons about with wild abandon. Ok, so I don’t have that much time to play on the DS, but the time I do spend will now be even better 😀Hell, the way I see it is that it’s my birthday at the weekend so this is a present to myself.
The Radeon X1x00 range supposedly supports Shader Model 3. Except of course, that it doesn’t. 😉 ATI have exploited a loophole in the DirectX9 SM3 definition that says to be SM3 compliant, you have to implement vertex texture fetch. However, it gives manufacturers flexibility over which texture formats it can support in the vertex pipeline (nVidia support PF_FLOAT32_R and PF_FLOAT32_RGBA in Ogre pixelformat conventions), and what it doesn’t say is that you have to support at least one texture format as a vertex texturing source.