Changeset View
Changeset View
Standalone View
Standalone View
source/blender/render/intern/pipeline.c
| Show First 20 Lines • Show All 977 Lines • ▼ Show 20 Lines | void render_update_anim_renderdata(Render *re, RenderData *rd, ListBase *render_layers) | ||||
| BLI_freelistN(&re->view_layers); | BLI_freelistN(&re->view_layers); | ||||
| BLI_duplicatelist(&re->view_layers, render_layers); | BLI_duplicatelist(&re->view_layers, render_layers); | ||||
| /* render views */ | /* render views */ | ||||
| BLI_freelistN(&re->r.views); | BLI_freelistN(&re->r.views); | ||||
| BLI_duplicatelist(&re->r.views, &rd->views); | BLI_duplicatelist(&re->r.views, &rd->views); | ||||
| } | } | ||||
| void RE_SetWindow(Render *re, const rctf *viewplane, float clip_start, float clip_end) | |||||
| { | |||||
| /* re->ok flag? */ | |||||
| re->viewplane = *viewplane; | |||||
| re->clip_start = clip_start; | |||||
| re->clip_end = clip_end; | |||||
| perspective_m4(re->winmat, | |||||
| re->viewplane.xmin, | |||||
| re->viewplane.xmax, | |||||
| re->viewplane.ymin, | |||||
| re->viewplane.ymax, | |||||
| re->clip_start, | |||||
| re->clip_end); | |||||
| } | |||||
| void RE_SetOrtho(Render *re, const rctf *viewplane, float clip_start, float clip_end) | |||||
| { | |||||
| /* re->ok flag? */ | |||||
| re->viewplane = *viewplane; | |||||
| re->clip_start = clip_start; | |||||
| re->clip_end = clip_end; | |||||
| orthographic_m4(re->winmat, | |||||
| re->viewplane.xmin, | |||||
| re->viewplane.xmax, | |||||
| re->viewplane.ymin, | |||||
| re->viewplane.ymax, | |||||
| re->clip_start, | |||||
| re->clip_end); | |||||
| } | |||||
| void RE_GetViewPlane(Render *re, rctf *r_viewplane, rcti *r_disprect) | |||||
| { | |||||
| *r_viewplane = re->viewplane; | |||||
| /* make disprect zero when no border render, is needed to detect changes in 3d view render */ | |||||
| if (re->r.mode & R_BORDER) { | |||||
| *r_disprect = re->disprect; | |||||
| } | |||||
| else { | |||||
| BLI_rcti_init(r_disprect, 0, 0, 0, 0); | |||||
| } | |||||
| } | |||||
| /* image and movie output has to move to either imbuf or kernel */ | /* image and movie output has to move to either imbuf or kernel */ | ||||
| void RE_display_init_cb(Render *re, void *handle, void (*f)(void *handle, RenderResult *rr)) | void RE_display_init_cb(Render *re, void *handle, void (*f)(void *handle, RenderResult *rr)) | ||||
| { | { | ||||
| re->display_init = f; | re->display_init = f; | ||||
| re->dih = handle; | re->dih = handle; | ||||
| } | } | ||||
| void RE_display_clear_cb(Render *re, void *handle, void (*f)(void *handle, RenderResult *rr)) | void RE_display_clear_cb(Render *re, void *handle, void (*f)(void *handle, RenderResult *rr)) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 1,009 Lines • ▼ Show 20 Lines | void RE_RenderFrame(Render *re, | ||||
| RE_CleanAfterRender(re); | RE_CleanAfterRender(re); | ||||
| /* UGLY WARNING */ | /* UGLY WARNING */ | ||||
| G.is_rendering = false; | G.is_rendering = false; | ||||
| } | } | ||||
| #ifdef WITH_FREESTYLE | #ifdef WITH_FREESTYLE | ||||
| /* Not freestyle specific, currently only used by free-style. */ | |||||
| static void change_renderdata_engine(Render *re, const char *new_engine) | |||||
| { | |||||
| if (!STREQ(re->r.engine, new_engine)) { | |||||
| if (re->engine) { | |||||
| RE_engine_free(re->engine); | |||||
| re->engine = NULL; | |||||
| } | |||||
| BLI_strncpy(re->r.engine, new_engine, sizeof(re->r.engine)); | |||||
| } | |||||
| } | |||||
| static bool use_eevee_for_freestyle_render(Render *re) | |||||
| { | |||||
| RenderEngineType *type = RE_engines_find(re->r.engine); | |||||
| return !(type->flag & RE_USE_CUSTOM_FREESTYLE); | |||||
| } | |||||
| void RE_RenderFreestyleStrokes(Render *re, Main *bmain, Scene *scene, int render) | void RE_RenderFreestyleStrokes(Render *re, Main *bmain, Scene *scene, int render) | ||||
| { | { | ||||
| re->result_ok = 0; | re->result_ok = 0; | ||||
| if (render_init_from_main(re, &scene->r, bmain, scene, NULL, NULL, 0, 0)) { | if (render_init_from_main(re, &scene->r, bmain, scene, NULL, NULL, 0, 0)) { | ||||
| if (render) { | if (render) { | ||||
| char scene_engine[32]; | |||||
| BLI_strncpy(scene_engine, re->r.engine, sizeof(scene_engine)); | |||||
| if (use_eevee_for_freestyle_render(re)) { | |||||
| change_renderdata_engine(re, RE_engine_id_BLENDER_EEVEE); | |||||
| } | |||||
| do_render_3d(re); | do_render_3d(re); | ||||
| change_renderdata_engine(re, scene_engine); | |||||
| } | } | ||||
| } | } | ||||
| re->result_ok = 1; | re->result_ok = 1; | ||||
| } | } | ||||
| void RE_RenderFreestyleExternal(Render *re) | void RE_RenderFreestyleExternal(Render *re) | ||||
| { | { | ||||
| if (re->test_break(re->tbh)) { | if (re->test_break(re->tbh)) { | ||||
| ▲ Show 20 Lines • Show All 868 Lines • Show Last 20 Lines | |||||