Sometimes programming is a bit of a chore, sometimes it's just so much fun you don't want to go home at the end of the day. Lately that's how it's been with me. I've just finished up a maintenance release for the Theater Suite and gotten back to some really fun programming. I think I'll talk about the Theater Suite in another posting. I want to get right to the fun stuff!
I've been working again on "Just Seeker"… you know a version that YOU can run on your desktop and not just on a planetarium dome. We should have a new release for you hopefully before summer is over. One of the most exciting new features is the addition of more asteroids. More asteroids? How many more asteroids? Try just over 460,000 asteroids. You will be able to download the latest MPCORB.DAT file from the minor planet center and dump it in the Seeker data directory and visualize every cataloged asteroid at once. Even more exciting, I have three calculation engines to evaluate the orbital elements in real time. CPU based, which uses multiple cores. For small numbers of asteroids (there is a slider to adjust how many are shown) this works quite well and has a good frame rate. There is also a GLSL implementation that uses OpenGL graphics hardware. This implementation can evaluate all 400,000+ asteroids and keep the frame rates very fluid (60+). For Snow Leopard users, we will make a special build available that uses OpenCL. 100+ fps with all 460,000 asteroids. It's got to be one of the coolest things I've ever done to see those guys spinning around with time sped up. I've broken them down into color coded groups too: Near Earth, Potentially Hazardous, Trojans, and "Others". Turning the different groups on and off is a powerful tool for seeing the scale and structure of the asteroids.
Also in Snow Leopard, I'm using Grand Central Dispatch. Wicked easy threading model. Apple marketing overplays it a bit… the technology is basically just an easy to use thread pool manager. Yeah, you could build this yourself, but they've done it for you, and it really encourages you to make better use of multiple cores. Apple has like with OpenCL made GCD an open standard…. perhaps one day we'll see this on Windows compilers. Not holding my breath on that. Unfortunately, I still have to do threads "the hard way" for non Snow Leopard and Windows systems.
Another place in the new Seeker I'm using multiple cores is for satellite computations. I've also added five satellite constellations (one is Space Junk) that consists of just over 5,000 objects. Again color coded you can turn them on and off and it's a power visualization tool. Satellites are a little more intense computationally than asteroids. 5,000 satellites at once is going to really stress your system, and unfortunately they require double precision math all the way through… no graphics card assist… at least not with the current generation of graphics cards.
There's lots of new content on the horizon too. An audio "Factoid" feature will make Seeker well suited for school aged kids who need to do reports on the solar system. There are a few other goodies on the back burner simmering nicely. I'm going to hold back a little just in case they don't make the final cut this round, but they are also way fun to work on, and I can't wait to get them out to everyone.
This brings up a paradigm shift that is starting to happen with Seeker. My initial philosophy was realistic visualization only. Illustrational features (you can't actually see all those asteroids in space, nor the satellites buzzing the earth) was left to TheSkyX. Customer feedback indicates this is a bit narrow minded on my part and I'm slowly starting to see the light. A long range plan is forming for Seeker, and you might say the current version is only the tip of the iceberg of what is yet to come.
Oh, one last note. I'm on twitter now! Follow @opengl for updates about my other OpenGL related work and the class that I teach at Full Sail in Florida.
08-29-2009 10:31 AM