[Bf-blender-cvs] [f7dad2b0f8f] greasepencil-object: Merge branch 'blender2.8' into greasepencil-object
Antonio Vazquez
noreply at git.blender.org
Tue Feb 20 17:02:27 CET 2018
Commit: f7dad2b0f8faf128b7cf5b11d1499e20c337b609
Author: Antonio Vazquez
Date: Tue Feb 20 16:13:05 2018 +0100
Branches: greasepencil-object
https://developer.blender.org/rBf7dad2b0f8faf128b7cf5b11d1499e20c337b609
Merge branch 'blender2.8' into greasepencil-object
Conflicts:
source/blender/draw/intern/draw_manager.c
===================================================================
===================================================================
diff --cc source/blender/draw/intern/draw_manager.c
index 114e7e2d140,0e9a586440a..ed1dc2eef29
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@@ -3637,39 -3606,13 +3637,38 @@@ void DRW_draw_render_loop_offscreen
GPU_offscreen_bind(ofs, false);
}
-void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph)
+/* helper to check if exit object type to render */
+static bool DRW_render_check_object_type(struct Depsgraph *depsgraph, short obtype)
+{
+ DEG_OBJECT_ITER_FOR_RENDER_ENGINE(depsgraph, ob, DRW_iterator_mode_get())
+ {
+ if ((ob->type == obtype) && (DRW_check_object_visible_within_active_context(ob))) {
+ return true;
+ }
+ }
+ DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END
+
+ return false;
+}
+
+void DRW_render_gpencil_to_image(RenderEngine *re, struct Depsgraph *depsgraph)
+{
+ if (draw_engine_gpencil_type.render_to_image) {
+ if (DRW_render_check_object_type(depsgraph, OB_GPENCIL)) {
+ ViewportEngineData *gpdata = DRW_viewport_engine_data_ensure(&draw_engine_gpencil_type);
+ draw_engine_gpencil_type.render_to_image(gpdata, re, depsgraph);
+ }
+ }
+
+}
+
+void DRW_render_to_image(RenderEngine *re, struct Depsgraph *depsgraph)
{
Scene *scene = DEG_get_evaluated_scene(depsgraph);
- ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
- RenderEngineType *engine_type = re->type;
+ RenderEngineType *engine_type = engine->type;
DrawEngineType *draw_engine_type = engine_type->draw_engine;
RenderData *r = &scene->r;
- Render *render = re->re;
+ Render *render = engine->re;
const EvaluationContext *eval_ctx = RE_GetEvalCtx(render);
/* Reset before using it. */
@@@ -3696,24 -3639,36 +3695,38 @@@
glDisable(GL_SCISSOR_TEST);
glViewport(0, 0, size[0], size[1]);
- if ((r->scemode & R_MULTIVIEW) != 0) {
- for (SceneRenderView *srv = r->views.first; srv; srv = srv->next) {
- if (BKE_scene_multiview_is_render_view_active(r, srv) == false)
- continue;
+ /* Main rendering loop. */
+
+ /* Init render result. */
+ const float *render_size = DRW_viewport_size_get();
+ RenderResult *render_result = RE_engine_begin_result(engine, 0, 0, (int)render_size[0], (int)render_size[1], NULL, NULL);
- RE_SetActiveRenderView(render, srv->name);
+ for (RenderView *render_view = render_result->views.first;
+ render_view != NULL;
+ render_view = render_view->next)
+ {
+ RE_SetActiveRenderView(render, render_view->name);
+ for (RenderLayer *render_layer = render_result->layers.first;
+ render_layer != NULL;
+ render_layer = render_layer->next)
+ {
+ ViewLayer *view_layer = BLI_findstring(&scene->view_layers, render_layer->name, offsetof(ViewLayer, name));
+ DST.draw_ctx.view_layer = view_layer;
- engine_type->draw_engine->render_to_image(data, re, depsgraph);
+ /* TODO(dfelinto/sergey) we should not get depsgraph from scene.
+ * For rendering depsgraph is to be owned by Render. */
+ DST.draw_ctx.depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
+
+ engine_type->draw_engine->render_to_image(data, engine, render_result, render_layer);
+ DST.buffer_finish_called = false;
}
}
- else {
- engine_type->draw_engine->render_to_image(data, re, depsgraph);
- }
+ RE_engine_end_result(engine, render_result, false, false, false);
+ /* grease pencil: render result is merged in the previous render result. */
+ DRW_render_gpencil_to_image(re, depsgraph);
- /* TODO grease pencil */
+ DST.buffer_finish_called = false;
GPU_viewport_free(DST.viewport);
MEM_freeN(DST.viewport);
More information about the Bf-blender-cvs
mailing list