Merge back

Did some more thinking and realized how useful the idea of having hardware and software representations of different buffers and display lists. Not exactly for textures, but think about models and animations: An animation is usually a couple of fixed vertices on bones and joints and a number of flexible vertices or just a number of fixed/flexible ones rotated a few times. But still, the number of flexible elements is quite low compared the the rest which doesn't change at all (even physics-bound chains only change their position and rotation, which's just a single specialized matrix multiplication for each element). Soooo, it's obvious that uploading the fixed parts as display lists will only need require us to do the joints via client-side calls. I'm not even close to beeing an expert in realtime 3D animation, but there's no real way around this except with maybe shaders or so. But to be honest, I can't quite see shaders as something that should be used for stuff like that except if the client doesn't need to do much feedback. Personally, I tend to think that it's nicer to have a bit of client-side control over it cause there are so many events controlling animation steps. Anyway, I'm even more pleased right now after realizing the possibilities of this idea. Keeping in mind that I need to use compilable display list commands will also limit command strings to a more healthy and stable set of features like not changing buffer pointers before execution and so on. I'll try to keep the spirit of this concept for 2D, too, so that everything goes the same way on both dimensions. To contrast the 2D rendering I think I'll implement some software rendering routines as well as the atoms of my ASCII raytracer, so that I only need to call a few things without having to implement this shit a million of times again. Most graphically complex programs working with grids or voxels will need a bunch of software operations I can assure you. And most of the time, these are achievable with some basic rendering routines or just some very specialized ones. So yes, that's it for today. A lot of good things that came to my mind! Always revitalizes my programming spirit.

No comments: