diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-08-21 18:43:51 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-08-21 18:43:51 +0400 |
commit | 8bd7c3fba2749fdf2b16c4f32abf1a35692bc5bb (patch) | |
tree | ec5506895139ed6a09921c60eaf61bd8eb7f2226 /source/blender/render | |
parent | 809fce9d00ecf8eea2c3d2ea52c3de2ec2ede1ee (diff) |
change curve evaluation functions never to modify curve data (ensures thread safety), now initializations has to be done outside evaluation.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 5 | ||||
-rw-r--r-- | source/blender/render/intern/source/pointdensity.c | 1 | ||||
-rw-r--r-- | source/blender/render/intern/source/shadeoutput.c | 1 |
3 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index f34bd352e62..6bd95e824eb 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -3824,6 +3824,11 @@ static GroupObject *add_render_lamp(Render *re, Object *ob) lar->ld2= la->att2; lar->curfalloff = curvemapping_copy(la->curfalloff); + if (lar->curfalloff) { + /* so threads don't conflict on init */ + curvemapping_initialize(lar->curfalloff); + } + if (lar->type==LA_SPOT) { normalize_v3(lar->imat[0]); diff --git a/source/blender/render/intern/source/pointdensity.c b/source/blender/render/intern/source/pointdensity.c index 3c1a18316ca..49c2bf1d053 100644 --- a/source/blender/render/intern/source/pointdensity.c +++ b/source/blender/render/intern/source/pointdensity.c @@ -379,6 +379,7 @@ static void accum_density(void *userdata, int index, float squared_dist) } if (pdr->density_curve && dist != 0.0f) { + curvemapping_initialize(pdr->density_curve); density = curvemapping_evaluateF(pdr->density_curve, 0, density/dist)*dist; } diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c index e209baa49a8..6883710d1be 100644 --- a/source/blender/render/intern/source/shadeoutput.c +++ b/source/blender/render/intern/source/shadeoutput.c @@ -1192,6 +1192,7 @@ float lamp_get_visibility(LampRen *lar, const float co[3], float lv[3], float *d visifac*= lar->distkw/(lar->distkw+lar->ld2*dist[0]*dist[0]); break; case LA_FALLOFF_CURVE: + /* curvemapping_initialize is called from #add_render_lamp */ visifac = curvemapping_evaluateF(lar->curfalloff, 0, dist[0]/lar->dist); break; } |