Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/render/render_update.c
| Show First 20 Lines • Show All 176 Lines • ▼ Show 20 Lines | for (region = area->regionbase.first; region; region = region->next) { | ||||
| ED_view3d_stop_render_preview(wm, region); | ED_view3d_stop_render_preview(wm, region); | ||||
| } | } | ||||
| } | } | ||||
| void ED_render_engine_changed(Main *bmain) | void ED_render_engine_changed(Main *bmain) | ||||
| { | { | ||||
| /* on changing the render engine type, clear all running render engines */ | /* on changing the render engine type, clear all running render engines */ | ||||
| for (bScreen *sc = bmain->screens.first; sc; sc = sc->id.next) { | for (bScreen *sc = bmain->screens.first; sc; sc = sc->id.next) { | ||||
| for (ScrArea *area = sc->areabase.first; area; area = area->next) { | LISTBASE_FOREACH (ScrArea *, area, &sc->areabase) { | ||||
| ED_render_engine_area_exit(bmain, area); | ED_render_engine_area_exit(bmain, area); | ||||
| } | } | ||||
| } | } | ||||
| RE_FreePersistentData(); | RE_FreePersistentData(); | ||||
| /* Inform all render engines and draw managers. */ | /* Inform all render engines and draw managers. */ | ||||
| DEGEditorUpdateContext update_ctx = {NULL}; | DEGEditorUpdateContext update_ctx = {NULL}; | ||||
| update_ctx.bmain = bmain; | update_ctx.bmain = bmain; | ||||
| for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { | for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { | ||||
| update_ctx.scene = scene; | update_ctx.scene = scene; | ||||
| LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) { | LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) { | ||||
| /* TDODO(sergey): Iterate over depsgraphs instead? */ | /* TDODO(sergey): Iterate over depsgraphs instead? */ | ||||
| update_ctx.depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true); | update_ctx.depsgraph = BKE_scene_get_depsgraph(bmain, scene, view_layer, true); | ||||
| update_ctx.view_layer = view_layer; | update_ctx.view_layer = view_layer; | ||||
| ED_render_id_flush_update(&update_ctx, &scene->id); | ED_render_id_flush_update(&update_ctx, &scene->id); | ||||
| } | } | ||||
| if (scene->nodetree) { | if (scene->nodetree) { | ||||
| ntreeCompositUpdateRLayers(scene->nodetree); | ntreeCompositUpdateRLayers(scene->nodetree); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| void ED_render_view_layer_changed(Main *bmain, bScreen *sc) | void ED_render_view_layer_changed(Main *bmain, bScreen *sc) | ||||
| { | { | ||||
| for (ScrArea *area = sc->areabase.first; area; area = area->next) { | LISTBASE_FOREACH (ScrArea *, area, &sc->areabase) { | ||||
| ED_render_engine_area_exit(bmain, area); | ED_render_engine_area_exit(bmain, area); | ||||
| } | } | ||||
| } | } | ||||
| /***************************** Updates *********************************** | /***************************** Updates *********************************** | ||||
| * ED_render_id_flush_update gets called from DEG_id_tag_update, to do * | * ED_render_id_flush_update gets called from DEG_id_tag_update, to do * | ||||
| * editor level updates when the ID changes. when these ID blocks are in * | * editor level updates when the ID changes. when these ID blocks are in * | ||||
| * the dependency graph, we can get rid of the manual dependency checks */ | * the dependency graph, we can get rid of the manual dependency checks */ | ||||
| ▲ Show 20 Lines • Show All 105 Lines • Show Last 20 Lines | |||||