From: eihrul Date: Fri, 30 Sep 2011 14:05:06 +0000 (+0000) Subject: better fix for skeletal no-bones case X-Git-Tag: xonotic-v0.6.0~163^2~175 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=d67118fd26deb0852127704246098681e0ac5399;p=xonotic%2Fdarkplaces.git better fix for skeletal no-bones case git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@11377 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/mod_skeletal_animatevertices_generic.c b/mod_skeletal_animatevertices_generic.c index f95277af..00ab435d 100644 --- a/mod_skeletal_animatevertices_generic.c +++ b/mod_skeletal_animatevertices_generic.c @@ -16,18 +16,6 @@ void Mod_Skeletal_AnimateVertices_Generic(const dp_model_t * RESTRICT model, con float m[12]; const blendweights_t * RESTRICT weights; - if (!model->surfmesh.num_vertices) - return; - - if (!model->num_bones) - { - if (vertex3f) memcpy(vertex3f, model->surfmesh.data_vertex3f, model->surfmesh.num_vertices*sizeof(float[3])); - if (normal3f) memcpy(normal3f, model->surfmesh.data_normal3f, model->surfmesh.num_vertices*sizeof(float[3])); - if (svector3f) memcpy(svector3f, model->surfmesh.data_svector3f, model->surfmesh.num_vertices*sizeof(float[3])); - if (tvector3f) memcpy(tvector3f, model->surfmesh.data_tvector3f, model->surfmesh.num_vertices*sizeof(float[3])); - return; - } - //unsigned long long ts = rdtsc(); bonepose = (float12_t *) Mod_Skeletal_AnimateVertices_AllocBuffers(sizeof(float12_t) * (model->num_bones*2 + model->surfmesh.num_blends)); boneposerelative = bonepose + model->num_bones; diff --git a/mod_skeletal_animatevertices_sse.c b/mod_skeletal_animatevertices_sse.c index 8c41b600..f575d245 100644 --- a/mod_skeletal_animatevertices_sse.c +++ b/mod_skeletal_animatevertices_sse.c @@ -20,18 +20,6 @@ void Mod_Skeletal_AnimateVertices_SSE(const dp_model_t * RESTRICT model, const f const blendweights_t * RESTRICT weights; int num_vertices_minus_one; - if (!model->surfmesh.num_vertices) - return; - - if (!model->num_bones) - { - if (vertex3f) memcpy(vertex3f, model->surfmesh.data_vertex3f, model->surfmesh.num_vertices*sizeof(float[3])); - if (normal3f) memcpy(normal3f, model->surfmesh.data_normal3f, model->surfmesh.num_vertices*sizeof(float[3])); - if (svector3f) memcpy(svector3f, model->surfmesh.data_svector3f, model->surfmesh.num_vertices*sizeof(float[3])); - if (tvector3f) memcpy(tvector3f, model->surfmesh.data_tvector3f, model->surfmesh.num_vertices*sizeof(float[3])); - return; - } - num_vertices_minus_one = model->surfmesh.num_vertices - 1; //unsigned long long ts = rdtsc(); diff --git a/model_alias.c b/model_alias.c index 6982028e..4ddcfc97 100644 --- a/model_alias.c +++ b/model_alias.c @@ -63,6 +63,19 @@ void *Mod_Skeletal_AnimateVertices_AllocBuffers(size_t nbytes) void Mod_Skeletal_AnimateVertices(const dp_model_t * RESTRICT model, const frameblend_t * RESTRICT frameblend, const skeleton_t *skeleton, float * RESTRICT vertex3f, float * RESTRICT normal3f, float * RESTRICT svector3f, float * RESTRICT tvector3f) { + + if (!model->surfmesh.num_vertices) + return; + + if (!model->num_bones) + { + if (vertex3f) memcpy(vertex3f, model->surfmesh.data_vertex3f, model->surfmesh.num_vertices*sizeof(float[3])); + if (normal3f) memcpy(normal3f, model->surfmesh.data_normal3f, model->surfmesh.num_vertices*sizeof(float[3])); + if (svector3f) memcpy(svector3f, model->surfmesh.data_svector3f, model->surfmesh.num_vertices*sizeof(float[3])); + if (tvector3f) memcpy(tvector3f, model->surfmesh.data_tvector3f, model->surfmesh.num_vertices*sizeof(float[3])); + return; + } + #ifdef SSE_POSSIBLE if(r_skeletal_use_sse_defined) if(r_skeletal_use_sse.integer)