diff options
author | Martijn Versteegh <Baardaap> | 2022-01-17 20:00:35 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-01-17 21:36:13 +0300 |
commit | 449db0ab1e34976f3936310b846ab38cc2d6467d (patch) | |
tree | a0eb26c834c1a6b89e5461d219c042abde200b5f /source/blender/editors/object/object_bake.c | |
parent | 8af22719d0c98e24104d01089ecb0cff840df7e8 (diff) |
Baking: new method to generate margin, based on adjacent faces
This significantly reduces discontinuities on UV seams, by giving a better
match of the texture filtered colors on both sides of the seam. It works by
using pixels from adjacent faces across the UV seam.
This new option is called "Adjacent Faces" and is the default. The old option
is called "Extend", and extends border pixels outwards.
Differential Revision: https://developer.blender.org/D13303
Diffstat (limited to 'source/blender/editors/object/object_bake.c')
-rw-r--r-- | source/blender/editors/object/object_bake.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c index 1b6b0c78037..a5e6e7f0852 100644 --- a/source/blender/editors/object/object_bake.c +++ b/source/blender/editors/object/object_bake.c @@ -108,8 +108,10 @@ typedef struct { ListBase data; /** Clear the images before baking */ bool bake_clear; - /** Bake-filter, aka margin */ - int bake_filter; + /** margin size in pixels*/ + int bake_margin; + /** margin type */ + char bake_margin_type; /** mode of baking (displacement, normals, AO) */ short mode; /** Use low-resolution mesh when baking displacement maps */ @@ -372,7 +374,8 @@ static int multiresbake_image_exec_locked(bContext *C, wmOperator *op) /* copy data stored in job descriptor */ 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.use_lores_mesh = scene->r.bake_flag & R_BAKE_LORES_MESH; bkr.bias = scene->r.bake_biasdist; @@ -416,7 +419,8 @@ static void init_multiresbake_job(bContext *C, MultiresBakeJob *bkj) /* backup scene settings, so their changing in UI would take no effect on baker */ 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->use_lores_mesh = scene->r.bake_flag & R_BAKE_LORES_MESH; bkj->bake_clear = scene->r.bake_flag & R_BAKE_CLEAR; @@ -477,7 +481,8 @@ static void multiresbake_startjob(void *bkv, short *stop, short *do_update, floa /* copy data stored in job descriptor */ 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.use_lores_mesh = bkj->use_lores_mesh; bkr.user_scale = bkj->user_scale; |