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:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-03-20 20:17:34 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-03-20 20:17:34 +0400
commit5ae9ad9113be64ef4f8773fbbabfb75b85d84519 (patch)
tree78b4f40ece134083acde3f767aae33dda33399f4 /source/blender/render
parent8b4c1f729b2023d16bd8817521cb9cb033527144 (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.c7
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;