diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-12-16 23:53:12 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-12-16 23:53:12 +0400 |
commit | 3311164b24da61f2967f96d0ee27508a7e2e0267 (patch) | |
tree | 0824417cf3d645f59d98b210c02a4c5ef6c05a48 /source/blender/render | |
parent | 3c8ab559a5bd31fd38e9c5cf9da8505ca28f4887 (diff) |
Math lib: matrix multiplication order fix for two functions that were
inconsistent with similar functions & math notation:
mul_m4_m4m4(R, B, A) => mult_m4_m4m4(R, A, B)
mul_m3_m3m4(R, B, A) => mult_m3_m3m4(R, A, B)
For branch maintainers, it should be relatively simple to fix things manually,
it's also possible run this script after merging to do automatic replacement:
http://www.pasteall.org/27459/python
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 44 | ||||
-rw-r--r-- | source/blender/render/intern/source/envmap.c | 16 | ||||
-rw-r--r-- | source/blender/render/intern/source/pointdensity.c | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/render_texture.c | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/shadbuf.c | 6 | ||||
-rw-r--r-- | source/blender/render/intern/source/shadeinput.c | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/strand.c | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/volumetric.c | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/zbuf.c | 10 |
9 files changed, 43 insertions, 43 deletions
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index d396522b8d0..78f2fe6171b 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -1690,14 +1690,14 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem } /* 2.5 setup matrices */ - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); invert_m4_m4(ob->imat, mat); /* need to be that way, for imat texture */ copy_m3_m4(nmat, ob->imat); transpose_m3(nmat); if(psys->flag & PSYS_USE_IMAT) { /* psys->imat is the original emitter's inverse matrix, ob->obmat is the duplicated object's matrix */ - mul_m4_m4m4(duplimat, psys->imat, ob->obmat); + mult_m4_m4m4(duplimat, ob->obmat, psys->imat); use_duplimat = 1; } @@ -2134,7 +2134,7 @@ static void make_render_halos(Render *re, ObjectRen *obr, Mesh *UNUSED(me), int float vec[3], hasize, mat[4][4], imat[3][3]; int a, ok, seed= ma->seed1; - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); copy_m3_m4(imat, ob->imat); re->flag |= R_HALO; @@ -2429,7 +2429,7 @@ static void init_render_mball(Render *re, ObjectRen *obr) if (ob!=find_basis_mball(re->scene, ob)) return; - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); invert_m4_m4(ob->imat, mat); copy_m3_m4(imat, ob->imat); @@ -2802,7 +2802,7 @@ static void init_render_surf(Render *re, ObjectRen *obr, int timeoffset) nu= cu->nurb.first; if(nu==0) return; - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); invert_m4_m4(ob->imat, mat); /* material array */ @@ -2871,7 +2871,7 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset) dl= disp.first; if(dl==NULL) return; - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); invert_m4_m4(ob->imat, mat); /* material array */ @@ -3256,7 +3256,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset) me= ob->data; - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); invert_m4_m4(ob->imat, mat); copy_m3_m4(imat, ob->imat); negative_scale= is_negative_m4(mat); @@ -3599,7 +3599,7 @@ static void initshadowbuf(Render *re, LampRen *lar, float mat[][4]) /* matrix: combination of inverse view and lampmat */ /* calculate again: the ortho-render has no correct viewinv */ invert_m4_m4(viewinv, re->viewmat); - mul_m4_m4m4(shb->viewmat, viewinv, shb->winmat); + mult_m4_m4m4(shb->viewmat, shb->winmat, viewinv); /* projection */ shb->d= lar->clipsta; @@ -3677,7 +3677,7 @@ static GroupObject *add_render_lamp(Render *re, Object *ob) BLI_addtail(&re->lampren, lar); go->lampren= lar; - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); invert_m4_m4(ob->imat, mat); copy_m3_m4(lar->mat, mat); @@ -4372,7 +4372,7 @@ static void find_dupli_instances(Render *re, ObjectRen *obr) float imat[4][4], obmat[4][4], obimat[4][4], nmat[3][3]; int first = 1; - mul_m4_m4m4(obmat, obr->obmat, re->viewmat); + mult_m4_m4m4(obmat, re->viewmat, obr->obmat); invert_m4_m4(imat, obmat); /* for objects instanced by dupliverts/faces/particles, we go over the @@ -4385,7 +4385,7 @@ static void find_dupli_instances(Render *re, ObjectRen *obr) /* compute difference between object matrix and * object matrix with dupli transform, in viewspace */ copy_m4_m4(obimat, obi->mat); - mul_m4_m4m4(obi->mat, imat, obimat); + mult_m4_m4m4(obi->mat, obimat, imat); copy_m3_m4(nmat, obi->mat); invert_m3_m3(obi->nmat, nmat); @@ -4407,7 +4407,7 @@ static void assign_dupligroup_dupli(Render *re, ObjectInstanceRen *obi, ObjectRe { float imat[4][4], obmat[4][4], obimat[4][4], nmat[3][3]; - mul_m4_m4m4(obmat, obr->obmat, re->viewmat); + mult_m4_m4m4(obmat, re->viewmat, obr->obmat); invert_m4_m4(imat, obmat); obi->obr= obr; @@ -4415,7 +4415,7 @@ static void assign_dupligroup_dupli(Render *re, ObjectInstanceRen *obi, ObjectRe /* compute difference between object matrix and * object matrix with dupli transform, in viewspace */ copy_m4_m4(obimat, obi->mat); - mul_m4_m4m4(obi->mat, imat, obimat); + mult_m4_m4m4(obi->mat, obimat, imat); copy_m3_m4(nmat, obi->mat); invert_m3_m3(obi->nmat, nmat); @@ -4612,7 +4612,7 @@ static void init_render_object(Render *re, Object *ob, Object *par, DupliObject else if(render_object_type(ob->type)) add_render_object(re, ob, par, dob, timeoffset); else { - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); invert_m4_m4(ob->imat, mat); } @@ -4858,7 +4858,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp * See bug: [#28744] - campbell */ for(ob= re->main->object.first; ob; ob= ob->id.next) { /* imat objects has to be done here, since displace can have texture using Object map-input */ - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); invert_m4_m4(ob->imat_ren, mat); copy_m4_m4(ob->imat, ob->imat_ren); /* each object should only be rendered once */ @@ -4930,7 +4930,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp * this is a duplivert/face/particle, or it is a non-animated object in * a dupligroup that has already been created before */ if(dob->type != OB_DUPLIGROUP || (obr=find_dupligroup_dupli(re, obd, 0))) { - mul_m4_m4m4(mat, dob->mat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, dob->mat); obi= RE_addRenderInstance(re, NULL, obd, ob, dob->index, 0, mat, obd->lay); /* fill in instance variables for texturing */ @@ -4957,7 +4957,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp for(psys=obd->particlesystem.first; psys; psys=psys->next) { if(dob->type != OB_DUPLIGROUP || (obr=find_dupligroup_dupli(re, obd, psysindex))) { if(obi == NULL) - mul_m4_m4m4(mat, dob->mat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, dob->mat); obi= RE_addRenderInstance(re, NULL, obd, ob, dob->index, psysindex++, mat, obd->lay); set_dupli_tex_mat(re, obi, dob); @@ -5312,7 +5312,7 @@ static float *calculate_strandsurface_speedvectors(Render *re, ObjectInstanceRen int a; if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(winmat, obi->mat, re->winmat); + mult_m4_m4m4(winmat, re->winmat, obi->mat); else copy_m4_m4(winmat, re->winmat); @@ -5349,7 +5349,7 @@ static void calculate_speedvectors(Render *re, ObjectInstanceRen *obi, float *ve int a, *face, *index; if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(winmat, obi->mat, re->winmat); + mult_m4_m4m4(winmat, re->winmat, obi->mat); else copy_m4_m4(winmat, re->winmat); @@ -5443,7 +5443,7 @@ static int load_fluidsimspeedvectors(Render *re, ObjectInstanceRen *obi, float * velarray = fss->meshVelocities; if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(winmat, obi->mat, re->winmat); + mult_m4_m4m4(winmat, re->winmat, obi->mat); else copy_m4_m4(winmat, re->winmat); @@ -5533,7 +5533,7 @@ static void copy_dbase_object_vectors(Render *re, ListBase *lb) vec= obilb->vectors= MEM_mallocN(2*sizeof(float)*totvector, "vector array"); if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(winmat, obi->mat, re->winmat); + mult_m4_m4m4(winmat, re->winmat, obi->mat); else copy_m4_m4(winmat, re->winmat); @@ -5861,7 +5861,7 @@ void RE_make_sticky(Scene *scene, View3D *v3d) CD_CALLOC, NULL, me->totvert); where_is_object(scene, ob); - mul_m4_m4m4(mat, ob->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, ob->obmat); ms= me->msticky; for(a=0; a<me->totvert; a++, ms++, mvert++) { diff --git a/source/blender/render/intern/source/envmap.c b/source/blender/render/intern/source/envmap.c index 3512ffa865b..a45bb63ff06 100644 --- a/source/blender/render/intern/source/envmap.c +++ b/source/blender/render/intern/source/envmap.c @@ -263,7 +263,7 @@ static void env_rotate_scene(Render *re, float mat[][4], int mode) /* append or set matrix depending on dupli */ if(obi->flag & R_DUPLI_TRANSFORMED) { copy_m4_m4(tmpmat, obi->mat); - mul_m4_m4m4(obi->mat, tmpmat, tmat); + mult_m4_m4m4(obi->mat, tmat, tmpmat); } else if(mode==1) copy_m4_m4(obi->mat, tmat); @@ -312,10 +312,10 @@ static void env_rotate_scene(Render *re, float mat[][4], int mode) if(lar->shb) { if(mode==1) { invert_m4_m4(pmat, mat); - mul_m4_m4m4(smat, pmat, lar->shb->viewmat); - mul_m4_m4m4(lar->shb->persmat, smat, lar->shb->winmat); + mult_m4_m4m4(smat, lar->shb->viewmat, pmat); + mult_m4_m4m4(lar->shb->persmat, lar->shb->winmat, smat); } - else mul_m4_m4m4(lar->shb->persmat, lar->shb->viewmat, lar->shb->winmat); + else mult_m4_m4m4(lar->shb->persmat, lar->shb->winmat, lar->shb->viewmat); } } @@ -393,7 +393,7 @@ static void env_set_imats(Render *re) base= re->scene->base.first; while(base) { - mul_m4_m4m4(mat, base->object->obmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, base->object->obmat); invert_m4_m4(base->object->imat, mat); base= base->next; @@ -422,7 +422,7 @@ static void render_envmap(Render *re, EnvMap *env) normalize_m4(orthmat); /* need imat later for texture imat */ - mul_m4_m4m4(mat, orthmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, orthmat); invert_m4_m4(tmat, mat); copy_m3_m4(env->obimat, tmat); @@ -441,7 +441,7 @@ static void render_envmap(Render *re, EnvMap *env) copy_m4_m4(envre->viewinv, tmat); /* we have to correct for the already rotated vertexcoords */ - mul_m4_m4m4(tmat, oldviewinv, envre->viewmat); + mult_m4_m4m4(tmat, envre->viewmat, oldviewinv); invert_m4_m4(env->imat, tmat); env_rotate_scene(envre, tmat, 1); @@ -528,7 +528,7 @@ void make_envmaps(Render *re) normalize_m4(orthmat); /* need imat later for texture imat */ - mul_m4_m4m4(mat, orthmat, re->viewmat); + mult_m4_m4m4(mat, re->viewmat, orthmat); invert_m4_m4(tmat, mat); copy_m3_m4(env->obimat, tmat); } diff --git a/source/blender/render/intern/source/pointdensity.c b/source/blender/render/intern/source/pointdensity.c index 5b81ea85914..ae3748755ff 100644 --- a/source/blender/render/intern/source/pointdensity.c +++ b/source/blender/render/intern/source/pointdensity.c @@ -116,7 +116,7 @@ static void pointdensity_cache_psys(Render *re, PointDensity *pd, Object *ob, Pa /* init everything */ if (!psys || !ob || !pd) return; - mul_m4_m4m4(obview, re->viewinv, ob->obmat); + mult_m4_m4m4(obview, ob->obmat, re->viewinv); /* Just to create a valid rendering context for particles */ psys_render_set(ob, psys, re->viewmat, re->winmat, re->winx, re->winy, 0); diff --git a/source/blender/render/intern/source/render_texture.c b/source/blender/render/intern/source/render_texture.c index 202c7dcfada..883684c3483 100644 --- a/source/blender/render/intern/source/render_texture.c +++ b/source/blender/render/intern/source/render_texture.c @@ -2087,7 +2087,7 @@ static int ntap_bump_compute(NTapBump *ntap_bump, ShadeInput *shi, MTex *mtex, T if( mtex->texflag & MTEX_BUMP_OBJECTSPACE ) { // TODO: these calculations happen for every pixel! // -> move to shi->obi - mul_m4_m4m4(tmp, shi->obr->ob->obmat, R.viewmat); + mult_m4_m4m4(tmp, R.viewmat, shi->obr->ob->obmat); copy_m3_m4(obj2view, tmp); // use only upper left 3x3 matrix invert_m3_m3(view2obj, obj2view); diff --git a/source/blender/render/intern/source/shadbuf.c b/source/blender/render/intern/source/shadbuf.c index 8cb7009f756..c14a768d1ce 100644 --- a/source/blender/render/intern/source/shadbuf.c +++ b/source/blender/render/intern/source/shadbuf.c @@ -640,7 +640,7 @@ static void shadowbuf_autoclip(Render *re, LampRen *lar) obr= obi->obr; if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(obviewmat, obi->mat, viewmat); + mult_m4_m4m4(obviewmat, viewmat, obi->mat); else copy_m4_m4(obviewmat, viewmat); @@ -777,7 +777,7 @@ void makeshadowbuf(Render *re, LampRen *lar) wsize= shb->pixsize*(shb->size/2.0f); perspective_m4( shb->winmat,-wsize, wsize, -wsize, wsize, shb->d, shb->clipend); - mul_m4_m4m4(shb->persmat, shb->viewmat, shb->winmat); + mult_m4_m4m4(shb->persmat, shb->winmat, shb->viewmat); if(ELEM3(lar->buftype, LA_SHADBUF_REGULAR, LA_SHADBUF_HALFWAY, LA_SHADBUF_DEEP)) { shb->totbuf= lar->buffers; @@ -1987,7 +1987,7 @@ static void isb_bsp_fillfaces(Render *re, LampRen *lar, ISBBranch *root) obr= obi->obr; if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(winmat, obi->mat, shb->persmat); + mult_m4_m4m4(winmat, shb->persmat, obi->mat); else copy_m4_m4(winmat, shb->persmat); diff --git a/source/blender/render/intern/source/shadeinput.c b/source/blender/render/intern/source/shadeinput.c index dd026740c33..580a09d5050 100644 --- a/source/blender/render/intern/source/shadeinput.c +++ b/source/blender/render/intern/source/shadeinput.c @@ -1268,7 +1268,7 @@ void shade_input_set_shade_texco(ShadeInput *shi) zbuf_make_winmat(&R, winmat); if(shi->obi->flag & R_TRANSFORMED) - mul_m4_m4m4(obwinmat, obi->mat, winmat); + mult_m4_m4m4(obwinmat, winmat, obi->mat); else copy_m4_m4(obwinmat, winmat); diff --git a/source/blender/render/intern/source/strand.c b/source/blender/render/intern/source/strand.c index 633c7ca1847..4fc3bb7c5da 100644 --- a/source/blender/render/intern/source/strand.c +++ b/source/blender/render/intern/source/strand.c @@ -848,7 +848,7 @@ int zbuffer_strands_abuf(Render *re, RenderPart *pa, APixstrand *apixbuf, ListBa /* compute matrix and try clipping whole object */ if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(obwinmat, obi->mat, winmat); + mult_m4_m4m4(obwinmat, winmat, obi->mat); else copy_m4_m4(obwinmat, winmat); diff --git a/source/blender/render/intern/source/volumetric.c b/source/blender/render/intern/source/volumetric.c index 4b1894236fc..a46ef3888d8 100644 --- a/source/blender/render/intern/source/volumetric.c +++ b/source/blender/render/intern/source/volumetric.c @@ -245,7 +245,7 @@ static float metadensity(Object* ob, const float co[3]) /* transform co to meta-element */ float tco[3] = {co[0], co[1], co[2]}; - mul_m4_m4m4(mat, ob->obmat, R.viewmat); + mult_m4_m4m4(mat, R.viewmat, ob->obmat); invert_m4_m4(imat, mat); mul_m4_v3(imat, tco); diff --git a/source/blender/render/intern/source/zbuf.c b/source/blender/render/intern/source/zbuf.c index 8b383992e65..8efe23c38f9 100644 --- a/source/blender/render/intern/source/zbuf.c +++ b/source/blender/render/intern/source/zbuf.c @@ -1819,7 +1819,7 @@ void zbuf_make_winmat(Render *re, float winmat[][4]) panomat[2][0]= -re->panosi; panomat[2][2]= re->panoco; - mul_m4_m4m4(winmat, panomat, re->winmat); + mult_m4_m4m4(winmat, re->winmat, panomat); } else copy_m4_m4(winmat, re->winmat); @@ -2138,7 +2138,7 @@ void zbuffer_solid(RenderPart *pa, RenderLayer *rl, void(*fillfunc)(RenderPart*, continue; if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(obwinmat, obi->mat, winmat); + mult_m4_m4m4(obwinmat, winmat, obi->mat); else copy_m4_m4(obwinmat, winmat); @@ -2318,7 +2318,7 @@ void zbuffer_shadow(Render *re, float winmat[][4], LampRen *lar, int *rectz, int continue; if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(obwinmat, obi->mat, winmat); + mult_m4_m4m4(obwinmat, winmat, obi->mat); else copy_m4_m4(obwinmat, winmat); @@ -2557,7 +2557,7 @@ void zbuffer_sss(RenderPart *pa, unsigned int lay, void *handle, void (*func)(vo continue; if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(obwinmat, obi->mat, winmat); + mult_m4_m4m4(obwinmat, winmat, obi->mat); else copy_m4_m4(obwinmat, winmat); @@ -3300,7 +3300,7 @@ static int zbuffer_abuf(Render *re, RenderPart *pa, APixstr *APixbuf, ListBase * continue; if(obi->flag & R_TRANSFORMED) - mul_m4_m4m4(obwinmat, obi->mat, winmat); + mult_m4_m4m4(obwinmat, winmat, obi->mat); else copy_m4_m4(obwinmat, winmat); |