You're telepathic
I'm currently fiddling with polygon normal not only for that, but because I've had a second chance to do the conversion 24bit -> INT8, and found that sometimes some term, because of lost precision, is inverted. That is: when in 24bit is "1.0", in signed byte becomes -128, so "-1.0" with the consequence you can imagine. Infact it'll affect
CopyVertexData computations.
I'll update the post with some dumped values to console, to show better that behavior. Maybe you'll be able to see something I don't see.
UPDATE: This is an extract of the console dump of the "x" component when is either "1" or "-1". Tested with Le Mans 24 intro and with your INT8_TO_FLOAT macro applied when fetched as INT8.
- Code: Select all
[...]
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: -1
INT32.x -> float.x: -1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
INT32.x: 1
INT32.x -> float.x: 1.000000
INT8.x: -128
INT8.x -> float.x: -1.000000
[...]