mirror of
https://github.com/recp/cglm.git
synced 2026-02-17 03:39:05 +00:00
optimize individual translates
This commit is contained in:
@@ -75,25 +75,49 @@ glm_translate(mat4 m, vec3 v) {
|
|||||||
CGLM_INLINE
|
CGLM_INLINE
|
||||||
void
|
void
|
||||||
glm_translate_x(mat4 m, float to) {
|
glm_translate_x(mat4 m, float to) {
|
||||||
|
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||||
|
_mm_store_ps(m[3],
|
||||||
|
_mm_add_ps(_mm_mul_ps(_mm_load_ps(m[0]),
|
||||||
|
_mm_set1_ps(to)),
|
||||||
|
_mm_load_ps(m[3])))
|
||||||
|
;
|
||||||
|
#else
|
||||||
vec4 v1;
|
vec4 v1;
|
||||||
glm_vec4_scale(m[0], to, v1);
|
glm_vec4_scale(m[0], to, v1);
|
||||||
glm_vec4_add(v1, m[3], m[3]);
|
glm_vec4_add(v1, m[3], m[3]);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
CGLM_INLINE
|
CGLM_INLINE
|
||||||
void
|
void
|
||||||
glm_translate_y(mat4 m, float to) {
|
glm_translate_y(mat4 m, float to) {
|
||||||
|
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||||
|
_mm_store_ps(m[3],
|
||||||
|
_mm_add_ps(_mm_mul_ps(_mm_load_ps(m[1]),
|
||||||
|
_mm_set1_ps(to)),
|
||||||
|
_mm_load_ps(m[3])))
|
||||||
|
;
|
||||||
|
#else
|
||||||
vec4 v1;
|
vec4 v1;
|
||||||
glm_vec4_scale(m[1], to, v1);
|
glm_vec4_scale(m[1], to, v1);
|
||||||
glm_vec4_add(v1, m[3], m[3]);
|
glm_vec4_add(v1, m[3], m[3]);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
CGLM_INLINE
|
CGLM_INLINE
|
||||||
void
|
void
|
||||||
glm_translate_z(mat4 m, float to) {
|
glm_translate_z(mat4 m, float to) {
|
||||||
|
#if defined( __SSE__ ) || defined( __SSE2__ )
|
||||||
|
_mm_store_ps(m[3],
|
||||||
|
_mm_add_ps(_mm_mul_ps(_mm_load_ps(m[2]),
|
||||||
|
_mm_set1_ps(to)),
|
||||||
|
_mm_load_ps(m[3])))
|
||||||
|
;
|
||||||
|
#else
|
||||||
vec4 v1;
|
vec4 v1;
|
||||||
glm_vec4_scale(m[2], to, v1);
|
glm_vec4_scale(m[2], to, v1);
|
||||||
glm_vec4_add(v1, m[3], m[3]);
|
glm_vec4_add(v1, m[3], m[3]);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* scale */
|
/* scale */
|
||||||
|
|||||||
Reference in New Issue
Block a user