diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index f36dd0a3aee..bf3e25b1c5a 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -44,7 +44,7 @@ struct ListBase; struct MemFile; #define BLENDER_VERSION 244 -#define BLENDER_SUBVERSION 0 +#define BLENDER_SUBVERSION 1 #define BLENDER_MINVERSION 240 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index c283e5c9fcf..118c2779ac0 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -6462,6 +6462,14 @@ static void do_versions(FileData *fd, Library *lib, Main *main) customdata_version_243(me); } } + if(main->versionfile <= 244) { + Scene *sce; + + if(main->subversionfile < 1) { + for(sce= main->scene.first; sce; sce= sce->id.next) + sce->r.mode |= R_SSS; + } + } /* WATCH IT!!!: pointers from libdata have not been converted yet here! */ /* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */ diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index c81720b5555..250c600fcaf 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -486,6 +486,7 @@ typedef struct Scene { /* threads obsolete... is there for old files */ #define R_THREADS 0x80000 #define R_SPEED 0x100000 +#define R_SSS 0x200000 /* filtertype */ #define R_FILTER_BOX 0 diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index e28a9a56a94..cdeddca5216 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -3483,7 +3483,7 @@ void RE_Database_FromScene(Render *re, Scene *scene, int use_camera_view) project_renderdata(re, projectverto, re->r.mode & R_PANORAMA, 0); /* SSS */ - if(!re->test_break()) + if((re->r.mode & R_SSS) && !re->test_break()) if (re->r.renderer==R_INTERN) make_sss_tree(re); } diff --git a/source/blender/src/previewrender.c b/source/blender/src/previewrender.c index fb9ea19742f..2f7b4754d76 100644 --- a/source/blender/src/previewrender.c +++ b/source/blender/src/previewrender.c @@ -283,6 +283,8 @@ static Scene *preview_prepare_scene(RenderInfo *ri, int id_type, ID *id, int pr_ /* turn on raytracing if needed */ if(mat->mode_l & (MA_RAYTRANSP|MA_RAYMIRROR)) sce->r.mode |= R_RAYTRACE; + if(mat->sss_flag & MA_DIFF_SSS) + sce->r.mode |= R_SSS; /* turn off fake shadows if needed */ /* this only works in a specific case where the preview.blend contains @@ -314,7 +316,7 @@ static Scene *preview_prepare_scene(RenderInfo *ri, int id_type, ID *id, int pr_ } } else { - sce->r.mode &= ~(R_OSA|R_RAYTRACE); + sce->r.mode &= ~(R_OSA|R_RAYTRACE|R_SSS); } for(base= sce->base.first; base; base= base->next) {