diff --git a/source/blender/render/extern/include/RE_shader_ext.h b/source/blender/render/extern/include/RE_shader_ext.h index c135f7ac023..11b16e2de93 100644 --- a/source/blender/render/extern/include/RE_shader_ext.h +++ b/source/blender/render/extern/include/RE_shader_ext.h @@ -118,7 +118,7 @@ int multitex_ext(struct Tex *tex, float *texvec, float *dxt, float *dyt, int osa /* shaded view and bake */ struct Render; void RE_shade_external(struct Render *re, struct ShadeInput *shi, struct ShadeResult *shr); -void RE_bake_shade_all_selected(struct Render *re, int type); +int RE_bake_shade_all_selected(struct Render *re, int type); #endif /* RE_SHADER_EXT_H */ diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index 142e5ddbdbd..b19911c73e4 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -3725,7 +3725,7 @@ static void do_bake_shade(void *handle, int x, int y, float u, float v) shi->puno= 0; if(bs->quad) - shade_input_set_coords(shi, -u, -v, 0, 3, 4); + shade_input_set_coords(shi, -u, -v, 0, 2, 3); else shade_input_set_coords(shi, -u, -v, 0, 1, 2); @@ -3822,7 +3822,8 @@ static void shade_tface(BakeShade *bs, VlakRen *vlr) /* using object selection tags, the faces with UV maps get baked */ /* render should have been setup */ -void RE_bake_shade_all_selected(Render *re, int type) +/* returns 0 if nothing was handled */ +int RE_bake_shade_all_selected(Render *re, int type) { BakeShade handle; Image *ima; @@ -3874,5 +3875,5 @@ void RE_bake_shade_all_selected(Render *re, int type) free_realtime_image(ima); /* force OpenGL reload */ } } - + return vdone; } diff --git a/source/blender/src/meshtools.c b/source/blender/src/meshtools.c index 28a880efb5b..b823cba61b3 100644 --- a/source/blender/src/meshtools.c +++ b/source/blender/src/meshtools.c @@ -808,6 +808,7 @@ void objects_bake_render(void) event= pupmenu("Bake Selected Meshes %t|Full Render %x1|Ambient Occlusion %x2|Normals %x3|Texture Only %x4"); if(event>0) { Render *re= RE_NewRender("_Bake View_"); + int tot; if(event==1) event= RE_BAKE_ALL; else if(event==2) event= RE_BAKE_AO; @@ -829,11 +830,13 @@ void objects_bake_render(void) RE_Database_Baking(re, G.scene, event); - RE_bake_shade_all_selected(re, event); + tot= RE_bake_shade_all_selected(re, event); RE_Database_Free(re); waitcursor(0); + if(tot==0) error("No Images found to bake to"); + allqueue(REDRAWIMAGE, 0); allqueue(REDRAWVIEW3D, 0); }