Quote: "What gets me is floats used as color values. I discovered this when writing my DX exporter for terrain. I had it figured out soon enough though. Is there any other examples, relevant to DBP and modeling, where floats are used for colors other than DX?"
Shaders tend to use floats instead of byte values, like setting a light or fog colour in a shader tends to be {0.6,0.2,0.6,1.0}, that sort of format. If you look right back, when raytracing was the in-thing, the POV file format used floats for this stuff as well, so you'd think it would be more of a standard. I guess it's better for abstraction, to just multiply the floats by the actual range limit, rather than assuming anything. For instance, if you say that a light uses 0.5 red, that's half of the maximum limit and that's a stable standard to use. As opposed to if you said, a light uses 128 red - that makes the assumtion that 255 is the limit. The data you have suddenly becomes dependant on the 8-bit per channel format - there is no way to know that 255 is the limit, it could be 1024, it could be higher than that. We don't know that 0-255 will be our limits for colouring, so it's safer to use floats. In the next 5 years, we might have double the bit depth for colouring, meaning limits of 0-65,000 (est) - if the standard isn't established, then it's best to abstract it. Imagine running a shader that uses byte values in a 64-bit output - everything would be practically pitch black and translucent.
I guess it figures in HDR rendering a lot, it's easier to say something is twice as bright as it can possibly be by using 2.0 than using 512 - for things like proper bloom shading for example.
When actually storing this data though, you might never want to store colour as floats, it's fine to have human readable shader files, a little bloat is no big deal - but if you were storing an image, or vertex colouring data, you could easily end up using 4 bytes (DWORD float) for each colour element... so using floats means 4 times the data footprint compared with bytes, whether the data needs it or not. Let's face it, 32-bit is plenty for storing a pixel colour, for the time being at least - we don't know what the next standard will be, maybe we'll even see 3D data being imbedded directly into new image formats.
Health, Ammo, and bacon and eggs!