forked from bartvdbraak/blender
Cycles: Remove unused direction from triangle intersection functions
This argument was unused and got nicely optimized out. But once it starts to be using registers are getting stressed really crazy, causing slow down of render.
This commit is contained in:
parent
8e6e7010bc
commit
394b947a50
@ -226,7 +226,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
|
||||
|
||||
switch(p_type) {
|
||||
case PRIMITIVE_TRIANGLE: {
|
||||
hit = triangle_intersect(kg, &isect_precalc, isect_array, P, dir, PATH_RAY_SHADOW, object, primAddr);
|
||||
hit = triangle_intersect(kg, &isect_precalc, isect_array, P, PATH_RAY_SHADOW, object, primAddr);
|
||||
break;
|
||||
}
|
||||
#if BVH_FEATURE(BVH_MOTION)
|
||||
|
@ -210,7 +210,7 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
|
||||
uint tri_object = (object == OBJECT_NONE)? kernel_tex_fetch(__prim_object, primAddr): object;
|
||||
if(tri_object != subsurface_object)
|
||||
continue;
|
||||
triangle_intersect_subsurface(kg, &isect_precalc, isect_array, P, dir, object, primAddr, isect_t, &num_hits, lcg_state, max_hits);
|
||||
triangle_intersect_subsurface(kg, &isect_precalc, isect_array, P, object, primAddr, isect_t, &num_hits, lcg_state, max_hits);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -269,7 +269,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
|
||||
isect->num_traversal_steps++;
|
||||
#endif
|
||||
kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
|
||||
if(triangle_intersect(kg, &isect_precalc, isect, P, dir, visibility, object, primAddr)) {
|
||||
if(triangle_intersect(kg, &isect_precalc, isect, P, visibility, object, primAddr)) {
|
||||
/* shadow ray early termination */
|
||||
#if defined(__KERNEL_SSE2__)
|
||||
if(visibility == PATH_RAY_SHADOW_OPAQUE)
|
||||
|
@ -213,7 +213,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
|
||||
if((object_flag & SD_OBJECT_HAS_VOLUME) == 0) {
|
||||
continue;
|
||||
}
|
||||
triangle_intersect(kg, &isect_precalc, isect, P, dir, visibility, object, primAddr);
|
||||
triangle_intersect(kg, &isect_precalc, isect, P, visibility, object, primAddr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -241,7 +241,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
|
||||
|
||||
switch(p_type) {
|
||||
case PRIMITIVE_TRIANGLE: {
|
||||
hit = triangle_intersect(kg, &isect_precalc, isect_array, P, dir, PATH_RAY_SHADOW, object, primAddr);
|
||||
hit = triangle_intersect(kg, &isect_precalc, isect_array, P, PATH_RAY_SHADOW, object, primAddr);
|
||||
break;
|
||||
}
|
||||
#if BVH_FEATURE(BVH_MOTION)
|
||||
|
@ -226,7 +226,7 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
|
||||
if(tri_object != subsurface_object) {
|
||||
continue;
|
||||
}
|
||||
triangle_intersect_subsurface(kg, &isect_precalc, isect_array, P, dir, object, primAddr, isect_t, &num_hits, lcg_state, max_hits);
|
||||
triangle_intersect_subsurface(kg, &isect_precalc, isect_array, P, object, primAddr, isect_t, &num_hits, lcg_state, max_hits);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -296,7 +296,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
|
||||
isect->num_traversal_steps++;
|
||||
#endif
|
||||
kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
|
||||
if(triangle_intersect(kg, &isect_precalc, isect, P, dir, visibility, object, primAddr)) {
|
||||
if(triangle_intersect(kg, &isect_precalc, isect, P, visibility, object, primAddr)) {
|
||||
tfar = ssef(isect->t);
|
||||
/* Shadow ray early termination. */
|
||||
if(visibility == PATH_RAY_SHADOW_OPAQUE)
|
||||
|
@ -234,7 +234,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
|
||||
continue;
|
||||
}
|
||||
/* Intersect ray against primitive. */
|
||||
triangle_intersect(kg, &isect_precalc, isect, P, dir, visibility, object, primAddr);
|
||||
triangle_intersect(kg, &isect_precalc, isect, P, visibility, object, primAddr);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/* Triangle/Ray intersections .
|
||||
/* Triangle/Ray intersections.
|
||||
*
|
||||
* For BVH ray intersection we use a precomputed triangle storage to accelerate
|
||||
* intersection at the cost of more memory usage.
|
||||
@ -98,7 +98,6 @@ ccl_device_inline bool triangle_intersect(KernelGlobals *kg,
|
||||
const IsectPrecalc *isect_precalc,
|
||||
Intersection *isect,
|
||||
float3 P,
|
||||
float3 dir,
|
||||
uint visibility,
|
||||
int object,
|
||||
int triAddr)
|
||||
@ -191,7 +190,6 @@ ccl_device_inline void triangle_intersect_subsurface(
|
||||
const IsectPrecalc *isect_precalc,
|
||||
Intersection *isect_array,
|
||||
float3 P,
|
||||
float3 dir,
|
||||
int object,
|
||||
int triAddr,
|
||||
float tmax,
|
||||
|
Loading…
Reference in New Issue
Block a user