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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2018-04-04 16:51:03 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-04-09 12:21:14 +0300
commit209c5cebb06abc06f7afd6b70298cf14a7138b64 (patch)
tree8ff702c9f3bcc954745643a226e84567296da78a /source/blender/render
parentcf4041eb05471614bd6f4e38af5986ae9211ef7f (diff)
Freestyle: use depsgraph to get geometry, instead of Blender Internal.
Some of the code is simpler because we use Blender's triangulation directly instead of dealing with quads. Also some progress printing code was removed because the depsgraph can not tell us the number of objects ahead of time. Differential Revision: https://developer.blender.org/D3127
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/extern/include/RE_pipeline.h3
-rw-r--r--source/blender/render/intern/source/convertblender.c27
-rw-r--r--source/blender/render/intern/source/pipeline.c4
3 files changed, 31 insertions, 3 deletions
diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h
index 93ac53cdfcc..08c2fd4fa7a 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -271,6 +271,9 @@ void RE_GetViewPlane(struct Render *re, rctf *r_viewplane, rcti *r_disprect);
void RE_Database_FromScene(
struct Render *re, struct Main *bmain, struct Scene *scene,
unsigned int lay, int use_camera_view);
+void RE_Database_CameraOnly(
+ struct Render *re, struct Main *bmain, struct Scene *scene,
+ unsigned int lay, int use_camera_view);
void RE_Database_Preprocess(struct EvaluationContext *eavl_ctx, struct Render *re);
void RE_Database_Free(struct Render *re);
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 419316d6217..003c69ccbd4 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -5178,6 +5178,33 @@ static void database_init_objects(const EvaluationContext *eval_ctx, Render *re,
RE_makeRenderInstances(re);
}
+void RE_Database_CameraOnly(Render *re, Main *bmain, Scene *scene, unsigned int lay, int use_camera_view)
+{
+ Object *camera;
+ float mat[4][4];
+
+ re->main= bmain;
+ re->scene= scene;
+ re->lay= lay;
+
+ /* scene needs to be set to get camera */
+ camera= RE_GetCamera(re);
+
+ /* if no camera, viewmat should have been set! */
+ if (use_camera_view && camera) {
+ /* called before but need to call again in case of lens animation from the
+ * above call to BKE_scene_graph_update_for_newframe, fixes bug. [#22702].
+ * following calls don't depend on 'RE_SetCamera' */
+ RE_SetCamera(re, camera);
+ RE_GetCameraModelMatrix(re, camera, mat);
+ invert_m4(mat);
+ RE_SetView(re, mat);
+
+ /* force correct matrix for scaled cameras */
+ DEG_id_tag_update_ex(re->main, &camera->id, OB_RECALC_OB);
+ }
+}
+
/* used to be 'rotate scene' */
void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int lay, int use_camera_view)
{
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index d6e45788942..9ad9c653e54 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -3327,10 +3327,8 @@ void RE_RenderFreestyleExternal(Render *re)
for (rv = re->result->views.first; rv; rv = rv->next) {
RE_SetActiveRenderView(re, rv->name);
- RE_Database_FromScene(re, re->main, re->scene, re->lay, 1);
- RE_Database_Preprocess(NULL, re);
+ RE_Database_CameraOnly(re, re->main, re->scene, re->lay, 1);
add_freestyle(re, 1);
- RE_Database_Free(re);
}
}
}