Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/sequencer.c
| Show First 20 Lines • Show All 3,257 Lines • ▼ Show 20 Lines | #endif | ||||
| scene = seq->scene; | scene = seq->scene; | ||||
| frame = (double)scene->r.sfra + (double)nr + (double)seq->anim_startofs; | frame = (double)scene->r.sfra + (double)nr + (double)seq->anim_startofs; | ||||
| // have_seq = (scene->r.scemode & R_DOSEQ) && scene->ed && scene->ed->seqbase.first); /* UNUSED */ | // have_seq = (scene->r.scemode & R_DOSEQ) && scene->ed && scene->ed->seqbase.first); /* UNUSED */ | ||||
| have_comp = (scene->r.scemode & R_DOCOMP) && scene->use_nodes && scene->nodetree; | have_comp = (scene->r.scemode & R_DOCOMP) && scene->use_nodes && scene->nodetree; | ||||
| /* Get depsgraph and scene layer for the strip. */ | /* Get depsgraph and scene layer for the strip. */ | ||||
| SceneLayer *scene_layer = BKE_scene_layer_from_scene_get(scene); | ViewLayer *view_layer = BKE_view_layer_from_scene_get(scene); | ||||
| Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, scene_layer, true); | Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true); | ||||
| orig_data.scemode = scene->r.scemode; | orig_data.scemode = scene->r.scemode; | ||||
| orig_data.cfra = scene->r.cfra; | orig_data.cfra = scene->r.cfra; | ||||
| orig_data.subframe = scene->r.subframe; | orig_data.subframe = scene->r.subframe; | ||||
| #ifdef DURIAN_CAMERA_SWITCH | #ifdef DURIAN_CAMERA_SWITCH | ||||
| orig_data.markers = scene->markers; | orig_data.markers = scene->markers; | ||||
| #endif | #endif | ||||
| Show All 34 Lines | if ((sequencer_view3d_cb && do_seq_gl && camera) && is_thread_main) { | ||||
| /* for old scene this can be uninitialized, | /* for old scene this can be uninitialized, | ||||
| * should probably be added to do_versions at some point if the functionality stays */ | * should probably be added to do_versions at some point if the functionality stays */ | ||||
| if (context->scene->r.seq_prev_type == 0) | if (context->scene->r.seq_prev_type == 0) | ||||
| context->scene->r.seq_prev_type = 3 /* == OB_SOLID */; | context->scene->r.seq_prev_type = 3 /* == OB_SOLID */; | ||||
| /* opengl offscreen render */ | /* opengl offscreen render */ | ||||
| context->eval_ctx->engine = RE_engines_find(scene->view_render.engine_id); | context->eval_ctx->engine = RE_engines_find(scene->view_render.engine_id); | ||||
| BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, scene_layer); | BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, view_layer); | ||||
| ibuf = sequencer_view3d_cb( | ibuf = sequencer_view3d_cb( | ||||
| /* set for OpenGL render (NULL when scrubbing) */ | /* set for OpenGL render (NULL when scrubbing) */ | ||||
| context->eval_ctx, scene, scene_layer, camera, width, height, IB_rect, | context->eval_ctx, scene, view_layer, camera, width, height, IB_rect, | ||||
| context->scene->r.seq_prev_type, | context->scene->r.seq_prev_type, | ||||
| (context->scene->r.seq_flag & R_SEQ_SOLID_TEX) != 0, | (context->scene->r.seq_flag & R_SEQ_SOLID_TEX) != 0, | ||||
| use_gpencil, use_background, scene->r.alphamode, | use_gpencil, use_background, scene->r.alphamode, | ||||
| context->gpu_samples, context->gpu_full_samples, viewname, | context->gpu_samples, context->gpu_full_samples, viewname, | ||||
| context->gpu_fx, context->gpu_offscreen, err_out); | context->gpu_fx, context->gpu_offscreen, err_out); | ||||
| if (ibuf == NULL) { | if (ibuf == NULL) { | ||||
| fprintf(stderr, "seq_render_scene_strip failed to get opengl buffer: %s\n", err_out); | fprintf(stderr, "seq_render_scene_strip failed to get opengl buffer: %s\n", err_out); | ||||
| } | } | ||||
| Show All 20 Lines | if (!is_thread_main || is_rendering == false || is_background || context->eval_ctx->mode == DAG_EVAL_RENDER) { | ||||
| /* NOTE: Without this tag rendering from command line fails. | /* NOTE: Without this tag rendering from command line fails. | ||||
| * TODO(sergey): Need some proper solution with ported | * TODO(sergey): Need some proper solution with ported | ||||
| * BKE_scene_set_background() or DEG_on_visible_change() ? | * BKE_scene_set_background() or DEG_on_visible_change() ? | ||||
| */ | */ | ||||
| RE_SetDepsgraph(re, depsgraph); | RE_SetDepsgraph(re, depsgraph); | ||||
| DEG_graph_id_tag_update(context->bmain, depsgraph, &scene->id, 0); | DEG_graph_id_tag_update(context->bmain, depsgraph, &scene->id, 0); | ||||
| BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, scene_layer); | BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, view_layer); | ||||
| RE_BlenderFrame(re, context->bmain, scene, NULL, camera, scene->lay, frame, false); | RE_BlenderFrame(re, context->bmain, scene, NULL, camera, scene->lay, frame, false); | ||||
| /* restore previous state after it was toggled on & off by RE_BlenderFrame */ | /* restore previous state after it was toggled on & off by RE_BlenderFrame */ | ||||
| G.is_rendering = is_rendering; | G.is_rendering = is_rendering; | ||||
| } | } | ||||
| for (i = 0; i < totviews; i++) { | for (i = 0; i < totviews; i++) { | ||||
| SeqRenderData localcontext = *context; | SeqRenderData localcontext = *context; | ||||
| ▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | |||||
| finally: | finally: | ||||
| /* restore */ | /* restore */ | ||||
| scene->r.scemode = orig_data.scemode; | scene->r.scemode = orig_data.scemode; | ||||
| scene->r.cfra = orig_data.cfra; | scene->r.cfra = orig_data.cfra; | ||||
| scene->r.subframe = orig_data.subframe; | scene->r.subframe = orig_data.subframe; | ||||
| if (is_frame_update) { | if (is_frame_update) { | ||||
| BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, scene_layer); | BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, view_layer); | ||||
| } | } | ||||
| #ifdef DURIAN_CAMERA_SWITCH | #ifdef DURIAN_CAMERA_SWITCH | ||||
| /* stooping to new low's in hackyness :( */ | /* stooping to new low's in hackyness :( */ | ||||
| scene->markers = orig_data.markers; | scene->markers = orig_data.markers; | ||||
| #endif | #endif | ||||
| return ibuf; | return ibuf; | ||||
| ▲ Show 20 Lines • Show All 2,264 Lines • Show Last 20 Lines | |||||