Secondly, I finally broke 20,000 lines of tight C code! I'd celebrate, but I don't have anything to drink and its almost midnight and I'm alone... [crying] [wink]
Notice the smooth shading. I had to calculate and average the vertex normals using my new and untested vector math library. Fortunately its working perfectly so far.
I took a look at the MTR (Doom 3) material format and it looks like it could work. The only thing is that MTR files can contain multiple materials, each with a virtual filename. This works perfectly because my resource loading system already works with virtual pathnames, although it currently enforces a strict heirarchy. Meaning if you scan a resource called data/material.mtr, you can only generate virtual paths below that base path (such as data/material.mtr/wood). I should be able to extend my scanning system to generate paths from the root if you prefix a / to the return value. Another problem is determining that an MTR file is actually an MTR file since they don't store any magic numbers. My system specifically avoids determining type from extensions (for reasons relating to the virtual heirarchy), so I'll have to examine the first few lines to get an accurate identification.
I've got two days left before I have to go to school again. I wanted to get rudimentary animation support done before I head back. That means writing an MD5ANIM loader and working in some vertex shader skinning in two days, along with that MTR loader I didn't finish. I think its doable. Wish me luck!