That is why I was asking, to find out what is the most optimized path.
For collision physics, I need to view things in world coordinates, so that I may compare object motion and geometry to see if they collide, where they collide and then handle the collision. A scene/level, will be composed of places, but there are a lot of child objects to the world, such as instances of boxes crates and barrels, they will need to be transformed into world coordinates, which is either redundantly (once for rendering, another for physics calculations), or transformed only one time during rendering but allowing physics calculations access to an objects world transformed state.
Another part that is hard to deal with is games that use the mouse to select objects, this can be done by grabbing the geometry after projection before it is rendered, then see which polygon of which object is closer to the mouse, using simple math. While the other way to deal with that (and I have tried this before), is to use ray tracing, treat the mouse as a ray projected on the view plane through the view volume and see which polygon of which object it hits the closest. This also has diffrent ways of dealing with this in terms of redundant calculations, such as either translating polygons to screen coordinates when OpenGL already does this, or if using ray tracing, translating the ray into object space would be the fastest way, but still require some time setting up the matrices.
My concern as you can see is with redundant calculations. If there is a number of redundant calculations then this may not be such an optimized path as it seems. And I definetly agree that bandwidth is a strong issue with video cards, as I recall reading about the X Box being capable of rendering at high poly counts, but because of bandwidth will be limited, and they recommend using subdividable surfaces (beziers, nurbs, etc) to push the bandwidth down and polycount up. At the price of getting a GeForce today, I’d say that a number of people will have it in their computer some time in the future. So I’ll have to agree with you that caching is probably not the best route to go.
I still have to deal with transparency sorting though. It may not be so bad if I only use transparency minimaly in certain cases (in BSP trees, and particle systems), I could also simply use additive transparency for particle systems instead, but blending quality would be effected, and particle effects probably wont look as good or be limited to certain kinds of particles.