예제 #1
0
void ED_render_engine_changed(Main *bmain)
{
	/* on changing the render engine type, clear all running render engines */
	bScreen *sc;
	ScrArea *sa;

	for (sc = bmain->screen.first; sc; sc = sc->id.next)
		for (sa = sc->areabase.first; sa; sa = sa->next)
			ED_render_engine_area_exit(sa);
}
예제 #2
0
void ED_render_engine_changed(Main *bmain)
{
	/* on changing the render engine type, clear all running render engines */
	bScreen *sc;
	ScrArea *sa;
	Scene *scene;

	for (sc = bmain->screen.first; sc; sc = sc->id.next)
		for (sa = sc->areabase.first; sa; sa = sa->next)
			ED_render_engine_area_exit(bmain, sa);

	RE_FreePersistentData();

	for (scene = bmain->scene.first; scene; scene = scene->id.next)
		ED_render_id_flush_update(bmain, &scene->id);
}
예제 #3
0
void ED_render_scene_update_pre(Main *bmain, Scene *scene, bool time)
{
	/* Blender internal might access to the data which is gonna to be freed
	 * by the scene update functions. This applies for example to simulation
	 * data like smoke and fire.
	 */
	if (time && !BKE_scene_use_new_shading_nodes(scene)) {
		bScreen *sc;
		ScrArea *sa;
		for (sc = bmain->screen.first; sc; sc = sc->id.next) {
			for (sa = sc->areabase.first; sa; sa = sa->next) {
				ED_render_engine_area_exit(bmain, sa);
			}
		}
	}
}
예제 #4
0
void ED_render_engine_changed(Main *bmain)
{
	/* on changing the render engine type, clear all running render engines */
	bScreen *sc;
	ScrArea *sa;
	Scene *scene;
	Material *ma;

	for (sc = bmain->screen.first; sc; sc = sc->id.next)
		for (sa = sc->areabase.first; sa; sa = sa->next)
			ED_render_engine_area_exit(sa);

	RE_FreePersistentData();

	for (scene = bmain->scene.first; scene; scene = scene->id.next)
		ED_render_id_flush_update(bmain, &scene->id);

	/* reset texture painting. Sending one dependency graph signal for any material should
	 * refresh any texture slots */
	ma = bmain->mat.first;
	if (ma) {
		DAG_id_tag_update(&ma->id, 0);
	}
}