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:
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/extern/include/RE_pipeline.h2
-rw-r--r--source/blender/render/intern/source/initrender.c10
-rw-r--r--source/blender/render/intern/source/pipeline.c12
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(&params);
+ params.overscan = overscan;
BKE_camera_params_from_object(&params, 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) {