diff options
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/extern/include/RE_pipeline.h | 2 | ||||
-rw-r--r-- | source/blender/render/intern/source/initrender.c | 10 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 12 |
3 files changed, 16 insertions, 8 deletions
diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 6d994b36f26..e1131ca2be4 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -200,6 +200,8 @@ void RE_SetWindow(struct Render *re, rctf *viewplane, float clipsta, float clipe void RE_SetOrtho(struct Render *re, rctf *viewplane, float clipsta, float clipend); void RE_SetPixelSize(struct Render *re, float pixsize); +void RE_SceneRenderSize(struct Scene *scene, int *width, int *height); + /* option to set viewmatrix before making dbase */ void RE_SetView(struct Render *re, float mat[4][4]); diff --git a/source/blender/render/intern/source/initrender.c b/source/blender/render/intern/source/initrender.c index 2c431bf869c..25dedf57ca1 100644 --- a/source/blender/render/intern/source/initrender.c +++ b/source/blender/render/intern/source/initrender.c @@ -493,9 +493,11 @@ void RE_SetEnvmapCamera(Render *re, Object *cam_ob, float viewscale, float clips void RE_SetCamera(Render *re, Object *cam_ob) { CameraParams params; + float overscan = re->scene->r.overscan; /* setup parameters */ BKE_camera_params_init(¶ms); + params.overscan = overscan; BKE_camera_params_from_object(¶ms, cam_ob); params.use_fields = (re->r.mode & R_FIELDS); @@ -523,6 +525,14 @@ void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, flo copy_m4_m4(mat, re->winmat); } +void RE_SceneRenderSize(Scene *scene, int *width, int *height) +{ + float overscan_factor = 1.0f + scene->r.overscan / 100.0f; + + *width = (scene->r.size*scene->r.xsch*overscan_factor) / 100; + *height = (scene->r.size*scene->r.ysch*overscan_factor) / 100; +} + /* ~~~~~~~~~~~~~~~~ part (tile) calculus ~~~~~~~~~~~~~~~~~~~~~~ */ diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 1a3d07f9aeb..401d561a09d 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -1568,8 +1568,7 @@ static void render_scene(Render *re, Scene *sce, int cfra) /* exception: scene uses own size (unfinished code) */ if (0) { - winx = (sce->r.size * sce->r.xsch) / 100; - winy = (sce->r.size * sce->r.ysch) / 100; + RE_SceneRenderSize(sce, &winx, &winy); } /* initial setup */ @@ -2559,8 +2558,7 @@ static int render_initialize_from_main(Render *re, Main *bmain, Scene *scene, Sc * r.border is the clipping rect */ /* calculate actual render result and display size */ - winx = (scene->r.size * scene->r.xsch) / 100; - winy = (scene->r.size * scene->r.ysch) / 100; + RE_SceneRenderSize(scene, &winx, &winy); /* we always render smaller part, inserting it in larger image is compositor bizz, it uses disprect for it */ if (scene->r.mode & R_BORDER) { @@ -2953,8 +2951,7 @@ void RE_PreviewRender(Render *re, Main *bmain, Scene *sce) Object *camera; int winx, winy; - winx = (sce->r.size * sce->r.xsch) / 100; - winy = (sce->r.size * sce->r.ysch) / 100; + RE_SceneRenderSize(sce, &winx, &winy); RE_InitState(re, NULL, &sce->r, NULL, winx, winy, NULL); @@ -2985,8 +2982,7 @@ bool RE_ReadRenderResult(Scene *scene, Scene *scenode) rcti disprect; /* calculate actual render result and display size */ - winx = (scene->r.size * scene->r.xsch) / 100; - winy = (scene->r.size * scene->r.ysch) / 100; + RE_SceneRenderSize(scene, &winx, &winy); /* only in movie case we render smaller part */ if (scene->r.mode & R_BORDER) { |