diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-05-10 21:49:49 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-05-10 21:55:03 +0300 |
commit | 74228e2cd253c66a9204cc3926243dd8e07edd53 (patch) | |
tree | 9524d11919d6cb8378dc5c80b39f8226e0cd3082 /source/blender/render | |
parent | 81b797af669d21fc01855f94032faa6c92a4fd9b (diff) |
Fix T97945: Cycles baking max distance is wrong
It was effectively sqrt(max_distance) before this fix.
Thanks to Omar Emara for identifying the solution.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/bake.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/source/blender/render/intern/bake.c b/source/blender/render/intern/bake.c index 5953c0f0f8f..bf876163013 100644 --- a/source/blender/render/intern/bake.c +++ b/source/blender/render/intern/bake.c @@ -330,10 +330,10 @@ static bool cast_ray_highpoly(BVHTreeFromMesh *treeData, { int i; int hit_mesh = -1; - float hit_distance = max_ray_distance; - if (hit_distance == 0.0f) { + float hit_distance_squared = max_ray_distance * max_ray_distance; + if (hit_distance_squared == 0.0f) { /* No ray distance set, use maximum. */ - hit_distance = FLT_MAX; + hit_distance_squared = FLT_MAX; } BVHTreeRayHit *hits; @@ -365,16 +365,14 @@ static bool cast_ray_highpoly(BVHTreeFromMesh *treeData, } if (hits[i].index != -1) { - float distance; - float hit_world[3]; - /* distance comparison in world space */ + float hit_world[3]; mul_v3_m4v3(hit_world, highpoly[i].obmat, hits[i].co); - distance = len_squared_v3v3(hit_world, co); + float distance_squared = len_squared_v3v3(hit_world, co); - if (distance < hit_distance) { + if (distance_squared < hit_distance_squared) { hit_mesh = i; - hit_distance = distance; + hit_distance_squared = distance_squared; } } } |