diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-03-20 20:17:34 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-03-20 20:17:34 +0400 |
commit | 5ae9ad9113be64ef4f8773fbbabfb75b85d84519 (patch) | |
tree | 78b4f40ece134083acde3f767aae33dda33399f4 /source/blender/render | |
parent | 8b4c1f729b2023d16bd8817521cb9cb033527144 (diff) |
Fix #30420: Metaball Shading Inverted in Raytrace Reflection (Blender Internal)
Issue was caused by negative scale of camera. Metabolls are using procedural
normals and in case of negative scaled camera normals for them shall be flipped.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 7a5f6068773..8e1e9ba8f65 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -2429,7 +2429,7 @@ static void init_render_mball(Render *re, ObjectRen *obr) VlakRen *vlr, *vlr1; Material *ma; float *data, *nors, *orco=NULL, mat[4][4], imat[3][3], xn, yn, zn; - int a, need_orco, vlakindex, *index; + int a, need_orco, vlakindex, *index, is_negative; ListBase dispbase= {NULL, NULL}; if (ob!=find_basis_mball(re->scene, ob)) @@ -2462,6 +2462,8 @@ static void init_render_mball(Render *re, ObjectRen *obr) } } + is_negative = is_negative_m4(re->viewmat); + for(a=0; a<dl->nr; a++, data+=3, nors+=3) { ver= RE_findOrAddVert(obr, obr->totvert++); @@ -2478,7 +2480,8 @@ static void init_render_mball(Render *re, ObjectRen *obr) ver->n[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn; ver->n[2]= imat[2][0]*xn+imat[2][1]*yn+imat[2][2]*zn; normalize_v3(ver->n); - //if(ob->transflag & OB_NEG_SCALE) negate_v3(ver->n); + if(is_negative) + negate_v3(ver->n); if(need_orco) { ver->orco= orco; |