Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/object/object_bake.c
| Show First 20 Lines • Show All 102 Lines • ▼ Show 20 Lines | |||||
| } MultiresBakerJobData; | } MultiresBakerJobData; | ||||
| /* data passing to multires-baker job */ | /* data passing to multires-baker job */ | ||||
| typedef struct { | typedef struct { | ||||
| Scene *scene; | Scene *scene; | ||||
| ListBase data; | ListBase data; | ||||
| /** Clear the images before baking */ | /** Clear the images before baking */ | ||||
| bool bake_clear; | bool bake_clear; | ||||
| /** Bake-filter, aka margin */ | /** margin size in pixels*/ | ||||
| int bake_filter; | int bake_margin; | ||||
| /** margin type */ | |||||
| char bake_margin_type; | |||||
| /** mode of baking (displacement, normals, AO) */ | /** mode of baking (displacement, normals, AO) */ | ||||
| short mode; | short mode; | ||||
| /** Use low-resolution mesh when baking displacement maps */ | /** Use low-resolution mesh when baking displacement maps */ | ||||
| bool use_lores_mesh; | bool use_lores_mesh; | ||||
| /** Number of rays to be cast when doing AO baking */ | /** Number of rays to be cast when doing AO baking */ | ||||
| int number_of_rays; | int number_of_rays; | ||||
| /** Bias between object and start ray point when doing AO baking */ | /** Bias between object and start ray point when doing AO baking */ | ||||
| float bias; | float bias; | ||||
| ▲ Show 20 Lines • Show All 246 Lines • ▼ Show 20 Lines | CTX_DATA_BEGIN (C, Base *, base, selected_editable_bases) { | ||||
| MultiresBakeRender bkr = {NULL}; | MultiresBakeRender bkr = {NULL}; | ||||
| ob = base->object; | ob = base->object; | ||||
| multires_flush_sculpt_updates(ob); | multires_flush_sculpt_updates(ob); | ||||
| /* copy data stored in job descriptor */ | /* copy data stored in job descriptor */ | ||||
| bkr.scene = scene; | bkr.scene = scene; | ||||
| bkr.bake_filter = scene->r.bake_filter; | bkr.bake_margin = scene->r.bake_margin; | ||||
| bkr.bake_margin_type = scene->r.bake_margin_type; | |||||
| bkr.mode = scene->r.bake_mode; | bkr.mode = scene->r.bake_mode; | ||||
| bkr.use_lores_mesh = scene->r.bake_flag & R_BAKE_LORES_MESH; | bkr.use_lores_mesh = scene->r.bake_flag & R_BAKE_LORES_MESH; | ||||
| bkr.bias = scene->r.bake_biasdist; | bkr.bias = scene->r.bake_biasdist; | ||||
| bkr.number_of_rays = scene->r.bake_samples; | bkr.number_of_rays = scene->r.bake_samples; | ||||
| bkr.threads = BKE_scene_num_threads(scene); | bkr.threads = BKE_scene_num_threads(scene); | ||||
| bkr.user_scale = (scene->r.bake_flag & R_BAKE_USERSCALE) ? scene->r.bake_user_scale : -1.0f; | bkr.user_scale = (scene->r.bake_flag & R_BAKE_USERSCALE) ? scene->r.bake_user_scale : -1.0f; | ||||
| // bkr.reports= op->reports; | // bkr.reports= op->reports; | ||||
| Show All 27 Lines | |||||
| /* Multiresbake adopted for job-system executing */ | /* Multiresbake adopted for job-system executing */ | ||||
| static void init_multiresbake_job(bContext *C, MultiresBakeJob *bkj) | static void init_multiresbake_job(bContext *C, MultiresBakeJob *bkj) | ||||
| { | { | ||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| Object *ob; | Object *ob; | ||||
| /* backup scene settings, so their changing in UI would take no effect on baker */ | /* backup scene settings, so their changing in UI would take no effect on baker */ | ||||
| bkj->scene = scene; | bkj->scene = scene; | ||||
| bkj->bake_filter = scene->r.bake_filter; | bkj->bake_margin = scene->r.bake_margin; | ||||
| bkj->bake_margin_type = scene->r.bake_margin_type; | |||||
| bkj->mode = scene->r.bake_mode; | bkj->mode = scene->r.bake_mode; | ||||
| bkj->use_lores_mesh = scene->r.bake_flag & R_BAKE_LORES_MESH; | bkj->use_lores_mesh = scene->r.bake_flag & R_BAKE_LORES_MESH; | ||||
| bkj->bake_clear = scene->r.bake_flag & R_BAKE_CLEAR; | bkj->bake_clear = scene->r.bake_flag & R_BAKE_CLEAR; | ||||
| bkj->bias = scene->r.bake_biasdist; | bkj->bias = scene->r.bake_biasdist; | ||||
| bkj->number_of_rays = scene->r.bake_samples; | bkj->number_of_rays = scene->r.bake_samples; | ||||
| bkj->threads = BKE_scene_num_threads(scene); | bkj->threads = BKE_scene_num_threads(scene); | ||||
| bkj->user_scale = (scene->r.bake_flag & R_BAKE_USERSCALE) ? scene->r.bake_user_scale : -1.0f; | bkj->user_scale = (scene->r.bake_flag & R_BAKE_USERSCALE) ? scene->r.bake_user_scale : -1.0f; | ||||
| // bkj->reports = op->reports; | // bkj->reports = op->reports; | ||||
| ▲ Show 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | if (bkj->bake_clear) { /* clear images */ | ||||
| } | } | ||||
| } | } | ||||
| for (data = bkj->data.first; data; data = data->next) { | for (data = bkj->data.first; data; data = data->next) { | ||||
| MultiresBakeRender bkr = {NULL}; | MultiresBakeRender bkr = {NULL}; | ||||
| /* copy data stored in job descriptor */ | /* copy data stored in job descriptor */ | ||||
| bkr.scene = bkj->scene; | bkr.scene = bkj->scene; | ||||
| bkr.bake_filter = bkj->bake_filter; | bkr.bake_margin = bkj->bake_margin; | ||||
| bkr.bake_margin_type = bkj->bake_margin_type; | |||||
| bkr.mode = bkj->mode; | bkr.mode = bkj->mode; | ||||
| bkr.use_lores_mesh = bkj->use_lores_mesh; | bkr.use_lores_mesh = bkj->use_lores_mesh; | ||||
| bkr.user_scale = bkj->user_scale; | bkr.user_scale = bkj->user_scale; | ||||
| // bkr.reports = bkj->reports; | // bkr.reports = bkj->reports; | ||||
| bkr.ob_image.array = data->ob_image.array; | bkr.ob_image.array = data->ob_image.array; | ||||
| bkr.ob_image.len = data->ob_image.len; | bkr.ob_image.len = data->ob_image.len; | ||||
| /* create low-resolution DM (to bake to) and hi-resolution DM (to bake from) */ | /* create low-resolution DM (to bake to) and hi-resolution DM (to bake from) */ | ||||
| ▲ Show 20 Lines • Show All 163 Lines • Show Last 20 Lines | |||||