I’ve had ‘improve tangent space tools’ on my TODO for Shoggoth for some time, but I finally managed to find time to do it late last week and today. We’ve supported normal & parallax mapping for ages obviously , but there were a few things we could have done better in the tangents generation process which I’ve now addressed. That’s things like: Separated tangents generation into its own class (TangentSpaceCalc).
We’ve been fortunate enough to be invited to the Google Summer of Code Mentor Summit again this year, and I’m really glad that I can actually attend this time. 😀 In 2006 we only got around 2-3 weeks notice that it was happening (it was obviously pulled together quite late) and I was already travelling around the same time so despite trying to figure out a way to make it work I reluctantly had to decline - Greg (xavier) and Michael (reimpell) attended on OGRE’s behalf instead but I was gutted at having to miss out.
Ok, so despite not getting a great deal of useful advice on the Apple developer forums about the framework issues I’d encountered, through reading, thinking and discussions with Justin I’ve now changed the Ogre build setup so that it copes with both multiple versions, debug and release configurations and eliminates the issues surrounding where to install frameworks. The answer was basically pretty simple. Whilst frameworks would lead you to think of Linux centrally located shared libraries on steroids, what with the ability to be Universal (PPC and x86 compatible), in fact in practice they are much better used like the local shared libraries you would use on Windows apps.
One of the unfortunate things about Mac OS X is that graphics driver support lags behind other platforms. Drivers are bundled with OS X system updates rather than being updated separately and occasionally there are bugs which take longer to get resolved on OS X than on other platforms as a result. We’ve had this problem before, and we appear to have got it again now. In our example media, we have some hardware skinning shaders written in GLSL; we also have Cg and HLSL versions, but the GLSL version is there to prove certain features such as passing arrays of uniforms - bone matrices - to GLSL.
This has been on the cards for months, but I wasn’t able to talk about it until the book was actually out. Consummate software writers the Dietels have just released a new edition of C++ How To Program, published by Prentice Hall, and this time one of the additions is a sizeable chapter on using OGRE and CaseyB’s OgreAL to make a simple game. The C++ How To Program series is very popular, selling over a quarter of a million copies, which is reflected in the fact that this is the sixth edition of the book.
As I’ve blogged before, I’ve spent a fair amount of my spare time recently getting to know OS X development, and one thing I’ve wanted to do is get an automated SDK build going for before the next release goes out. Annoyances with the organisation of framework versions, and issues with driving PackageManager from the command line have all frustrated those efforts, but nevertheless I’ve made progress. Today, however, despite having a mostly working installer I decided to change tack completely and drop PackageManager in favour of a disk image (dmg) instead:
Much as I love using OSX now, I still miss my Windows development tools. Even though I’ve gotten used to using XCode and related tools now, they still have multiple limitations that really annoy me when I’m trying to get things done. I mentioned a little while back that I’ve wrestled with Framework versioning and debug / release configurations. I’m not much closer to solving those in any way I feel is elegant, or even adequate.
Ok, so I’m much more comfortable with XCode than I was to start with. It’s still pretty weird and I personally prefer the way other tools like MSVC organise themselves in terms of project structure and settings, but I can live with it - just. There is, however, one issue which is breaking my balls and I can’t seem to solve it - that is, managing multiple major versions of a framework effectively.
So, I predictably had a ton of stuff to catch up with when I got back, which I’m getting close to clearing now, barring the forums which I’m woefully behind on now. Clearly the discovery of some problems with the Ogre server didn’t help at all, and I spent far too much time at the weekend trying to diagnose and resolve that so the server stayed up. Turns out that someone somehow was deliberately or accidentally forcing Apache into an infinite loop, or at least a very long process, probably because of a bug in some software we’re running, which meant that server process then became unavailable to future requests, causing spawning of new processes.