Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2011-12-16 23:53:12 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-12-16 23:53:12 +0400
commit3311164b24da61f2967f96d0ee27508a7e2e0267 (patch)
tree0824417cf3d645f59d98b210c02a4c5ef6c05a48 /source/blender/render
parent3c8ab559a5bd31fd38e9c5cf9da8505ca28f4887 (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.c44
-rw-r--r--source/blender/render/intern/source/envmap.c16
-rw-r--r--source/blender/render/intern/source/pointdensity.c2
-rw-r--r--source/blender/render/intern/source/render_texture.c2
-rw-r--r--source/blender/render/intern/source/shadbuf.c6
-rw-r--r--source/blender/render/intern/source/shadeinput.c2
-rw-r--r--source/blender/render/intern/source/strand.c2
-rw-r--r--source/blender/render/intern/source/volumetric.c2
-rw-r--r--source/blender/render/intern/source/zbuf.c10
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);