diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-12-31 01:35:22 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-12-31 01:35:22 +0300 |
commit | 26de5e5f2bc14de8b3015a71492b2d97115b6102 (patch) | |
tree | db1b5aa0fa6a7539e6927ad00cc7de38348762f6 /source/blender/render | |
parent | 891e87f8f8acbe4d3ca21a52d5790f0288bbce75 (diff) |
fix crash on baking from selected to active, however need to validate this against 2.4x to make sure displacement for eg gives the same results
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/rendercore.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index c55632b36dc..23875b536c9 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -2254,9 +2254,7 @@ static int bake_check_intersect(Isect *is, int ob, RayFace *face) static int bake_intersect_tree(RayObject* raytree, Isect* isect, float *start, float *dir, float sign, float *hitco, float *dist) { - //TODO - assert( 0 ); -#if 0 + //TODO, validate against blender 2.4x, results may have changed. float maxdist; int hit; @@ -2266,15 +2264,20 @@ static int bake_intersect_tree(RayObject* raytree, Isect* isect, float *start, f else maxdist= FLT_MAX + R.r.bake_biasdist; - //TODO normalized direction? - VECADDFAC(isect->start, start, dir, -R.r.bake_biasdist); - isect->dir[0] = dir[0]*sign; - isect->dir[1] = dir[1]*sign; - isect->dir[2] = dir[2]*sign; + /* 'dir' is always normalized */ + VECADDFAC(isect->start, start, dir, -R.r.bake_biasdist); + + isect->vec[0] = dir[0]*maxdist*sign; + isect->vec[1] = dir[1]*maxdist*sign; + isect->vec[2] = dir[2]*maxdist*sign; + isect->labda = maxdist; + /* TODO, 2.4x had this... + hit = RE_ray_tree_intersect_check(R.raytree, isect, bake_check_intersect); + ...the active object may NOT be ignored in some cases. + */ hit = RE_rayobject_raycast(raytree, isect); - //TODO bake_check_intersect if(hit) { hitco[0] = isect->start[0] + isect->labda*isect->vec[0]; hitco[1] = isect->start[1] + isect->labda*isect->vec[1]; @@ -2284,8 +2287,6 @@ static int bake_intersect_tree(RayObject* raytree, Isect* isect, float *start, f } return hit; -#endif - return 0; } static void bake_set_vlr_dxyco(BakeShade *bs, float *uv1, float *uv2, float *uv3) |