[Bf-blender-cvs] [054eb9422ca] blender2.8: Gawain: use integer math to convert int16 to int10
Mike Erwin
noreply at git.blender.org
Mon May 22 00:27:24 CEST 2017
Commit: 054eb9422ca5bfea460229374cd8986d297f74c8
Author: Mike Erwin
Date: Sun May 21 18:07:23 2017 -0400
Branches: blender2.8
https://developer.blender.org/rB054eb9422ca5bfea460229374cd8986d297f74c8
Gawain: use integer math to convert int16 to int10
@fclem does this work for you?
===================================================================
M intern/gawain/src/vertex_format.c
===================================================================
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;
}
More information about the Bf-blender-cvs
mailing list