[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