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:
authorCampbell Barton <ideasman42@gmail.com>2009-12-31 01:35:22 +0300
committerCampbell Barton <ideasman42@gmail.com>2009-12-31 01:35:22 +0300
commit26de5e5f2bc14de8b3015a71492b2d97115b6102 (patch)
treedb1b5aa0fa6a7539e6927ad00cc7de38348762f6 /source/blender/render
parent891e87f8f8acbe4d3ca21a52d5790f0288bbce75 (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.c23
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)