#147927 - kusma - Sun Dec 30, 2007 6:04 pm
Okay, I'm trying to understand a bit about the DS 3D hardware, and especially the vertex specification. Currently, I'm wondering what the real difference between the different ways of specifying vertices are. I assume the best result is given by combining the methods.
Here's my current observations:
Now, here's my questions:
I've searched GBATek, but I can't really find much info on this subject.
Here's my current observations:
- VTX_16: Full precision and range. The biggest and most flexible vertex format in terms of range, precision and usage. Requires 64 bits to specify, where 16bits are used for padding.
- VTX_10: Low precision, low range. Smaller and less accurate version of VTX_16. Fits in a 32bit word, where only two bits are used for padding.
- VTX_XY/VTX_ZX/VTX_YZ: Full precision and range, and no padding. But the same 32-bit word is used for two vertex positions.
- VTX_DIFF: Medium precision, medium range. A bit more tricky to encode than the other methods.
Now, here's my questions:
- Is there a limit to the memory used for specifying vertex data? What prevents me from just using VTX_16 for everything? The gfx-fifo is in main RAM anyway, and I have "plenty" of that (compared to VRAM) ;)
- How big of an impact does vertex-data bandwidth usage have on performance of the geometry processor / the system as a whole?
- Can normals, texture coordinates and/or colors be changed between a pair of vertices specified in a VTX_XY/VTX_ZX/VTX_YZ format?
- Can integer wrap-around in the VTX_DIFF-format be "abused" to take long "leaps" to the other side of the coordinate system?
I've searched GBATek, but I can't really find much info on this subject.