Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Hughes <khughes@pacific.edu>2007-01-26 23:35:57 +0300
committerKen Hughes <khughes@pacific.edu>2007-01-26 23:35:57 +0300
commit40d49dec0236174a1b4a8674e5ad508e6ce54d52 (patch)
tree42cf69914af9820dcb4b9b7b986027e38b183d95 /source/blender/src/meshtools.c
parentd1e40bc6be34517f4fa40c7fea906bb8450cee45 (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.c26
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);