67 for (
int i = 0; i < ob->
totcol; i++) {
127 op->
reports,
RPT_ERROR,
"Baking of multires data only works with an active mesh object");
170 op->
reports,
RPT_ERROR,
"You should have active texture to use multires baker");
234 tmp_mmd.lvl = mmd->
lvl;
235 tmp_mmd.sculptlvl = mmd->
lvl;
261 tmp_mmd.
lvl = mmd->totlvl;
276 const float vec_alpha[4] = {0.0f, 0.0f, 0.0f, 0.0f};
277 const float vec_solid[4] = {0.0f, 0.0f, 0.0f, 1.0f};
278 const float nor_alpha[4] = {0.5f, 0.5f, 1.0f, 0.0f};
279 const float nor_solid[4] = {0.5f, 0.5f, 1.0f, 1.0f};
280 const float disp_alpha[4] = {0.5f, 0.5f, 0.5f, 0.0f};
281 const float disp_solid[4] = {0.5f, 0.5f, 0.5f, 1.0f};
310 for (
int i = 0; i < ob_image_array_len; i++) {
317 for (
int i = 0; i < ob_image_array_len; i++) {
324 for (
int i = 0; i < ob_image_array_len; i++) {
336 int objects_baked = 0;
409 if (!objects_baked) {
467 int baked_objects = 0, tot_obj;
535 data->lores_dm->release(
data->lores_dm);
536 data->hires_dm->release(
data->hires_dm);
539 for (link =
data->images.first; link; link = link->
next) {
606 switch (event->
type) {
656 ot->
idname =
"OBJECT_OT_bake_image";
void DM_set_only_copy(DerivedMesh *dm, const struct CustomData_MeshMasks *mask)
struct DerivedMesh * CDDM_from_mesh(struct Mesh *mesh)
struct Scene * CTX_data_scene(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
#define CTX_DATA_BEGIN(C, Type, instance, member)
struct wmWindow * CTX_wm_window(const bContext *C)
const CustomData_MeshMasks CD_MASK_BAREMESH
void CustomData_set_only_copy(const struct CustomData *data, eCustomDataMask mask)
void BKE_image_release_ibuf(struct Image *ima, struct ImBuf *ibuf, void *lock)
struct ImBuf * BKE_image_acquire_ibuf(struct Image *ima, struct ImageUser *iuser, void **r_lock)
void BKE_image_partial_update_mark_full_update(struct Image *image)
Mark the whole image to be updated.
void BKE_imageuser_default(struct ImageUser *iuser)
General operations, lookup, etc. for materials.
bool BKE_modifier_is_enabled(const struct Scene *scene, struct ModifierData *md, int required_mode)
struct MultiresModifierData * get_multires_modifier(struct Scene *scene, struct Object *ob, bool use_first)
struct DerivedMesh * multires_make_derived_from_derived(struct DerivedMesh *dm, struct MultiresModifierData *mmd, struct Scene *scene, struct Object *ob, MultiresFlags flags)
void multires_flush_sculpt_updates(struct Object *object)
void BKE_report(ReportList *reports, eReportType type, const char *message)
int BKE_scene_num_threads(const struct Scene *scene)
#define LISTBASE_FOREACH(type, var, list)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
Object is a sort of wrapper for general info.
#define R_IMF_PLANES_RGBA
#define R_BAKE_LORES_MESH
bool ED_operator_object_active(struct bContext *C)
bool ED_object_get_active_image(struct Object *ob, int mat_nr, struct Image **r_ima, struct ImageUser **r_iuser, struct bNode **r_node, struct bNodeTree **r_ntree)
void IMB_rectfill(struct ImBuf *drect, const float col[4])
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
Platform independent time functions.
#define RE_BAKE_DISPLACEMENT
@ WM_JOB_TYPE_OBJECT_BAKE_TEXTURE
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img image(1, GPU_R32F, Qualifier::WRITE, ImageType::FLOAT_2D_ARRAY, "out_weight_img") .image(3
ccl_global const KernelWorkTile * tile
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
void RE_multires_bake_images(MultiresBakeRender *bkr)
static void multiresbake_startjob(void *bkv, short *stop, short *do_update, float *progress)
static int multiresbake_image_exec_locked(bContext *C, wmOperator *op)
static DerivedMesh * multiresbake_create_hiresdm(Scene *scene, Object *ob, int *lvl)
static int objects_bake_render_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(_event))
static void multiresbake_freejob(void *bkv)
static void init_multiresbake_job(bContext *C, MultiresBakeJob *bkj)
static Image ** bake_object_image_get_array(Object *ob)
void OBJECT_OT_bake_image(wmOperatorType *ot)
static int objects_bake_render_modal(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
static int multiresbake_image_exec(bContext *C, wmOperator *op)
static void clear_images_poly(Image **ob_image_array, int ob_image_array_len, ClearFlag flag)
static Image * bake_object_image_get(Object *ob, int mat_nr)
static void clear_single_image(Image *image, ClearFlag flag)
struct MultiresBakerJobData MultiresBakerJobData
static bool is_multires_bake(Scene *scene)
static bool multiresbake_check(bContext *C, wmOperator *op)
static DerivedMesh * multiresbake_create_loresdm(Scene *scene, Object *ob, int *lvl)
static int bake_image_exec(bContext *C, wmOperator *op)
void(* release)(DerivedMesh *dm)
struct ModifierData * next
struct MultiresBakeRender::@1173 ob_image
struct MultiresBakerJobData * prev
struct MultiresBakerJobData * next
struct MultiresBakerJobData::@487 ob_image
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
int(* modal)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
void WM_cursor_wait(bool val)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
void WM_jobs_callbacks(wmJob *wm_job, wm_jobs_start_callback startjob, void(*initjob)(void *), void(*update)(void *), void(*endjob)(void *))
bool WM_jobs_test(const wmWindowManager *wm, const void *owner, int job_type)
void WM_jobs_customdata_set(wmJob *wm_job, void *customdata, void(*free)(void *))
void WM_jobs_timer(wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, const void *owner, const char *name, int flag, int job_type)