diff options
author | Campbell Barton <ideasman42@gmail.com> | 2008-03-09 21:06:48 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2008-03-09 21:06:48 +0300 |
commit | 2299f0d9465557ede9d506bf444718eebabe287d (patch) | |
tree | c18dc65a50ef98978cb8d20a75bfa299253dee39 | |
parent | 746888febdfd71dab9edeac3f170f7ab56cb1148 (diff) |
masked/alpha baking commit was missing a null check for imbuf,
made textures also bake alpha
-rw-r--r-- | source/blender/render/intern/source/rendercore.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index 26a237139a3..e8466d603a2 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -1983,13 +1983,14 @@ static void bake_shade(void *handle, Object *ob, ShadeInput *shi, int quad, int shr.combined[0]= shi->r; shr.combined[1]= shi->g; shr.combined[2]= shi->b; + shr.alpha = shi->alpha; } } if(bs->rect_float) { float *col= bs->rect_float + 4*(bs->rectx*y + x); VECCOPY(col, shr.combined); - if (bs->type==RE_BAKE_ALL) { + if (bs->type==RE_BAKE_ALL || bs->type==RE_BAKE_TEXTURE) { col[3]= shr.alpha; } else { col[3]= 1.0; @@ -2002,7 +2003,7 @@ static void bake_shade(void *handle, Object *ob, ShadeInput *shi, int quad, int col[2]= FTOCHAR(shr.combined[2]); - if (bs->type==RE_BAKE_ALL) { + if (bs->type==RE_BAKE_ALL || bs->type==RE_BAKE_TEXTURE) { col[3]= FTOCHAR(shr.alpha); } else { col[3]= 255; @@ -2337,8 +2338,6 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob) get_next_bake_face(NULL); /* do we need a mask? */ - - /*if ((re->r.bake_mode==RE_BAKE_ALL) && (re->r.bake_filter) && (re->r.bake_flag & R_BAKE_CLEAR)==0)*/ if (re->r.bake_filter && (re->r.bake_flag & R_BAKE_CLEAR)==0) usemask = 1; @@ -2346,7 +2345,8 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob) for(ima= G.main->image.first; ima; ima= ima->id.next) { ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL); ima->id.flag |= LIB_DOIT; - ibuf->userdata = NULL; /* use for masking if needed */ + if (ibuf) + ibuf->userdata = NULL; /* use for masking if needed */ } BLI_init_threads(&threads, do_bake_thread, re->r.threads); |