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:
authorWilliam Leeson <leesonw>2022-01-13 19:12:03 +0300
committerBrecht Van Lommel <brecht@blender.org>2022-01-26 19:51:05 +0300
commita9bb4607660a2f68a78732fd7f5d5280d8075dcb (patch)
treec0234ee456c92c2b121dc461b13337e8f3f3afd0 /intern/cycles/kernel/svm
parent974981a63704e654e620336a3417f8e6fd259cd3 (diff)
Cycles: compute triangle location from barycentric instead of re-intersecting
This is a bit more efficient than what we did before. Ref D12954
Diffstat (limited to 'intern/cycles/kernel/svm')
-rw-r--r--intern/cycles/kernel/svm/bevel.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/intern/cycles/kernel/svm/bevel.h b/intern/cycles/kernel/svm/bevel.h
index 46dfb6631da..57c0288a96f 100644
--- a/intern/cycles/kernel/svm/bevel.h
+++ b/intern/cycles/kernel/svm/bevel.h
@@ -207,15 +207,24 @@ ccl_device float3 svm_bevel(
/* Quickly retrieve P and Ng without setting up ShaderData. */
float3 hit_P;
if (sd->type == PRIMITIVE_TRIANGLE) {
- hit_P = triangle_refine_local(
- kg, sd, ray.P, ray.D, ray.t, isect.hits[hit].object, isect.hits[hit].prim);
+ hit_P = triangle_point_from_uv(kg,
+ sd,
+ isect.hits[hit].object,
+ isect.hits[hit].prim,
+ isect.hits[hit].u,
+ isect.hits[hit].v);
}
# ifdef __OBJECT_MOTION__
else if (sd->type == PRIMITIVE_MOTION_TRIANGLE) {
float3 verts[3];
motion_triangle_vertices(kg, sd->object, isect.hits[hit].prim, sd->time, verts);
- hit_P = motion_triangle_refine_local(
- kg, sd, ray.P, ray.D, ray.t, isect.hits[hit].object, isect.hits[hit].prim, verts);
+ hit_P = motion_triangle_point_from_uv(kg,
+ sd,
+ isect.hits[hit].object,
+ isect.hits[hit].prim,
+ isect.hits[hit].u,
+ isect.hits[hit].v,
+ verts);
}
# endif /* __OBJECT_MOTION__ */