diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2015-05-06 23:58:22 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2015-05-07 00:06:47 +0300 |
commit | e73f1035d7e544f83cadceb5a44acfa1e9fb1921 (patch) | |
tree | ee55eda95561d343fc3a7d4255dd3138a91da9fa /source/blender | |
parent | fb0dd596e9a58f095730359a11759c40ea46be44 (diff) |
Fix T44598: blender internal not giving same result on repeated texture bakes.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/render/intern/source/bake.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/render/intern/source/bake.c b/source/blender/render/intern/source/bake.c index b602753dff4..0210bec5ab4 100644 --- a/source/blender/render/intern/source/bake.c +++ b/source/blender/render/intern/source/bake.c @@ -34,6 +34,7 @@ #include "MEM_guardedalloc.h" #include "BLI_math.h" +#include "BLI_rand.h" #include "BLI_threads.h" #include "BLI_utildefines.h" @@ -75,6 +76,8 @@ extern struct Render R; typedef struct BakeShade { + int thread; + ShadeSample ssamp; ObjectInstanceRen *obi; VlakRen *vlr; @@ -737,6 +740,9 @@ static void bake_single_vertex(BakeShade *bs, VertRen *vert, float u, float v) MLoopCol *basevcol; MLoop *mloop; + /* per vertex fixed seed */ + BLI_thread_srandom(bs->thread, vert->index); + origindex = RE_vertren_get_origindex(bs->obi->obr, vert, 0); if (!origindex || *origindex == ORIGINDEX_NONE) return; @@ -811,6 +817,9 @@ static void shade_tface(BakeShade *bs) Image *ima = tface->tpage; float vec[4][2]; int a, i1, i2, i3; + + /* per face fixed seed */ + BLI_thread_srandom(bs->thread, vlr->index); /* check valid zspan */ if (ima != bs->ima) { @@ -1037,6 +1046,8 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_up /* get the threads running */ for (a = 0; a < re->r.threads; a++) { + handles[a].thread = a; + /* set defaults in handles */ handles[a].ssamp.shi[0].lay = re->lay; |