I'm looking for some good learning resources for graphics hardware (and associated low level software). Basically I want to learn more about what goes on underneath the opengl/direcx API layers in terms of how things are implemented.
I familiar with what happens in principle during the various stages of the rendering pipeline (viewing, projection, clipping, rasterization etc).
My goal is to be able to make better and more informed decisions about tradeoffs and potential optimisations when graphics/shader programming with respect to the following kinds of issues;
- view culling
- draw order
- avoiding state changes
- triangles vs pointsprites
- texture sampling
Basically whatever the graphics programmer needs to know about modern graphics hardware in order to become more effective.
I'm not really looking for specific optimisation techniques, rather I need more general knowledge so that I will naturally write more efficient code.