In terms of real-life, not much has changed since my last post here. But I dragged myself to do some coding again, and the parts of the NewtonPlayGround that were still under construction have so far all been finished.
One of the bigger things that have been finished was the Direct X .X fileloader. After creating some complex objects and scenes and importing them into the PlayGround, I noticed that lighting wasn’t looking like it should and so I added a small debug-function to the X-loader for outputting the vertex normals into the vertex color to see if normals were loaded correct. And guess what? I forgot to multiply the normals by the rotation part of the meshes’ matrix, which caused them to point into wrong directions. But that’s fixed now, and especially on highly tesselated objects, lighting looks just fantastic now and I can’t believe that I was satisfied with the wrong normals from my 3DS files all those years.
And I also finally totally forever (hopefully) finished the stencil shadow implementation. For my old Radeon I was using GL_ATI_SEPARATE_STENCIL for rendering shadow volumes in one pass, which isn’t supported on NVidia Hardware. So with my new Geforce6800 I also added GL_EXT_STENCIL_TWO_SIDE to achieve the same one pass shadows as on my old Radeon.
So the next big point on my list towards completing the NewtonPlayGround is to create some totally new scenes, that show what the new version is capable of. Right now, most of the sample scenes are still from older versions and look rather boring, some others already look and play great but could need some more detail. Especially the old scenes that use the vehicle controller were awful, so I started on some complexer scenes that use some interesting vehicles you can drive around. A start (the environment is still from an older version) is the scene you can see on the right, where you can drive a truck with three trailers around a complex environment. The trailers are each made up of a complex compound, so it’s possible to put “stuff” into the trailers and drive that around.
Well, that’s it in terms of programming. As you can guess from my entries, most of my (very rare) spare time and (even more rare) motivation goes into finishing the NewtonPlayGround. On one hand I enjoy working on such a complex piece of software, that basically gives an unlimited amount of possibilities to try out, but on the other hand it won’t leave much room for other stuff. Such a long-term project always turns out to be much more work than one suspects, and I can imagine that the first days after the release will be kind of “horror”, as I’m sure users will find out dozens of bugs/errors/annoyances (well, I’m just a single person, and finding all bugs on such a piece of software with almost no limits on what to do with it is rather impossible) and I’ll have to dig into it again. But one thing I did during work on the PlayGround was to create much basecode that’s reusable. There are dozens of units (a primitive manager, the DirectX loader, a unit for shadow volumes, etc.) that I can later on use in other projects without having to code that stuff again. So on the long run (depends on how real-life continues) I plan on creating a rather innovative (no clone of some existing stuff, like I did with “Napalm Bomber 3D” or “Bean Machine”) arcade game that not only uses physics (well, I learnt much about physics during the last months due to NGD) but also advanced rendering stuff like stencil shadows, shaders, etc. But I don’t have any concrete plans right now (only some ideas floating around), so I can’t post anything specific right now.