============================================================================== DreamGL v0.2 - 2003/06/19 - Changes From Previous Version ============================================================================== * Found a great quote in Moller & Haines's "Real Time Rendering": "premature optimization is the root of all evil." -Donald Knuth * Biggest Change == Time. Currently putting in < 8 hours a week :-( * Focus is still on keeping everything Simple and Naiive. - I'm currently learning about 3D rendering, and hopefully so will you. - Lots of Code Simplification and cleaning. I think you will find things MUCH easier to understand in this version. - Not going to worry any more about keeping PS2 and "generic" bits separate. Going to focus on building fastest possible Open/MiniGL for PS2 :-) * Removed intermediate Vertex, Color, and Texture buffers. - Treating everything like a state machine for now...sending things to the DMA buffer as they come. - Vertices are transformed as they arrive, one at a time. - I realize it will need to change again, and introduce some sort of buffering again, when I do culling/clipping/VU1 code, but it's much cleaner this way for now. - Eventually will have a custom "pipe" for each primitive type. * Added DGLcontext member, GLboolean VSync, to let you select whether to wait for vertical retrace before swapping buffers. * Added timer code to DrFreak demo, for benchmarking. * Created TOOLS directory and included BMP2C and MD2C in there. * Created CONTRIB directory. All "contributed" demos and code will be put in there. DrFreak can now be found here. *** Some stuff about the PS2 timers and how to (not?) use them: - DrFreak has 593 triangles. - Was getting weird FPS readings with the different timers. This meant that either my timer code was crap, or the way I'm calculating FPS was crap, or something else. - I sampled two timers (with different resolutions) in the demo (see main_ps2.c), so I could compare the two. They each indicated different FPS. - I thought it could have something to do with waiting for Vertical Retrace, so I disabled it in dglSwapBuffers(). The indicated FPS jumped up to somewhere slightly less than double what they were before, but the two timers still indicated different FPS :( - Thought for a minute about how the timers might actually work, and decided that it was possible my timer samples were crap because they're possibly "overflowing" or re-setting (doh...don't sample AFTER vertical retrace), in other words: DrFreak is taking slightly more than 1/25th of a second (I have a PAL system) to "render" (a single frame...pathetic isn't it:) - I halved the number of triangles to be drawn, and bingo: the indicated FPS's shot up again, and this time they both matched. - This means that during these early stages of DreamGL, I need to make sure not to draw too much, so that it all fits in a single frame. - So, 400 triangles currently drawn around 126 times per second, makes around 50,000 textured and colored triangles per second. We can only get faster from here ... right???????????? * NOTE: Does all this sound right? or is it totally wrong? The Sony documentation is very scarce on this topic. - I've forced the DrFreak demo to only draw the first 400 triangles for now. Unfortunately, this removes the poor guy's head. - Target for DreamGL v0.3: Return DrFreak's 193 triangles to him within a single Frame...and add some more API functionality to the library. Possible features/optimizations: * Reduce DMA buffer usage by around 1/3rd. * Do some matrix and transform optimizations. * Split into separate geometry pipes, with multiple stages each. ============================================================================== DreamGL v0.1 - 2003/05/06 - Changes From Previous Version ============================================================================== * First Version. ------------------------------------------------------------------------------ Tony Saveski (dreamtime) t_saveski@yahoo.com