[Bf-blender-cvs] [7f1e982] temp_viewport_fx_merge: use reciprocals for vertex data conversion

Mike Erwin noreply at git.blender.org
Wed Apr 1 20:25:24 CEST 2015


Commit: 7f1e982da1fcb1f36889dcdc74fdfbf43150f202
Author: Mike Erwin
Date:   Wed Apr 1 13:16:46 2015 -0400
Branches: temp_viewport_fx_merge
https://developer.blender.org/rB7f1e982da1fcb1f36889dcdc74fdfbf43150f202

use reciprocals for vertex data conversion

* is faster than / even on modern CPUs. If we care to inline, speed is
a concern here.

===================================================================

M	source/blender/gpu/GPU_immediate.h

===================================================================

diff --git a/source/blender/gpu/GPU_immediate.h b/source/blender/gpu/GPU_immediate.h
index d3160af..c1327ea 100644
--- a/source/blender/gpu/GPU_immediate.h
+++ b/source/blender/gpu/GPU_immediate.h
@@ -655,10 +655,11 @@ BLI_INLINE void gpuMultAlpha(GLfloat factor)
 
 BLI_INLINE void gpuGetColor4fv(GLfloat *color)
 {
-	color[0] = (GLfloat)(GPU_IMMEDIATE->color[0]) / 255.0f;
-	color[1] = (GLfloat)(GPU_IMMEDIATE->color[1]) / 255.0f;
-	color[2] = (GLfloat)(GPU_IMMEDIATE->color[2]) / 255.0f;
-	color[3] = (GLfloat)(GPU_IMMEDIATE->color[3]) / 255.0f;
+	const float recip = 1.0f / 255.0f;
+	color[0] = (GLfloat)(GPU_IMMEDIATE->color[0]) * recip;
+	color[1] = (GLfloat)(GPU_IMMEDIATE->color[1]) * recip;
+	color[2] = (GLfloat)(GPU_IMMEDIATE->color[2]) * recip;
+	color[3] = (GLfloat)(GPU_IMMEDIATE->color[3]) * recip;
 }
 
 BLI_INLINE void gpuGetColor4ubv(GLubyte *color)
@@ -687,9 +688,10 @@ BLI_INLINE void gpuNormal3fv(const GLfloat *v)
 
 BLI_INLINE void gpuNormal3sv(const GLshort *v)
 {
-	GPU_IMMEDIATE->normal[0] = v[0] / (float)SHRT_MAX;
-	GPU_IMMEDIATE->normal[1] = v[1] / (float)SHRT_MAX;
-	GPU_IMMEDIATE->normal[2] = v[2] / (float)SHRT_MAX;
+	const float recip = 1.0f / (float)SHRT_MAX;
+	GPU_IMMEDIATE->normal[0] = v[0] * recip;
+	GPU_IMMEDIATE->normal[1] = v[1] * recip;
+	GPU_IMMEDIATE->normal[2] = v[2] * recip;
 }




More information about the Bf-blender-cvs mailing list