diff options
author | Ken Hughes <khughes@pacific.edu> | 2007-01-26 23:35:57 +0300 |
---|---|---|
committer | Ken Hughes <khughes@pacific.edu> | 2007-01-26 23:35:57 +0300 |
commit | 40d49dec0236174a1b4a8674e5ad508e6ce54d52 (patch) | |
tree | 42cf69914af9820dcb4b9b7b986027e38b183d95 /source/blender/src/meshtools.c | |
parent | d1e40bc6be34517f4fa40c7fea906bb8450cee45 (diff) |
Bugfix for render baking: preserve AO and Ray trace settings when doing
Ambient Occlusion, and check that world is enabled.
Diffstat (limited to 'source/blender/src/meshtools.c')
-rw-r--r-- | source/blender/src/meshtools.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/source/blender/src/meshtools.c b/source/blender/src/meshtools.c index b4be2c4f99f..48f0f46128d 100644 --- a/source/blender/src/meshtools.c +++ b/source/blender/src/meshtools.c @@ -801,10 +801,6 @@ void objects_bake_render(short event) if(event==0) event= G.scene->r.bake_mode; - if(G.scene->r.renderer!=R_INTERN) { - error("Bake only supported for Internal Renderer"); - return; - } if(event>0) { Render *re= RE_NewRender("_Bake View_"); ScrArea *area= biggest_image_area(); @@ -818,19 +814,19 @@ void objects_bake_render(short event) else if(event==2) event= RE_BAKE_AO; else if(event==3) event= RE_BAKE_NORMALS; else event= RE_BAKE_TEXTURE; - - prev_r_raytrace = G.scene->r.mode & R_RAYTRACE; - prev_wo_amb_occ = G.scene->world->mode & WO_AMB_OCC; - - if(event==RE_BAKE_AO) { - /* If raytracing or AO is disabled, switch it on temporarily for baking. */ - if (prev_r_raytrace == 0) G.scene->r.mode |= R_RAYTRACE; - if (prev_wo_amb_occ == 0) G.scene->world->mode |= WO_AMB_OCC; + if(event==RE_BAKE_AO) { if(G.scene->world==NULL) { error("No world set up"); return; } + + /* If raytracing or AO is disabled, switch it on temporarily for baking. */ + prev_r_raytrace = (G.scene->r.mode & R_RAYTRACE) != 0; + prev_wo_amb_occ = (G.scene->world->mode & WO_AMB_OCC) != 0; + + G.scene->r.mode |= R_RAYTRACE; + G.scene->world->mode |= WO_AMB_OCC; } waitcursor(1); @@ -883,10 +879,10 @@ void objects_bake_render(short event) } } + /* restore raytrace and AO */ if(event==RE_BAKE_AO) { - /* switch off temporary raytrace and AO */ - if (prev_r_raytrace == 0) G.scene->r.mode &= ~R_RAYTRACE; - if (prev_wo_amb_occ == 0) G.scene->world->mode &= ~WO_AMB_OCC; + if( prev_wo_amb_occ == 0) G.scene->world->mode &= ~WO_AMB_OCC; + if( prev_r_raytrace == 0) G.scene->r.mode &= ~R_RAYTRACE; } allqueue(REDRAWIMAGE, 0); |