Skip to content

Commit 55591e1

Browse files
authored
Merge pull request #148 from NTimmons/master
Added safe math version for native_ functions in OpenCL
2 parents d504ca7 + e67d851 commit 55591e1

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

RadeonRays/src/kernels/CL/common.cl

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,13 @@ float fast_intersect_triangle(ray r, float3 v1, float3 v2, float3 v3, float t_ma
173173
float3 const e1 = v2 - v1;
174174
float3 const e2 = v3 - v1;
175175
float3 const s1 = cross(r.d.xyz, e2);
176+
177+
#ifdef USE_SAFE_MATH
178+
float const invd = 1.0/(dot(s1, e1));
179+
#else
176180
float const invd = native_recip(dot(s1, e1));
181+
#endif
182+
177183
float3 const d = r.o.xyz - v1;
178184
float const b1 = dot(d, s1) * invd;
179185
float3 const s2 = cross(d, e1);
@@ -234,7 +240,13 @@ float2 triangle_calculate_barycentrics(float3 p, float3 v1, float3 v2, float3 v3
234240
float const d11 = dot(e2, e2);
235241
float const d20 = dot(e, e1);
236242
float const d21 = dot(e, e2);
237-
float const invdenom = native_recip(d00 * d11 - d01 * d01);
243+
244+
#ifdef USE_SAFE_MATH
245+
float const invdenom = 1.0 / (d00 * d11 - d01 * d01);
246+
#else
247+
float const invdenom = native_recip(d00 * d11 - d01 * d01);
248+
#endif
249+
238250
float const b1 = (d11 * d20 - d01 * d21) * invdenom;
239251
float const b2 = (d00 * d21 - d01 * d20) * invdenom;
240252
return make_float2(b1, b2);

0 commit comments

Comments
 (0)