diff options
author | Zack Middleton <zturtleman@gmail.com> | 2013-10-29 22:09:06 -0500 |
---|---|---|
committer | Tim Angus <tim@ngus.net> | 2014-06-17 17:43:35 +0100 |
commit | d8225d0663c8eda410138c7ca086fa65912e07ae (patch) | |
tree | 79db0327d1ecc0a2c45f7f98d061249d611b2c57 /src/renderergl2/tr_local.h | |
parent | 16a2c5bed3771b7aedceeef18f15819b7b162c6b (diff) |
Add support for IQM int blend indices and float blend weights
Integer blend indices are converted to bytes at load, ioq3 doesn't allow more than 128 joints.
Heavily based on code by @zippers.
Diffstat (limited to 'src/renderergl2/tr_local.h')
-rw-r--r-- | src/renderergl2/tr_local.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/renderergl2/tr_local.h b/src/renderergl2/tr_local.h index 75b44a11..05662f99 100644 --- a/src/renderergl2/tr_local.h +++ b/src/renderergl2/tr_local.h @@ -1095,10 +1095,18 @@ typedef struct { float *normals; float *tangents; byte *blendIndexes; - byte *blendWeights; + union { + float *f; + byte *b; + } blendWeights; byte *colors; int *triangles; + // depending upon the exporter, blend indices and weights might be int/float + // as opposed to the recommended byte/byte, for example Noesis exports + // int/float whereas the official IQM tool exports byte/byte + byte blendWeightsType; // IQM_BYTE or IQM_FLOAT + int *jointParents; float *jointMats; float *poseMats; |