Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorMike Erwin <significant.bit@gmail.com>2017-05-22 01:07:23 +0300
committerMike Erwin <significant.bit@gmail.com>2017-05-22 01:07:23 +0300
commit054eb9422ca5bfea460229374cd8986d297f74c8 (patch)
tree06ddc74df976616205c8f3ee43a93a6b155467fc /intern
parentea31c55b08e0add843f56af0a62d030fd25606f2 (diff)
Gawain: use integer math to convert int16 to int10
@fclem does this work for you?
Diffstat (limited to 'intern')
-rw-r--r--intern/gawain/src/vertex_format.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/intern/gawain/src/vertex_format.c b/intern/gawain/src/vertex_format.c
index d2f89455cbc..963e660dc3d 100644
--- a/intern/gawain/src/vertex_format.c
+++ b/intern/gawain/src/vertex_format.c
@@ -276,6 +276,13 @@ static int quantize(float x)
return clampi(qx, SIGNED_INT_10_MIN, SIGNED_INT_10_MAX);
}
+static int convert_i16(short x)
+ {
+ // 16-bit signed --> 10-bit signed
+ return x >> 6;
+ // TODO: round?
+ }
+
PackedNormal convert_i10_v3(const float data[3])
{
PackedNormal n = { .x = quantize(data[0]), .y = quantize(data[1]), .z = quantize(data[2]) };
@@ -284,10 +291,6 @@ PackedNormal convert_i10_v3(const float data[3])
PackedNormal convert_i10_s3(const short data[3])
{
- PackedNormal n = {
- .x = quantize((float)data[0] / 32767.0f),
- .y = quantize((float)data[1] / 32767.0f),
- .z = quantize((float)data[2] / 32767.0f)
- };
+ PackedNormal n = { .x = convert_i16(data[0]), .y = convert_i16(data[1]), .z = convert_i16(data[2]) };
return n;
}