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:
authorSv. Lockal <lockalsash@gmail.com>2014-04-03 23:34:53 +0400
committerSv. Lockal <lockalsash@gmail.com>2014-04-03 23:35:10 +0400
commitab32a1807dd153723d26a7d53895ed071233dafc (patch)
treef4e27eac2ecab3353ff558f346c1be1ad780c41f /intern/cycles/kernel/svm/svm_noise.h
parentc019ae5ea3a8eb49010de76c14a359c4729bbcf0 (diff)
Cycles: SSE optimization for Voronoi cells texture
Gives 5-6% speedup for Caterpillar_PatazStudio.blend. Reviewed By: brecht, dingto Differential Revision: https://developer.blender.org/D419
Diffstat (limited to 'intern/cycles/kernel/svm/svm_noise.h')
-rw-r--r--intern/cycles/kernel/svm/svm_noise.h14
1 files changed, 6 insertions, 8 deletions
diff --git a/intern/cycles/kernel/svm/svm_noise.h b/intern/cycles/kernel/svm/svm_noise.h
index 282ad191470..91dda8972f9 100644
--- a/intern/cycles/kernel/svm/svm_noise.h
+++ b/intern/cycles/kernel/svm/svm_noise.h
@@ -357,15 +357,13 @@ ccl_device float3 cellnoise_color(float3 p)
return make_float3(r, g, b);
}
#else
-ccl_device float3 cellnoise_color(const float3& p)
+ccl_device __m128 cellnoise_color(const __m128& p)
{
- __m128i v_yxz = quick_floor_sse(_mm_setr_ps(p.y, p.x, p.z, 0.0f));
- __m128i v_xyy = shuffle<1, 0, 0, 3>(v_yxz);
- __m128i v_zzx = shuffle<2, 2, 1, 3>(v_yxz);
- __m128 rgb = bits_to_01_sse(hash_sse(v_xyy, v_yxz, v_zzx));
-
- float3 result = *(float3*)&rgb;
- return result;
+ __m128i ip = quick_floor_sse(p);
+ __m128i ip_yxz = shuffle<1, 0, 2, 3>(ip);
+ __m128i ip_xyy = shuffle<0, 1, 1, 3>(ip);
+ __m128i ip_zzx = shuffle<2, 2, 0, 3>(ip);
+ return bits_to_01_sse(hash_sse(ip_xyy, ip_yxz, ip_zzx));
}
#endif