[Bf-blender-cvs] [02226ef653e] master: Code_Cleanup_Day/Windows: Clean-up windows API Level.
Commit: 02226ef653e1e871be6004a51f08b74c0c9dd8e4 Author: Ray Molenkamp Date: Wed Feb 5 20:03:06 2020 -0700 Branches: master https://developer.blender.org/rB02226ef653e1e871be6004a51f08b74c0c9dd8e4 Code_Cleanup_Day/Windows: Clean-up windows API Level. Not sure when this happened but apparently the lower bar is now windows 7 [1] This patch bumps to API version to 0x0601 (Win7) and cleans up any uses that worked around the globally set API version. [1] https://www.blender.org/download/requirements/ Reviewed By: brecht Differential Revision: https://developer.blender.org/D6758 === M build_files/cmake/platform/platform_win32.cmake M intern/cycles/device/device_optix.cpp M source/blender/blenlib/intern/dynlib.c M source/blender/blenlib/intern/time.c === diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index b228930bfb1..04e5848dcfe 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -131,8 +131,8 @@ add_definitions( # MSVC11 needs _ALLOW_KEYWORD_MACROS to build add_definitions(-D_ALLOW_KEYWORD_MACROS) -# We want to support Vista level ABI -add_definitions(-D_WIN32_WINNT=0x600) +# We want to support Windows 7 level ABI +add_definitions(-D_WIN32_WINNT=0x601) include(build_files/cmake/platform/platform_win32_bundle_crt.cmake) remove_cc_flag("/MDd" "/MD") diff --git a/intern/cycles/device/device_optix.cpp b/intern/cycles/device/device_optix.cpp index c1106b367ca..f479cbd7414 100644 --- a/intern/cycles/device/device_optix.cpp +++ b/intern/cycles/device/device_optix.cpp @@ -31,9 +31,6 @@ # include "util/util_debug.h" # include "util/util_logging.h" -# undef _WIN32_WINNT // Need minimum API support for Windows 7 -# define _WIN32_WINNT _WIN32_WINNT_WIN7 - # ifdef WITH_CUDA_DYNLOAD #include // Do not use CUDA SDK headers when using CUEW diff --git a/source/blender/blenlib/intern/dynlib.c b/source/blender/blenlib/intern/dynlib.c index c648a212fef..2aceff45b3e 100644 --- a/source/blender/blenlib/intern/dynlib.c +++ b/source/blender/blenlib/intern/dynlib.c @@ -34,9 +34,6 @@ struct DynamicLibrary { }; #ifdef WIN32 -# ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x501 /* Windows XP or newer */ -# endif # define WIN32_LEAN_AND_MEAN # include # include "utf_winfunc.h" diff --git a/source/blender/blenlib/intern/time.c b/source/blender/blenlib/intern/time.c index f7bcf303b4b..81b079a1f77 100644 --- a/source/blender/blenlib/intern/time.c +++ b/source/blender/blenlib/intern/time.c @@ -24,9 +24,6 @@ #include "PIL_time.h" #ifdef WIN32 -# ifndef _WIN32_WINNT -#define _WIN32_WINNT 0x501 /* Windows XP or newer */ -# endif # define WIN32_LEAN_AND_MEAN # include ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [dc1db0791ec] master: Cycles: Track specular throughput to account for reflection color in denoising albedo pass
Commit: dc1db0791ec3b2d52e6734054a001814cd6998ee Author: Lukas Stockner Date: Tue Jan 21 04:45:51 2020 +0100 Branches: master https://developer.blender.org/rBdc1db0791ec3b2d52e6734054a001814cd6998ee Cycles: Track specular throughput to account for reflection color in denoising albedo pass To determine the albedo pass, Cycles currently follows the path until a predominantly diffuse-ish material is hit and then takes the albedo there. This works fine for normal mirrors, but as it completely ignores the color of the bounces before that diffuse-ish material, it also means that any textures that are applied to the specular-ish BSDFs won't affect the albedo pass at all. Therefore, this patch changes that behaviour so that Cycles also keeps track of the throughput of all specular-ish closures along the path so far and includes that in the albedo pass. This fixes part of the issue described in T73043. However, since it has an effect on the albedo pass in most scenes, it could cause cause regressions, which is why I'm uploading it as a patch instead of just committing as a fix. Differential Revision: https://developer.blender.org/D6640 === M intern/cycles/kernel/kernel_accumulate.h M intern/cycles/kernel/kernel_passes.h M intern/cycles/kernel/kernel_path_state.h M intern/cycles/kernel/kernel_types.h === diff --git a/intern/cycles/kernel/kernel_accumulate.h b/intern/cycles/kernel/kernel_accumulate.h index 606c288649a..9ea75d54c5d 100644 --- a/intern/cycles/kernel/kernel_accumulate.h +++ b/intern/cycles/kernel/kernel_accumulate.h @@ -528,7 +528,8 @@ ccl_device_inline void path_radiance_accum_background(KernelGlobals *kg, } #ifdef __DENOISING_FEATURES__ - L->denoising_albedo += state->denoising_feature_weight * value; + L->denoising_albedo += state->denoising_feature_weight * state->denoising_feature_throughput * + value; #endif /* __DENOISING_FEATURES__ */ } diff --git a/intern/cycles/kernel/kernel_passes.h b/intern/cycles/kernel/kernel_passes.h index 7345e9ee5bb..e50fa07a885 100644 --- a/intern/cycles/kernel/kernel_passes.h +++ b/intern/cycles/kernel/kernel_passes.h @@ -58,7 +58,8 @@ ccl_device_inline void kernel_update_denoising_features(KernelGlobals *kg, } float3 normal = make_float3(0.0f, 0.0f, 0.0f); - float3 albedo = make_float3(0.0f, 0.0f, 0.0f); + float3 diffuse_albedo = make_float3(0.0f, 0.0f, 0.0f); + float3 specular_albedo = make_float3(0.0f, 0.0f, 0.0f); float sum_weight = 0.0f, sum_nonspecular_weight = 0.0f; for (int i = 0; i < sd->num_closure; i++) { @@ -70,24 +71,28 @@ ccl_device_inline void kernel_update_denoising_features(KernelGlobals *kg, /* All closures contribute to the normal feature, but only diffuse-like ones to the albedo. */ normal += sc->N * sc->sample_weight; sum_weight += sc->sample_weight; -if (bsdf_get_specular_roughness_squared(sc) > sqr(0.075f)) { - float3 closure_albedo = sc->weight; - /* Closures that include a Fresnel term typically have weights close to 1 even though their - * actual contribution is significantly lower. - * To account for this, we scale their weight by the average fresnel factor (the same is also - * done for the sample weight in the BSDF setup, so we don't need to scale that here). */ - if (CLOSURE_IS_BSDF_MICROFACET_FRESNEL(sc->type)) { -MicrofacetBsdf *bsdf = (MicrofacetBsdf *)sc; -closure_albedo *= bsdf->extra->fresnel_color; - } - else if (sc->type == CLOSURE_BSDF_PRINCIPLED_SHEEN_ID) { -PrincipledSheenBsdf *bsdf = (PrincipledSheenBsdf *)sc; -closure_albedo *= bsdf->avg_value; - } - albedo += closure_albedo; +float3 closure_albedo = sc->weight; +/* Closures that include a Fresnel term typically have weights close to 1 even though their + * actual contribution is significantly lower. + * To account for this, we scale their weight by the average fresnel factor (the same is also + * done for the sample weight in the BSDF setup, so we don't need to scale that here). */ +if (CLOSURE_IS_BSDF_MICROFACET_FRESNEL(sc->type)) { + MicrofacetBsdf *bsdf = (MicrofacetBsdf *)sc; + closure_albedo *= bsdf->extra->fresnel_color; +} +else if (sc->type == CLOSURE_BSDF_PRINCIPLED_SHEEN_ID) { + PrincipledSheenBsdf *bsdf = (PrincipledSheenBsdf *)sc; + closure_albedo *= bsdf->avg_value; +} + +if (bsdf_get_specular_roughness_squared(sc) > sqr(0.075f)) { + diffuse_albedo += closure_albedo; sum_nonspecular_weight += sc->sample_weight; } +else { + specular_albedo += closure_albedo; +} } /* Wait for next bounce if 75% or more sample weight belongs to specular-like closures. */ @@ -101,10 +106,14 @@ ccl_device_inline void
[Bf-blender-cvs] [8c353931afe] master: Merge branch 'blender-v2.82-release'
Commit: 8c353931afe1ac8969bcf7cdadc056f322cb2af8 Author: Lukas Stockner Date: Thu Feb 6 03:36:46 2020 +0100 Branches: master https://developer.blender.org/rB8c353931afe1ac8969bcf7cdadc056f322cb2af8 Merge branch 'blender-v2.82-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [462d566485d] blender-v2.82-release: Fix unreported: Trying to create invalid UDIM tiles failed without error
Commit: 462d566485d91afa1537ba4770829e0e43bc759b Author: Lukas Stockner Date: Thu Feb 6 03:02:29 2020 +0100 Branches: blender-v2.82-release https://developer.blender.org/rB462d566485d91afa1537ba4770829e0e43bc759b Fix unreported: Trying to create invalid UDIM tiles failed without error Thanks to @dfelinto for spotting this! === M source/blender/editors/space_image/image_ops.c === diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index 17c6f76a1d9..a2977b6ab90 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -4346,7 +4346,13 @@ static int tile_add_exec(bContext *C, wmOperator *op) Image *ima = CTX_data_edit_image(C); int start_tile = RNA_int_get(op->ptr, "number"); - int end_tile = min_ii(start_tile + RNA_int_get(op->ptr, "count"), IMA_UDIM_MAX); + int end_tile = start_tile + RNA_int_get(op->ptr, "count"); + + if (start_tile < 1001 || end_tile > IMA_UDIM_MAX) { +BKE_report(op->reports, RPT_ERROR, "Invalid UDIM index range was specified"); +return OPERATOR_CANCELLED; + } + bool fill_tile = RNA_boolean_get(op->ptr, "fill"); char *label = RNA_string_get_alloc(op->ptr, "label", NULL, 0); @@ -4442,8 +4448,15 @@ void IMAGE_OT_tile_add(wmOperatorType *ot) /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; - RNA_def_int( - ot->srna, "number", 1002, 1001, INT_MAX, "Number", "UDIM number of the tile", 1001, 1099); + RNA_def_int(ot->srna, + "number", + 1002, + 1001, + IMA_UDIM_MAX, + "Number", + "UDIM number of the tile", + 1001, + 1099); RNA_def_int(ot->srna, "count", 1, 1, INT_MAX, "Count", "How many tiles to add", 1, 1000); RNA_def_string(ot->srna, "label", NULL, 0, "Label", "Optional tile label"); RNA_def_boolean(ot->srna, "fill", true, "Fill", "Fill new tile with a generated image"); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [3caefc89ee1] blender-v2.82-release: Fix unreported: View All in the Image Editor ignores UDIM tiles
Commit: 3caefc89ee1afc20c5ee46c0ddf538213d802819 Author: Lukas Stockner Date: Thu Feb 6 03:23:01 2020 +0100 Branches: blender-v2.82-release https://developer.blender.org/rB3caefc89ee1afc20c5ee46c0ddf538213d802819 Fix unreported: View All in the Image Editor ignores UDIM tiles Thanks to @dfelinto for spotting this! === M source/blender/editors/space_image/image_ops.c === diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index a2977b6ab90..e6bd563b02f 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -781,6 +781,29 @@ static int image_view_all_exec(bContext *C, wmOperator *op) w = width * aspx; h = height * aspy; + float xof = 0.0f, yof = 0.0f; + if ((sima->image == NULL) || (sima->image->source == IMA_SRC_TILED)) { +/* Extend the shown area to cover all UDIM tiles. */ +int x_tiles, y_tiles; +if (sima->image == NULL) { + x_tiles = sima->tile_grid_shape[0]; + y_tiles = sima->tile_grid_shape[1]; +} +else { + x_tiles = y_tiles = 1; + LISTBASE_FOREACH (ImageTile *, tile, >image->tiles) { +int tile_x = (tile->tile_number - 1001) % 10; +int tile_y = (tile->tile_number - 1001) / 10; +x_tiles = max_ii(x_tiles, tile_x + 1); +y_tiles = max_ii(y_tiles, tile_y + 1); + } +} +xof = 0.5f * (x_tiles - 1.0f) * w; +yof = 0.5f * (y_tiles - 1.0f) * h; +w *= x_tiles; +h *= y_tiles; + } + /* check if the image will fit in the image with (zoom == 1) */ width = BLI_rcti_size_x(>winrct) + 1; height = BLI_rcti_size_y(>winrct) + 1; @@ -806,7 +829,8 @@ static int image_view_all_exec(bContext *C, wmOperator *op) } } - sima->xof = sima->yof = 0.0f; + sima->xof = xof; + sima->yof = yof; ED_region_tag_redraw(ar); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [d1112ae0d0e] master: Merge branch 'blender-v2.82-release'
Commit: d1112ae0d0e602fcba58c39147cbcd66fe624564 Author: mano-wii Date: Wed Feb 5 22:59:29 2020 -0300 Branches: master https://developer.blender.org/rBd1112ae0d0e602fcba58c39147cbcd66fe624564 Merge branch 'blender-v2.82-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [b4f8e3f01bc] blender-v2.82-release: Fix T69776: Error with complex Eevee noise texture in some drivers
Commit: b4f8e3f01bc91c98cc8b37f9a6f4ab8378e807eb Author: Patrick Bender Date: Wed Feb 5 22:53:53 2020 -0300 Branches: blender-v2.82-release https://developer.blender.org/rBb4f8e3f01bc91c98cc8b37f9a6f4ab8378e807eb Fix T69776: Error with complex Eevee noise texture in some drivers Apparently the compiled shader bump into some register limit and the compiler instead of giving an error, does something incorrectly. Differential Revision: https://developer.blender.org/D6759 === M source/blender/gpu/intern/gpu_material_library.h M source/blender/gpu/shaders/material/gpu_shader_material_math_util.glsl M source/blender/gpu/shaders/material/gpu_shader_material_noise.glsl === diff --git a/source/blender/gpu/intern/gpu_material_library.h b/source/blender/gpu/intern/gpu_material_library.h index 08c36e24920..0d697a31c35 100644 --- a/source/blender/gpu/intern/gpu_material_library.h +++ b/source/blender/gpu/intern/gpu_material_library.h @@ -139,9 +139,7 @@ static GPUMaterialLibrary gpu_shader_material_hash_library = { static GPUMaterialLibrary gpu_shader_material_noise_library = { .code = datatoc_gpu_shader_material_noise_glsl, -.dependencies = {_shader_material_math_util_library, - _shader_material_hash_library, - NULL}, +.dependencies = {_shader_material_hash_library, NULL}, }; static GPUMaterialLibrary gpu_shader_material_fractal_noise_library = { diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_math_util.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_math_util.glsl index e8487fb5d42..5c1ee05f094 100644 --- a/source/blender/gpu/shaders/material/gpu_shader_material_math_util.glsl +++ b/source/blender/gpu/shaders/material/gpu_shader_material_math_util.glsl @@ -48,13 +48,6 @@ int quick_floor(float x) return int(x) - ((x < 0) ? 1 : 0); } -float floorfrac(float x, out int i) -{ - float x_floor = floor(x); - i = int(x_floor); - return x - x_floor; -} - /* Vector Math */ vec2 safe_divide(vec2 a, vec2 b) diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_noise.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_noise.glsl index c184c61c269..cc65b1eb57c 100644 --- a/source/blender/gpu/shaders/material/gpu_shader_material_noise.glsl +++ b/source/blender/gpu/shaders/material/gpu_shader_material_noise.glsl @@ -1,3 +1,7 @@ +/* clang-format off */ +#define FLOORFRAC(x, x_int, x_fract) { float x_floor = floor(x); x_int = int(x_floor); x_fract = x - x_floor; } +/* clang-format on */ + /* Bilinear Interpolation: * * v2 v3 @@ -124,7 +128,10 @@ float noise_grad(uint hash, float x, float y, float z, float w) float noise_perlin(float x) { int X; - float fx = floorfrac(x, X); + float fx; + + FLOORFRAC(x, X, fx); + float u = fade(fx); float r = mix(noise_grad(hash_int(X), fx), noise_grad(hash_int(X + 1), fx - 1.0), u); @@ -134,11 +141,11 @@ float noise_perlin(float x) float noise_perlin(vec2 vec) { - int X; - int Y; + int X, Y; + float fx, fy; - float fx = floorfrac(vec.x, X); - float fy = floorfrac(vec.y, Y); + FLOORFRAC(vec.x, X, fx); + FLOORFRAC(vec.y, Y, fy); float u = fade(fx); float v = fade(fy); @@ -155,13 +162,12 @@ float noise_perlin(vec2 vec) float noise_perlin(vec3 vec) { - int X; - int Y; - int Z; + int X, Y, Z; + float fx, fy, fz; - float fx = floorfrac(vec.x, X); - float fy = floorfrac(vec.y, Y); - float fz = floorfrac(vec.z, Z); + FLOORFRAC(vec.x, X, fx); + FLOORFRAC(vec.y, Y, fy); + FLOORFRAC(vec.z, Z, fz); float u = fade(fx); float v = fade(fy); @@ -184,15 +190,13 @@ float noise_perlin(vec3 vec) float noise_perlin(vec4 vec) { - int X; - int Y; - int Z; - int W; - - float fx = floorfrac(vec.x, X); - float fy = floorfrac(vec.y, Y); - float fz = floorfrac(vec.z, Z); - float fw = floorfrac(vec.w, W); + int X, Y, Z, W; + float fx, fy, fz, fw; + + FLOORFRAC(vec.x, X, fx); + FLOORFRAC(vec.y, Y, fy); + FLOORFRAC(vec.z, Z, fz); + FLOORFRAC(vec.w, W, fw); float u = fade(fx); float v = fade(fy); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [742c5a0018b] greasepencil-refactor: GPencil: Initial implementation of the layer mask relationship
Commit: 742c5a0018bd7d2df53d12ceeeba038450eaabae Author: Antonio Vazquez Date: Wed Feb 5 19:46:21 2020 +0100 Branches: greasepencil-refactor https://developer.blender.org/rB742c5a0018bd7d2df53d12ceeeba038450eaabae GPencil: Initial implementation of the layer mask relationship Now, there is a new parameter to define the mask used by layer. Still pending to remove old `use_mask` property in C and python (not removed yet to keep running the masking UI). === M release/scripts/startup/bl_ui/properties_data_gpencil.py M source/blender/blenkernel/intern/gpencil.c M source/blender/makesdna/DNA_gpencil_types.h M source/blender/makesrna/intern/rna_gpencil.c === diff --git a/release/scripts/startup/bl_ui/properties_data_gpencil.py b/release/scripts/startup/bl_ui/properties_data_gpencil.py index 192b68e6c10..02745874283 100644 --- a/release/scripts/startup/bl_ui/properties_data_gpencil.py +++ b/release/scripts/startup/bl_ui/properties_data_gpencil.py @@ -174,6 +174,8 @@ class DATA_PT_gpencil_layers(DataButtonsPanel, Panel): if not gpl.mask_layer: col = layout.row(align=True) col.prop(gpl, "blend_mode", text="Blend") +col = layout.row(align=True) +col.prop_search(gpl, "mask_layer_name", gpd, "layers", icon='GREASEPENCIL') col = layout.row(align=True) col.prop(gpl, "opacity", text="Opacity", slider=True) diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index ee674001caf..5ec6c81080b 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -397,7 +397,7 @@ bGPDlayer *BKE_gpencil_layer_addnew(bGPdata *gpd, const char *name, bool setacti /* Enable always affected by scene lights. */ gpl->flag |= GP_LAYER_USE_LIGHTS; - + gpl->mask_layer[0] = '\0'; /* make this one the active one */ if (setactive) { BKE_gpencil_layer_active_set(gpd, gpl); diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h index 3a012ce0949..409b758d570 100644 --- a/source/blender/makesdna/DNA_gpencil_types.h +++ b/source/blender/makesdna/DNA_gpencil_types.h @@ -403,6 +403,9 @@ typedef struct bGPDlayer { float gcolor_next[3]; char _pad1[4]; + /** Mask Layer name. */ + char mask_layer[64]; + bGPDlayer_Runtime runtime; } bGPDlayer; @@ -431,7 +434,7 @@ typedef enum eGPDlayer_Flag { /* Unlock color */ GP_LAYER_UNLOCK_COLOR = (1 << 12), /* Mask Layer */ - GP_LAYER_USE_MASK = (1 << 13), + GP_LAYER_USE_MASK = (1 << 13), /*TODO: DEPRECATED */ /* Ruler Layer */ GP_LAYER_IS_RULER = (1 << 14), /* Invert masking behavior */ diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c index ec344d99414..ffe8845b6d5 100644 --- a/source/blender/makesrna/intern/rna_gpencil.c +++ b/source/blender/makesrna/intern/rna_gpencil.c @@ -1477,6 +1477,11 @@ static void rna_def_gpencil_layer(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Blend Mode", "Blend mode"); RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update"); + prop = RNA_def_property(srna, "mask_layer_name", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "mask_layer"); + RNA_def_property_ui_text(prop, "Mask", "Name of the masking layer"); + RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update"); + /* Flags */ prop = RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_HIDE); @@ -1512,13 +1517,14 @@ static void rna_def_gpencil_layer(BlenderRNA *brna) prop, "Disallow Locked Materials Editing", "Avoids editing locked materials in the layer"); RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, NULL); +# /* TODO: Deprecated */ prop = RNA_def_property(srna, "mask_layer", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_USE_MASK); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_boolean_funcs(prop, NULL, "rna_GPencil_layer_mask_set"); RNA_def_property_ui_text(prop, "Mask Layer", "Mask pixels from underlying layers drawing"); RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update"); - +# prop = RNA_def_property(srna, "invert_mask", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_MASK_INVERT); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [cad09e5227d] master: Merge branch 'blender-v2.82-release'
Commit: cad09e5227df3261662cba4a912605b6ffc671c1 Author: Clément Foucault Date: Wed Feb 5 19:32:51 2020 +0100 Branches: master https://developer.blender.org/rBcad09e5227df3261662cba4a912605b6ffc671c1 Merge branch 'blender-v2.82-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [092deb88b07] blender-v2.82-release: Fix T73127 EEVEE: Reflection plane not visible in lookdev without scene world
Commit: 092deb88b074848c5b252ba6b7bb2d9890c8a2cc Author: Clément Foucault Date: Wed Feb 5 19:32:16 2020 +0100 Branches: blender-v2.82-release https://developer.blender.org/rB092deb88b074848c5b252ba6b7bb2d9890c8a2cc Fix T73127 EEVEE: Reflection plane not visible in lookdev without scene world === M source/blender/draw/engines/eevee/eevee_lightprobes.c === diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c index 4b0af273f7f..7da9af55330 100644 --- a/source/blender/draw/engines/eevee/eevee_lightprobes.c +++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c @@ -382,70 +382,74 @@ void EEVEE_lightprobes_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedat } } - if (DRW_state_draw_support() && !LOOK_DEV_STUDIO_LIGHT_ENABLED(draw_ctx->v3d)) { + if (DRW_state_draw_support()) { DRWState state = DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_CULL_BACK; DRW_PASS_CREATE(psl->probe_display, state); -/* Cube Display */ -if (scene_eval->eevee.flag & SCE_EEVEE_SHOW_CUBEMAPS && lcache->cube_len > 1) { - int cube_len = lcache->cube_len - 1; /* don't count the world. */ - DRWShadingGroup *grp = DRW_shgroup_create(EEVEE_shaders_probe_cube_display_sh_get(), -psl->probe_display); - - DRW_shgroup_uniform_texture_ref(grp, "probeCubes", >cube_tx.tex); - DRW_shgroup_uniform_block(grp, "probe_block", sldata->probe_ubo); - DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); - DRW_shgroup_uniform_vec3(grp, "screen_vecs[0]", DRW_viewport_screenvecs_get(), 2); - DRW_shgroup_uniform_float_copy( - grp, "sphere_size", scene_eval->eevee.gi_cubemap_draw_size * 0.5f); - /* TODO (fclem) get rid of those UBO. */ - DRW_shgroup_uniform_block(grp, "planar_block", sldata->planar_ubo); - DRW_shgroup_uniform_block(grp, "grid_block", sldata->grid_ubo); - - DRW_shgroup_call_procedural_triangles(grp, NULL, cube_len * 2); -} - -/* Grid Display */ -if (scene_eval->eevee.flag & SCE_EEVEE_SHOW_IRRADIANCE) { - EEVEE_LightGrid *egrid = lcache->grid_data + 1; - for (int p = 1; p < lcache->grid_len; p++, egrid++) { -DRWShadingGroup *shgrp = DRW_shgroup_create(EEVEE_shaders_probe_grid_display_sh_get(), -psl->probe_display); - -DRW_shgroup_uniform_int(shgrp, "offset", >offset, 1); -DRW_shgroup_uniform_ivec3(shgrp, "grid_resolution", egrid->resolution, 1); -DRW_shgroup_uniform_vec3(shgrp, "corner", egrid->corner, 1); -DRW_shgroup_uniform_vec3(shgrp, "increment_x", egrid->increment_x, 1); -DRW_shgroup_uniform_vec3(shgrp, "increment_y", egrid->increment_y, 1); -DRW_shgroup_uniform_vec3(shgrp, "increment_z", egrid->increment_z, 1); -DRW_shgroup_uniform_vec3(shgrp, "screen_vecs[0]", DRW_viewport_screenvecs_get(), 2); -DRW_shgroup_uniform_texture_ref(shgrp, "irradianceGrid", >grid_tx.tex); +if (!LOOK_DEV_STUDIO_LIGHT_ENABLED(draw_ctx->v3d)) { + /* Cube Display */ + if (scene_eval->eevee.flag & SCE_EEVEE_SHOW_CUBEMAPS && lcache->cube_len > 1) { +int cube_len = lcache->cube_len - 1; /* don't count the world. */ +DRWShadingGroup *grp = DRW_shgroup_create(EEVEE_shaders_probe_cube_display_sh_get(), + psl->probe_display); + +DRW_shgroup_uniform_texture_ref(grp, "probeCubes", >cube_tx.tex); +DRW_shgroup_uniform_block(grp, "probe_block", sldata->probe_ubo); +DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); +DRW_shgroup_uniform_vec3(grp, "screen_vecs[0]", DRW_viewport_screenvecs_get(), 2); DRW_shgroup_uniform_float_copy( -shgrp, "sphere_size", scene_eval->eevee.gi_irradiance_draw_size * 0.5f); +grp, "sphere_size", scene_eval->eevee.gi_cubemap_draw_size * 0.5f); /* TODO (fclem) get rid of those UBO. */ -DRW_shgroup_uniform_block(shgrp, "probe_block", sldata->probe_ubo); -DRW_shgroup_uniform_block(shgrp, "planar_block", sldata->planar_ubo); -DRW_shgroup_uniform_block(shgrp, "grid_block", sldata->grid_ubo); -DRW_shgroup_uniform_block(shgrp, "common_block", sldata->common_ubo); -int tri_count = egrid->resolution[0] * egrid->resolution[1] * egrid->resolution[2] * 2; -DRW_shgroup_call_procedural_triangles(shgrp, NULL, tri_count); +DRW_shgroup_uniform_block(grp, "planar_block", sldata->planar_ubo); +DRW_shgroup_uniform_block(grp, "grid_block", sldata->grid_ubo); + +DRW_shgroup_call_procedural_triangles(grp, NULL, cube_len * 2); + } + + /*
[Bf-blender-cvs] [8725d1252ea] new-object-types: Volume: initial support for frame sequences
Commit: 8725d1252ea3b2161eb84ed6162456b0d17d0ce7 Author: Brecht Van Lommel Date: Wed Feb 5 11:25:21 2020 +0100 Branches: new-object-types https://developer.blender.org/rB8725d1252ea3b2161eb84ed6162456b0d17d0ce7 Volume: initial support for frame sequences There is frame duration/start/offset just like images. A difference is that there are more playback modes: clip, extend, repeat, ping-pong. Still missing is auto detect of frame sequences, the duration has to be manually entered now. === M intern/cycles/blender/blender_mesh.cpp M intern/cycles/blender/blender_sync.cpp M release/scripts/startup/bl_ui/properties_data_volume.py M source/blender/blenkernel/BKE_volume.h M source/blender/blenkernel/intern/volume.cc M source/blender/blenloader/intern/readfile.c M source/blender/depsgraph/CMakeLists.txt M source/blender/depsgraph/intern/builder/deg_builder_nodes.cc M source/blender/depsgraph/intern/builder/deg_builder_relations.cc M source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.cc M source/blender/depsgraph/intern/eval/deg_eval_runtime_backup.h A source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_volume.cc A source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_volume.h M source/blender/makesdna/DNA_volume_types.h M source/blender/makesrna/intern/rna_volume.c === diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index 86be9ee9a0f..40fe139c9b6 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -370,7 +370,7 @@ static void create_volume_object(BL::BlendData _data, BL::Object _ob, Scene VoxelAttribute *volume_data = attr->data_voxel(); ImageMetaData metadata; const bool animated = false; - const float frame = 0.0f; + const float frame = b_volume.grids.frame(); volume_data->manager = scene->image_manager; volume_data->slot = scene->image_manager->add_image(name.c_str(), diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 20dbe23cdb7..9e89d36a380 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -173,6 +173,11 @@ void BlenderSync::sync_recalc(BL::Depsgraph _depsgraph, BL::SpaceView3D _v3d world_recalc = true; } } +/* Volume */ +else if (b_id.is_a(_Volume)) { + BL::Volume b_volume(b_id); + mesh_map.set_recalc(b_volume); +} } BlenderViewportParameters new_viewport_parameters(b_v3d); diff --git a/release/scripts/startup/bl_ui/properties_data_volume.py b/release/scripts/startup/bl_ui/properties_data_volume.py index e95aee645ae..ae68123f3de 100644 --- a/release/scripts/startup/bl_ui/properties_data_volume.py +++ b/release/scripts/startup/bl_ui/properties_data_volume.py @@ -51,8 +51,8 @@ class DATA_PT_context_volume(DataButtonsPanel, Panel): layout.template_ID(space, "pin_id") -class DATA_PT_volume(DataButtonsPanel, Panel): -bl_label = "Volume" +class DATA_PT_volume_file(DataButtonsPanel, Panel): +bl_label = "OpenVDB File" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'} def draw(self, context): @@ -63,8 +63,21 @@ class DATA_PT_volume(DataButtonsPanel, Panel): layout.prop(volume, "filepath", text="") +if len(volume.filepath): +layout.use_property_split = True +layout.use_property_decorate = False + +col = layout.column(align=True) +col.prop(volume, "is_sequence") +if volume.is_sequence: +col.prop(volume, "frame_duration", text="Frames") +col.prop(volume, "frame_start", text="Start") +col.prop(volume, "frame_offset", text="Offset") +col.prop(volume, "sequence_mode", text="Mode") + error_msg = volume.grids.error_message if len(error_msg): + layout.separator() col = layout.column(align=True) col.label(text="Failed to load volume:") col.label(text=error_msg) @@ -96,8 +109,8 @@ class DATA_PT_custom_props_volume(DataButtonsPanel, PropertyPanel, Panel): classes = ( DATA_PT_context_volume, -DATA_PT_volume, DATA_PT_volume_grids, +DATA_PT_volume_file, DATA_PT_custom_props_volume, VOLUME_UL_grids, ) diff --git a/source/blender/blenkernel/BKE_volume.h b/source/blender/blenkernel/BKE_volume.h index 9224e95327b..7e0e47be5e8 100644 --- a/source/blender/blenkernel/BKE_volume.h +++ b/source/blender/blenkernel/BKE_volume.h @@ -62,6 +62,7 @@ struct BoundBox *BKE_volume_boundbox_get(struct Object *ob); struct Volume *BKE_volume_new_for_eval(const struct Volume *volume_src); struct Volume
[Bf-blender-cvs] [713b5a862ab] new-object-types: Volumes: debug logging for grid file load/unload
Commit: 713b5a862abad459b183d1d7c2c640a02f3cfa3e Author: Brecht Van Lommel Date: Wed Feb 5 19:04:39 2020 +0100 Branches: new-object-types https://developer.blender.org/rB713b5a862abad459b183d1d7c2c640a02f3cfa3e Volumes: debug logging for grid file load/unload === M source/blender/blenkernel/intern/volume.cc === diff --git a/source/blender/blenkernel/intern/volume.cc b/source/blender/blenkernel/intern/volume.cc index aff410639e0..d6da0594188 100644 --- a/source/blender/blenkernel/intern/volume.cc +++ b/source/blender/blenkernel/intern/volume.cc @@ -27,6 +27,7 @@ #include "DNA_object_types.h" #include "DNA_volume_types.h" +#include "BLI_fileops.h" #include "BLI_math.h" #include "BLI_path_util.h" #include "BLI_string.h" @@ -45,6 +46,10 @@ #include "DEG_depsgraph_query.h" +#include "CLG_log.h" + +static CLG_LogRef LOG = {"bke.volume"}; + #ifdef WITH_OPENVDB # include # include @@ -199,6 +204,17 @@ bool BKE_volume_load(Volume *volume, Main *bmain) STRNCPY(grids.filepath, volume->filepath); BLI_path_abs(grids.filepath, ID_BLEND_PATH(bmain, >id)); + CLOG_INFO(, 1, "Volume %s: load %s", volume->id.name + 2, grids.filepath); + + /* Test if file exists. */ + if (!BLI_exists(grids.filepath)) { +char filename[FILE_MAX]; +BLI_split_file_part(grids.filepath, filename, sizeof(filename)); +grids.error_msg = filename + std::string(" not found"); +CLOG_INFO(, 1, "Volume %s: %s", volume->id.name + 2, grids.error_msg.c_str()); +return false; + } + /* Open OpenVDB file. */ openvdb::io::File file(grids.filepath); openvdb::GridPtrVec vdb_grids; @@ -210,12 +226,13 @@ bool BKE_volume_load(Volume *volume, Main *bmain) } catch (const openvdb::IoError ) { grids.error_msg = e.what(); +CLOG_INFO(, 1, "Volume %s: %s", volume->id.name + 2, grids.error_msg.c_str()); } /* Add grids read from file to own vector, filtering out any NULL pointers. */ for (const openvdb::GridBase::Ptr vdb_grid : vdb_grids) { if (vdb_grid) { - volume->grids->emplace_back(vdb_grid, false); + grids.emplace_back(vdb_grid, false); } } @@ -230,9 +247,12 @@ void BKE_volume_unload(Volume *volume) { #ifdef WITH_OPENVDB VolumeGridVector = *volume->grids; - grids.clear(); - grids.error_msg.clear(); - grids.filepath[0] = '\0'; + if (grids.filepath[0] != '\0') { +CLOG_INFO(, 1, "Volume %s: unload", volume->id.name + 2); +grids.clear(); +grids.error_msg.clear(); +grids.filepath[0] = '\0'; + } #else UNUSED_VARS(volume); #endif @@ -470,6 +490,8 @@ bool BKE_volume_grid_load(Volume *volume, VolumeGrid *grid) return grids.error_msg.empty(); } + CLOG_INFO(, 1, "Volume %s: load grid '%s'", volume->id.name + 2, BKE_volume_grid_name(grid)); + /* Read OpenVDB grid on-demand. */ /* TODO: avoid repeating this for multiple grids when we know we will * need them? How best to do it without keeping the file open forever? */ ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [b51c292fc87] new-object-types: Volumes: show active grid in workbench
Commit: b51c292fc8765fb883fa80d82a6a2eb3760ed558 Author: Brecht Van Lommel Date: Wed Feb 5 16:56:16 2020 +0100 Branches: new-object-types https://developer.blender.org/rBb51c292fc8765fb883fa80d82a6a2eb3760ed558 Volumes: show active grid in workbench === M source/blender/blenkernel/BKE_volume.h M source/blender/blenkernel/intern/volume.cc M source/blender/draw/engines/eevee/eevee_volumes.c M source/blender/draw/engines/workbench/workbench_volume.c M source/blender/draw/intern/draw_cache.h M source/blender/draw/intern/draw_cache_impl_volume.c M source/blender/makesrna/intern/rna_volume.c === diff --git a/source/blender/blenkernel/BKE_volume.h b/source/blender/blenkernel/BKE_volume.h index 75b8db09c21..9224e95327b 100644 --- a/source/blender/blenkernel/BKE_volume.h +++ b/source/blender/blenkernel/BKE_volume.h @@ -93,6 +93,7 @@ bool BKE_volume_is_loaded(const struct Volume *volume); int BKE_volume_num_grids(struct Volume *volume); const char *BKE_volume_grids_error_msg(const struct Volume *volume); VolumeGrid *BKE_volume_grid_get(struct Volume *volume, int grid_index); +VolumeGrid *BKE_volume_grid_active_get(struct Volume *volume); VolumeGrid *BKE_volume_grid_find(struct Volume *volume, const char *name); /* Grid diff --git a/source/blender/blenkernel/intern/volume.cc b/source/blender/blenkernel/intern/volume.cc index efb8bfc9d6b..aff410639e0 100644 --- a/source/blender/blenkernel/intern/volume.cc +++ b/source/blender/blenkernel/intern/volume.cc @@ -429,6 +429,17 @@ VolumeGrid *BKE_volume_grid_get(Volume *volume, int grid_index) #endif } +VolumeGrid *BKE_volume_grid_active_get(Volume *volume) +{ + const int num_grids = BKE_volume_num_grids(volume); + if (num_grids == 0) { +return NULL; + } + + const int index = clamp_i(volume->active_grid, 0, num_grids - 1); + return BKE_volume_grid_get(volume, index); +} + VolumeGrid *BKE_volume_grid_find(Volume *volume, const char *name) { int num_grids = BKE_volume_num_grids(volume); diff --git a/source/blender/draw/engines/eevee/eevee_volumes.c b/source/blender/draw/engines/eevee/eevee_volumes.c index 1f8b520b5d4..ab98b7abe73 100644 --- a/source/blender/draw/engines/eevee/eevee_volumes.c +++ b/source/blender/draw/engines/eevee/eevee_volumes.c @@ -32,9 +32,10 @@ #include "DNA_volume_types.h" #include "DNA_world_types.h" -#include "BKE_modifier.h" -#include "BKE_mesh.h" #include "BKE_fluid.h" +#include "BKE_mesh.h" +#include "BKE_modifier.h" +#include "BKE_volume.h" #include "ED_screen.h" @@ -434,7 +435,11 @@ void EEVEE_volumes_cache_object_add(EEVEE_ViewLayerData *sldata, if (ob->type == OB_VOLUME) { // TODO: check what the BASE_FROM_DUPLI test is for, do we need it too? Volume *volume = ob->data; -DRWVolumeGrid *density = DRW_volume_batch_cache_get_grid(volume, "density"); +VolumeGrid *volume_density = BKE_volume_grid_find(volume, "density"); +if (volume_density == NULL) { + return; +} +DRWVolumeGrid *density = DRW_volume_batch_cache_get_grid(volume, volume_density); if (density == NULL) { return; } diff --git a/source/blender/draw/engines/workbench/workbench_volume.c b/source/blender/draw/engines/workbench/workbench_volume.c index ea8a0a82479..9a5fe7db5bd 100644 --- a/source/blender/draw/engines/workbench/workbench_volume.c +++ b/source/blender/draw/engines/workbench/workbench_volume.c @@ -232,8 +232,12 @@ static void workbench_volume_object_cache_populate(WORKBENCH_Data *vedata, Objec { /* Create 3D textures. */ Volume *volume = ob->data; - DRWVolumeGrid *density = DRW_volume_batch_cache_get_grid(volume, "density"); - if (density == NULL) { + VolumeGrid *volume_grid = BKE_volume_grid_active_get(volume); + if (volume_grid == NULL) { +return; + } + DRWVolumeGrid *grid = DRW_volume_batch_cache_get_grid(volume, volume_grid); + if (grid == NULL) { return; } @@ -258,7 +262,7 @@ static void workbench_volume_object_cache_populate(WORKBENCH_Data *vedata, Objec /* Combined texture to object, and object to world transform. */ float texture_to_world[4][4]; - mul_m4_m4m4(texture_to_world, ob->obmat, density->texture_to_object); + mul_m4_m4m4(texture_to_world, ob->obmat, grid->texture_to_object); /* Compute world space dimensions for step size. */ float world_size[3]; @@ -269,7 +273,7 @@ static void workbench_volume_object_cache_populate(WORKBENCH_Data *vedata, Objec double noise_ofs; BLI_halton_1d(3, 0.0, effect_info->jitter_index, _ofs); float step_length, max_slice; - float slice_ct[3] = {density->resolution[0], density->resolution[1], density->resolution[2]}; + float slice_ct[3] = {grid->resolution[0], grid->resolution[1], grid->resolution[2]}; mul_v3_fl(slice_ct, max_ff(0.001f, slice_per_voxel)); max_slice = max_fff(slice_ct[0], slice_ct[1],
[Bf-blender-cvs] [921ee974d89] new-object-types: Merge branch 'master' into new-object-types
Commit: 921ee974d896b1ab5afa5483b760d86c18ae4b99 Author: Brecht Van Lommel Date: Wed Feb 5 10:38:40 2020 +0100 Branches: new-object-types https://developer.blender.org/rB921ee974d896b1ab5afa5483b760d86c18ae4b99 Merge branch 'master' into new-object-types === === diff --cc release/datafiles/blender_icons.svg index 01183fb3091,ebebc82695a..16d50623fa4 --- a/release/datafiles/blender_icons.svg +++ b/release/datafiles/blender_icons.svg @@@ -5348,117 -5435,23 +5435,134 @@@ + + + + + +https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [77394ef1dbc] blender-v2.82-release: Fix T73517 Overlay: Edit Mode: X-Ray does not work if xray is equal to 1
Commit: 77394ef1dbca62a26ab598f8c9d77f5c92eca109 Author: Clément Foucault Date: Wed Feb 5 18:45:39 2020 +0100 Branches: blender-v2.82-release https://developer.blender.org/rB77394ef1dbca62a26ab598f8c9d77f5c92eca109 Fix T73517 Overlay: Edit Mode: X-Ray does not work if xray is equal to 1 === M source/blender/draw/engines/overlay/overlay_edit_mesh.c === diff --git a/source/blender/draw/engines/overlay/overlay_edit_mesh.c b/source/blender/draw/engines/overlay/overlay_edit_mesh.c index e016ccc6c0e..ee1b606bee5 100644 --- a/source/blender/draw/engines/overlay/overlay_edit_mesh.c +++ b/source/blender/draw/engines/overlay/overlay_edit_mesh.c @@ -96,7 +96,6 @@ void OVERLAY_edit_mesh_cache_init(OVERLAY_Data *vedata) if ((flag & V3D_OVERLAY_EDIT_FACES) == 0) { pd->edit_mesh.do_faces = false; -pd->edit_mesh.do_zbufclip = false; } if ((flag & V3D_OVERLAY_EDIT_EDGES) == 0) { if ((tsettings->selectmode & SCE_SELECT_EDGE) == 0) { ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [00a0f062410] master: Fix T66802: Edge Slide: Unpredictable direction of the edge loop when it is fully occluded
Commit: 00a0f062410a864e5592ed318ea4228c9dd2b589 Author: mano-wii Date: Wed Feb 5 14:42:22 2020 -0300 Branches: master https://developer.blender.org/rB00a0f062410a864e5592ed318ea4228c9dd2b589 Fix T66802: Edge Slide: Unpredictable direction of the edge loop when it is fully occluded When an edge loop is fully occluded the direction of movement is not calculated resulting in unpredictable behavior. So always calculate the direction of the groups of edge loops but continue preventing occluded edges from affecting `mval_dir` (global) value. Differential Revision: https://developer.blender.org/D5247 === M source/blender/editors/transform/transform.c === diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index c12821b321b..24efa33bdfa 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -6456,8 +6456,10 @@ static void calcEdgeSlide_mval_range(TransInfo *t, } /* This test is only relevant if object is not wire-drawn! See [#32068]. */ - if (use_occlude_geometry && - !BMBVH_EdgeVisible(bmbvh, e, t->depsgraph, ar, v3d, tc->obedit)) { + bool is_visible = !use_occlude_geometry || +BMBVH_EdgeVisible(bmbvh, e, t->depsgraph, ar, v3d, tc->obedit); + + if (!is_visible && !use_calc_direction) { continue; } @@ -6479,11 +6481,13 @@ static void calcEdgeSlide_mval_range(TransInfo *t, /* global direction */ dist_sq = dist_squared_to_line_segment_v2(mval, sco_b, sco_a); - if ((dist_best_sq == -1.0f) || - /* intentionally use 2d size on 3d vector */ - (dist_sq < dist_best_sq && (len_squared_v2v2(sco_b, sco_a) > 0.1f))) { -dist_best_sq = dist_sq; -sub_v3_v3v3(mval_dir, sco_b, sco_a); + if (is_visible) { +if ((dist_best_sq == -1.0f) || +/* intentionally use 2d size on 3d vector */ +(dist_sq < dist_best_sq && (len_squared_v2v2(sco_b, sco_a) > 0.1f))) { + dist_best_sq = dist_sq; + sub_v3_v3v3(mval_dir, sco_b, sco_a); +} } if (use_calc_direction) { ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [354b2a7b1d4] master: Transform: Optimize edge slide
Commit: 354b2a7b1d45957612845d828648ea15514570c0 Author: mano-wii Date: Wed Feb 5 14:20:41 2020 -0300 Branches: master https://developer.blender.org/rB354b2a7b1d45957612845d828648ea15514570c0 Transform: Optimize edge slide The current edge slide is executed in this sequence: - traverses all edges to find the ones selected, - traverses each vertex of the selected edges, - traverses each linked edge of the vertex to finally execute the code. However the list of vertices that are part of selected edges are already stored in `EdgeSlideData` through the `TransDataEdgeSlideVert *sv;` member. Therefore, the code can be simplified as follows: - traverses all `sv` in `EdgeSlideData`, - get the `sv->v` vertex to finally execute the code. Differential Revision: https://developer.blender.org/D5277 === M source/blender/editors/transform/transform.c === diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index ec39b457082..c12821b321b 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -6388,9 +6388,8 @@ static void calcEdgeSlide_mval_range(TransInfo *t, const bool use_occlude_geometry, const bool use_calc_direction) { - TransDataEdgeSlideVert *sv_array = sld->sv; + TransDataEdgeSlideVert *sv; BMEditMesh *em = BKE_editmesh_from_object(tc->obedit); - BMesh *bm = em->bm; ARegion *ar = t->ar; View3D *v3d = NULL; RegionView3D *rv3d = NULL; @@ -6402,8 +6401,6 @@ static void calcEdgeSlide_mval_range(TransInfo *t, float mval_start[2], mval_end[2]; float mval_dir[3], dist_best_sq; - BMIter iter; - BMEdge *e; if (t->spacetype == SPACE_VIEW3D) { /* background mode support */ @@ -6437,69 +6434,64 @@ static void calcEdgeSlide_mval_range(TransInfo *t, copy_vn_fl(loop_maxdist, loop_nr, -1.0f); } - BM_ITER_MESH (e, , bm, BM_EDGES_OF_MESH) { -if (BM_elem_flag_test(e, BM_ELEM_SELECT)) { - int i; + sv = >sv[0]; + for (int i = 0; i < sld->totsv; i++, sv++) { +BMIter iter_other; +BMEdge *e; +BMVert *v = sv->v; - /* search cross edges for visible edge to the mouse cursor, - * then use the shared vertex to calculate screen vector*/ - for (i = 0; i < 2; i++) { -BMIter iter_other; -BMEdge *e_other; - -BMVert *v = i ? e->v1 : e->v2; -BM_ITER_ELEM (e_other, _other, v, BM_EDGES_OF_VERT) { - /* screen-space coords */ - float sco_a[3], sco_b[3]; - float dist_sq; - int j, l_nr; - - if (BM_elem_flag_test(e_other, BM_ELEM_SELECT)) { -continue; - } +UNUSED_VARS_NDEBUG(sv_table); /* silence warning */ +BLI_assert(i == sv_table[BM_elem_index_get(v)]); - /* This test is only relevant if object is not wire-drawn! See [#32068]. */ - if (use_occlude_geometry && - !BMBVH_EdgeVisible(bmbvh, e_other, t->depsgraph, ar, v3d, tc->obedit)) { -continue; - } +/* search cross edges for visible edge to the mouse cursor, + * then use the shared vertex to calculate screen vector*/ +BM_ITER_ELEM (e, _other, v, BM_EDGES_OF_VERT) { + /* screen-space coords */ + float sco_a[3], sco_b[3]; + float dist_sq; + int l_nr; - BLI_assert(sv_table[BM_elem_index_get(v)] != -1); - j = sv_table[BM_elem_index_get(v)]; + if (BM_elem_flag_test(e, BM_ELEM_SELECT)) { +continue; + } - if (sv_array[j].v_side[1]) { -ED_view3d_project_float_v3_m4(ar, sv_array[j].v_side[1]->co, sco_b, projectMat); - } - else { -add_v3_v3v3(sco_b, v->co, sv_array[j].dir_side[1]); -ED_view3d_project_float_v3_m4(ar, sco_b, sco_b, projectMat); - } + /* This test is only relevant if object is not wire-drawn! See [#32068]. */ + if (use_occlude_geometry && + !BMBVH_EdgeVisible(bmbvh, e, t->depsgraph, ar, v3d, tc->obedit)) { +continue; + } - if (sv_array[j].v_side[0]) { -ED_view3d_project_float_v3_m4(ar, sv_array[j].v_side[0]->co, sco_a, projectMat); - } - else { -add_v3_v3v3(sco_a, v->co, sv_array[j].dir_side[0]); -ED_view3d_project_float_v3_m4(ar, sco_a, sco_a, projectMat); - } + if (sv->v_side[1]) { +ED_view3d_project_float_v3_m4(ar, sv->v_side[1]->co, sco_b, projectMat); + } + else { +add_v3_v3v3(sco_b, v->co, sv->dir_side[1]); +ED_view3d_project_float_v3_m4(ar, sco_b, sco_b, projectMat); + } - /* global direction */ - dist_sq = dist_squared_to_line_segment_v2(mval, sco_b, sco_a); - if ((dist_best_sq == -1.0f) || -
[Bf-blender-cvs] [cb46cc67056] functions: Merge branch 'master' into functions
Commit: cb46cc6705619b449fdbd1b677ce864871f48d66 Author: Jacques Lucke Date: Wed Feb 5 17:34:24 2020 +0100 Branches: functions https://developer.blender.org/rBcb46cc6705619b449fdbd1b677ce864871f48d66 Merge branch 'master' into functions === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [3883ffbefb6] greasepencil-refactor: Merge branch 'greasepencil-object' into greasepencil-refactor
Commit: 3883ffbefb67c379c1f21a3b7cf5f1c661914816 Author: Antonio Vazquez Date: Wed Feb 5 17:27:33 2020 +0100 Branches: greasepencil-refactor https://developer.blender.org/rB3883ffbefb67c379c1f21a3b7cf5f1c661914816 Merge branch 'greasepencil-object' into greasepencil-refactor === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [e2d4e2403a8] greasepencil-object: Merge branch 'master' into greasepencil-object
Commit: e2d4e2403a88959a0d189f985265a2b168877072 Author: Antonio Vazquez Date: Wed Feb 5 17:22:37 2020 +0100 Branches: greasepencil-object https://developer.blender.org/rBe2d4e2403a88959a0d189f985265a2b168877072 Merge branch 'master' into greasepencil-object === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [0a95a0852eb] blender-v2.82-release: Fix T69834 Edit Mesh: Multi-object edit crash when an instance is hidden
Commit: 0a95a0852eb190613f93639a503416158c8cfc4a Author: Clément Foucault Date: Wed Feb 5 17:22:36 2020 +0100 Branches: blender-v2.82-release https://developer.blender.org/rB0a95a0852eb190613f93639a503416158c8cfc4a Fix T69834 Edit Mesh: Multi-object edit crash when an instance is hidden This was caused by a missing tag of the mesh datablock. === M source/blender/editors/object/object_edit.c === diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 8012565ba2e..098a4c65ae0 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -544,6 +544,8 @@ bool ED_object_editmode_exit_ex(Main *bmain, Scene *scene, Object *obedit, int f if (UNLIKELY(obedit && obedit->mode & OB_MODE_EDIT)) { obedit->mode &= ~OB_MODE_EDIT; } +/* Also happens when mesh is shared across multiple objects. [#T69834] */ +DEG_id_tag_update(>id, ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY); return true; } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [300c64299c8] greasepencil-refactor: Merge branch 'greasepencil-object' into greasepencil-refactor
Commit: 300c64299c8f9e4add2b5b6d9cd5520bf3dbdd0c Author: Antonio Vazquez Date: Wed Feb 5 17:07:43 2020 +0100 Branches: greasepencil-refactor https://developer.blender.org/rB300c64299c8f9e4add2b5b6d9cd5520bf3dbdd0c Merge branch 'greasepencil-object' into greasepencil-refactor Conflicts: source/blender/blenloader/intern/readfile.c source/blender/blenloader/intern/versioning_280.c === === diff --cc source/blender/blenloader/intern/readfile.c index e176415456e,4fba2c8b487..b89ca0bcbe5 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@@ -7204,28 -6937,18 +6937,18 @@@ static void direct_link_scene(FileData * \{ */ /* relink's grease pencil data's refs */ - static void lib_link_gpencil(FileData *fd, Main *main) + static void lib_link_gpencil(FileData *fd, Main *UNUSED(bmain), bGPdata *gpd) { /* Relink all data-lock linked by GP data-lock */ - for (bGPdata *gpd = main->gpencils.first; gpd; gpd = gpd->id.next) { - if (gpd->id.tag & LIB_TAG_NEED_LINK) { - /* Layers */ - LISTBASE_FOREACH (bGPDlayer *, gpl, >layers) { - /* Layer -> Parent References */ - gpl->parent = newlibadr(fd, gpd->id.lib, gpl->parent); - } - - /* Data-block Stuff */ - IDP_LibLinkProperty(gpd->id.properties, fd); - lib_link_animdata(fd, >id, gpd->adt); - - /* materials */ - for (int a = 0; a < gpd->totcol; a++) { - gpd->mat[a] = newlibadr_us(fd, gpd->id.lib, gpd->mat[a]); - } + /* Layers */ - for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) { ++LISTBASE_FOREACH(bGPDlayer*, gpl, >layers) { + /* Layer -> Parent References */ + gpl->parent = newlibadr(fd, gpd->id.lib, gpl->parent); + } - gpd->id.tag &= ~LIB_TAG_NEED_LINK; - } + /* materials */ + for (int a = 0; a < gpd->totcol; a++) { + gpd->mat[a] = newlibadr_us(fd, gpd->id.lib, gpd->mat[a]); } } diff --cc source/blender/blenloader/intern/versioning_280.c index 8468533d633,8ff82407e1c..ff5b98d13a4 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@@ -14,11 -14,11 +14,11 @@@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ --/** \file -- * \ingroup blenloader -- */ ++ /** \file ++ * \ingroup blenloader ++ */ --/* allow readfile to use deprecated functionality */ ++ /* allow readfile to use deprecated functionality */ #define DNA_DEPRECATED_ALLOW #include @@@ -72,8 -71,8 +72,9 @@@ #include "BKE_customdata.h" #include "BKE_fcurve.h" #include "BKE_freestyle.h" + #include "BKE_global.h" #include "BKE_gpencil.h" +#include "BKE_gpencil_modifier.h" #include "BKE_idprop.h" #include "BKE_key.h" #include "BKE_library.h" @@@ -107,73 -106,73 +108,73 @@@ /* Make preferences read-only, use versioning_userdef.c. */ #define U (*((const UserDef *))) --static bScreen *screen_parent_find(const bScreen *screen) ++static bScreen* screen_parent_find(const bScreen* screen) { -- /* Can avoid lookup if screen state isn't maximized/full -- * (parent and child store the same state). */ -- if (ELEM(screen->state, SCREENMAXIMIZED, SCREENFULL)) { --for (const ScrArea *sa = screen->areabase.first; sa; sa = sa->next) { -- if (sa->full && sa->full != screen) { --BLI_assert(sa->full->state == screen->state); --return sa->full; -- } --} -- } -- -- return NULL; ++ /* Can avoid lookup if screen state isn't maximized/full ++ * (parent and child store the same state). */ ++ if (ELEM(screen->state, SCREENMAXIMIZED, SCREENFULL)) { ++ for (const ScrArea* sa = screen->areabase.first; sa; sa = sa->next) { ++ if (sa->full && sa->full != screen) { ++ BLI_assert(sa->full->state == screen->state); ++ return sa->full; ++ } ++ } ++ } ++ ++ return NULL; } --static void do_version_workspaces_create_from_screens(Main *bmain) ++static void do_version_workspaces_create_from_screens(Main* bmain) { -- for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { --const bScreen *screen_parent = screen_parent_find(screen); --WorkSpace *workspace; --if (screen->temp) { -- continue; --} -- --if (screen_parent) { -- /* Full-screen with "Back to Previous" option, don't create -- * a new workspace, add layout workspace containing parent. */ -- workspace = BLI_findstring( -- >workspaces, screen_parent->id.name + 2, offsetof(ID, name) + 2); --} --else { -- workspace = BKE_workspace_add(bmain, screen->id.name + 2); --} --if (workspace == NULL) { -- continue; /* Not much we can
[Bf-blender-cvs] [21f7accd3b0] greasepencil-refactor: include last master changes
Commit: 21f7accd3b0d0ad08c11ca6a0bd70e7939ad6f14 Author: Antonio Vazquez Date: Wed Feb 5 16:52:40 2020 +0100 Branches: greasepencil-refactor https://developer.blender.org/rB21f7accd3b0d0ad08c11ca6a0bd70e7939ad6f14 include last master changes There was a problem in the last merge === M CMakeLists.txt M build_files/build_environment/patches/cmake/modules/FindBlosc.cmake M build_files/build_environment/patches/cmake/modules/FindCppUnit.cmake M build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake M build_files/build_environment/patches/cmake/modules/FindLogC4Plus.cmake M build_files/build_environment/patches/cmake/modules/FindOpenEXR.cmake M build_files/build_environment/patches/cmake/modules/FindTBB.cmake M build_files/cmake/Modules/FindAlembic.cmake M build_files/cmake/Modules/FindAudaspace.cmake M build_files/cmake/Modules/FindBlosc.cmake M build_files/cmake/Modules/FindEigen3.cmake M build_files/cmake/Modules/FindEmbree.cmake M build_files/cmake/Modules/FindFftw3.cmake M build_files/cmake/Modules/FindGLEW.cmake M build_files/cmake/Modules/FindGflags.cmake M build_files/cmake/Modules/FindGlog.cmake M build_files/cmake/Modules/FindHDF5.cmake M build_files/cmake/Modules/FindIcuLinux.cmake M build_files/cmake/Modules/FindJack.cmake M build_files/cmake/Modules/FindJeMalloc.cmake M build_files/cmake/Modules/FindLZO.cmake M build_files/cmake/Modules/FindOpenCOLLADA.cmake M build_files/cmake/Modules/FindOpenColorIO.cmake M build_files/cmake/Modules/FindOpenEXR.cmake M build_files/cmake/Modules/FindOpenGLES.cmake M build_files/cmake/Modules/FindOpenImageDenoise.cmake M build_files/cmake/Modules/FindOpenImageIO.cmake M build_files/cmake/Modules/FindOpenJPEG.cmake M build_files/cmake/Modules/FindOpenShadingLanguage.cmake M build_files/cmake/Modules/FindOpenSubdiv.cmake M build_files/cmake/Modules/FindOpenVDB.cmake M build_files/cmake/Modules/FindOptiX.cmake M build_files/cmake/Modules/FindPCRE.cmake M build_files/cmake/Modules/FindPugiXML.cmake M build_files/cmake/Modules/FindPythonLibsUnix.cmake M build_files/cmake/Modules/FindSDL2.cmake M build_files/cmake/Modules/FindSndFile.cmake M build_files/cmake/Modules/FindSpacenav.cmake M build_files/cmake/Modules/FindTBB.cmake M build_files/cmake/Modules/FindUSD.cmake M build_files/cmake/Modules/FindXML2.cmake M build_files/cmake/platform/platform_unix.cmake M source/blender/blenloader/intern/readfile.c M source/blender/blenloader/intern/versioning_280.c M source/blender/collada/ErrorHandler.cpp M source/blender/makesdna/DNA_scene_types.h === diff --git a/CMakeLists.txt b/CMakeLists.txt index bbca47f26c1..509de9943e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -793,61 +793,6 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Release") endif() endif() -#- -# Platform specifics - -if(WITH_X11) - find_package(X11 REQUIRED) - - find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH}) - mark_as_advanced(X11_XF86keysym_INCLUDE_PATH) - - list(APPEND PLATFORM_LINKLIBS ${X11_X11_LIB}) - - if(WITH_X11_XINPUT) -if(X11_Xinput_LIB) - list(APPEND PLATFORM_LINKLIBS ${X11_Xinput_LIB}) -else() - message(FATAL_ERROR "LibXi not found. Disable WITH_X11_XINPUT if you - want to build without tablet support") -endif() - endif() - - if(WITH_X11_XF86VMODE) -# XXX, why doesn't cmake make this available? -find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH}) -mark_as_advanced(X11_Xxf86vmode_LIB) -if(X11_Xxf86vmode_LIB) - list(APPEND PLATFORM_LINKLIBS ${X11_Xxf86vmode_LIB}) -else() - message(FATAL_ERROR "libXxf86vm not found. Disable WITH_X11_XF86VMODE if you - want to build without") -endif() - endif() - - if(WITH_X11_XFIXES) -if(X11_Xfixes_LIB) - list(APPEND PLATFORM_LINKLIBS ${X11_Xfixes_LIB}) -else() - message(FATAL_ERROR "libXfixes not found. Disable WITH_X11_XFIXES if you - want to build without") -endif() - endif() - - if(WITH_X11_ALPHA) -find_library(X11_Xrender_LIB Xrender ${X11_LIB_SEARCH_PATH}) -mark_as_advanced(X11_Xrender_LIB) -if(X11_Xrender_LIB) - list(APPEND PLATFORM_LINKLIBS ${X11_Xrender_LIB}) -else() - message(FATAL_ERROR "libXrender not found. Disable WITH_X11_ALPHA if you - want to build without") -endif() - endif() - -endif() - - # # Main Platform Checks # diff --git
[Bf-blender-cvs] [ea0dc96d77c] readfile-rework-refcount-handling: Merge branch 'master' into readfile-rework-refcount-handling
Commit: ea0dc96d77c7513716d72e621d7167f5c7b62e8e Author: Bastien Montagne Date: Wed Feb 5 17:04:59 2020 +0100 Branches: readfile-rework-refcount-handling https://developer.blender.org/rBea0dc96d77c7513716d72e621d7167f5c7b62e8e Merge branch 'master' into readfile-rework-refcount-handling Conflicts: source/blender/blenloader/intern/readfile.c === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [9829a3c4967] readfile-rework-refcount-handling: Refactor readfile's liblink code.
Commit: 9829a3c496743e0e6a557c9283f8c2cf2d9c1aa2 Author: Bastien Montagne Date: Fri Jan 31 19:56:36 2020 +0100 Branches: readfile-rework-refcount-handling https://developer.blender.org/rB9829a3c496743e0e6a557c9283f8c2cf2d9c1aa2 Refactor readfile's liblink code. Liblink specific ID type function was so far running a loop over all IDs of relevant type, unlike almost any other 'ID-callback-like' functions in Blender, which usually let the looping controll to calling code. The latter approach is more convinient when one want to add generic (i.e. type-agnostic) code, since it typically only has to change code in one place (caller function) instead of tens of places (all the callback functions). This commit also changes/sanitizes a few things that had nothing to do in main liblink code, like mesh conversion from tessfaces to polys (which can be done in after-linking versionning code), or scenes' cycles detection/check regarding background 'set' scenes. Differential Revision: https://developer.blender.org/D6727 === M source/blender/blenloader/intern/readfile.c M source/blender/blenloader/intern/versioning_280.c M source/blender/makesdna/DNA_scene_types.h === diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 5a834f31528..bc3ddbe9bd3 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -105,6 +105,7 @@ #include "BLT_translation.h" #include "BKE_action.h" +#include "BKE_animsys.h" #include "BKE_armature.h" #include "BKE_brush.h" #include "BKE_collection.h" @@ -2612,27 +2613,20 @@ static PreviewImage *direct_link_preview_image(FileData *fd, PreviewImage *old_p /** \name Read ID * \{ */ -static void lib_link_id(FileData *fd, Main *main) +static void lib_link_id(FileData *fd, Main *UNUSED(bmain), ID *id) { - ListBase *lbarray[MAX_LIBARRAY]; - int base_count, i; - - base_count = set_listbasepointers(main, lbarray); + /* Note: WM IDProperties are never written to file, hence they should always be NULL here. */ + BLI_assert((GS(id->name) != ID_WM) || id->properties == NULL); + IDP_LibLinkProperty(id->properties, fd); - for (i = 0; i < base_count; i++) { -ListBase *lb = lbarray[i]; -ID *id; + AnimData *adt = BKE_animdata_from_id(id); + if (adt != NULL) { +lib_link_animdata(fd, id, adt); + } -for (id = lb->first; id; id = id->next) { - if (id->tag & LIB_TAG_NEED_LINK) { -if (id->override_library) { - id->override_library->reference = newlibadr_us( - fd, id->lib, id->override_library->reference); - id->override_library->storage = newlibadr_us(fd, id->lib, id->override_library->storage); -} -/* DO NOT clear LIB_TAG_NEED_LINK here, it is used again by per-ID-type linkers. */ - } -} + if (id->override_library) { +id->override_library->reference = newlibadr_us(fd, id->lib, id->override_library->reference); +id->override_library->storage = newlibadr_us(fd, id->lib, id->override_library->storage); } } @@ -2722,36 +2716,27 @@ static void direct_link_curveprofile(FileData *fd, CurveProfile *profile) * \{ */ /* library brush linking after fileread */ -static void lib_link_brush(FileData *fd, Main *main) -{ - /* only link ID pointers */ - for (Brush *brush = main->brushes.first; brush; brush = brush->id.next) { -if (brush->id.tag & LIB_TAG_NEED_LINK) { - IDP_LibLinkProperty(brush->id.properties, fd); - - /* brush->(mask_)mtex.obj is ignored on purpose? */ - brush->mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mtex.tex); - brush->mask_mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mask_mtex.tex); - brush->clone.image = newlibadr(fd, brush->id.lib, brush->clone.image); - brush->toggle_brush = newlibadr(fd, brush->id.lib, brush->toggle_brush); - brush->paint_curve = newlibadr_us(fd, brush->id.lib, brush->paint_curve); - - /* link default grease pencil palette */ - if (brush->gpencil_settings != NULL) { -if (brush->gpencil_settings->flag & GP_BRUSH_MATERIAL_PINNED) { - brush->gpencil_settings->material = newlibadr_us( - fd, brush->id.lib, brush->gpencil_settings->material); - - if (!brush->gpencil_settings->material) { -brush->gpencil_settings->flag &= ~GP_BRUSH_MATERIAL_PINNED; - } -} -else { - brush->gpencil_settings->material = NULL; -} - } +static void lib_link_brush(FileData *fd, Main *UNUSED(bmain), Brush *brush) +{ + /* brush->(mask_)mtex.obj is ignored on purpose? */ + brush->mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mtex.tex); + brush->mask_mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mask_mtex.tex); + brush->clone.image = newlibadr(fd, brush->id.lib,
[Bf-blender-cvs] [8c7503726df] readfile-rework-refcount-handling: readfile: Quick experiment with refcounting moved to libquery.
Commit: 8c7503726df916ea74d94b853960d983bee80ccb Author: Bastien Montagne Date: Mon Feb 3 10:41:56 2020 +0100 Branches: readfile-rework-refcount-handling https://developer.blender.org/rB8c7503726df916ea74d94b853960d983bee80ccb readfile: Quick experiment with refcounting moved to libquery. Having that extra ID users handling at readfile level, besides generic one ensured by libquery, has been something bothering me for a long time (had to fix my share of bugs due to mismatches between those two areas). Further more, work on undo speedup will require even more complex ID refcount management if we want to keep it in readfile.c area. So idea is instead to generalize what we did for linked data already when undoing: recompute properly usercount numbers after liblink step, for all IDs. Note that extra time required here is neglectable in a whole .blend file reading (few extra milliseconds when loading a full production scene e.g.). === M source/blender/blenkernel/intern/blendfile.c M source/blender/blenloader/intern/readfile.c === diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c index 62173393256..4c1d34292dc 100644 --- a/source/blender/blenkernel/intern/blendfile.c +++ b/source/blender/blenkernel/intern/blendfile.c @@ -364,16 +364,6 @@ static void setup_app_data(bContext *C, /* TODO(sergey): Can this be also move above? */ RE_FreeAllPersistentData(); } - - if (mode == LOAD_UNDO) { -/* In undo/redo case, we do a whole lot of magic tricks to avoid having to re-read linked - * data-blocks from libraries (since those are not supposed to change). Unfortunately, that - * means that we do not reset their user count, however we do increase that one when doing - * lib_link on local IDs using linked ones. - * There is no real way to predict amount of changes here, so we have to fully redo - * refcounting . */ -BKE_main_id_refcount_recompute(bmain, true); - } } static void setup_app_blend_file_data(bContext *C, diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index bc3ddbe9bd3..daa2c26d881 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1792,7 +1792,7 @@ static void *newlibadr_us(FileData *fd, const void *lib, const void *adr) { ID *id = newlibadr(fd, lib, adr); - id_us_plus_no_lib(id); + /* id_us_plus_no_lib(id); */ return id; } @@ -1808,7 +1808,7 @@ static void *newlibadr_real_us(FileData *fd, const void *lib, const void *adr) { ID *id = newlibadr(fd, lib, adr); - id_us_ensure_real(id); + /* id_us_ensure_real(id); */ return id; } @@ -9395,7 +9395,7 @@ static void do_versions_after_linking(Main *main, ReportList *reports) /* */ /** \name Read Library Data Block (all) * \{ */ - +#include "PIL_time_utildefines.h" static void lib_link_all(FileData *fd, Main *bmain) { ID *id; @@ -9537,6 +9537,10 @@ static void lib_link_all(FileData *fd, Main *bmain) } FOREACH_MAIN_ID_END; + TIMEIT_START(readfile_refcount_recomp); + BKE_main_id_refcount_recompute(bmain, false); + TIMEIT_END(readfile_refcount_recomp); + /* Check for possible cycles in scenes' 'set' background property. */ lib_link_scenes_check_set(bmain); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [994e9f702fb] blender-v2.82-release: Fix T70121 EEVEE/GPencil: Curves cause crash when using background rendering
Commit: 994e9f702fb55c309fc84a1bb89fbf3f9c4a1fea Author: Clément Foucault Date: Wed Feb 5 16:05:34 2020 +0100 Branches: blender-v2.82-release https://developer.blender.org/rB994e9f702fb55c309fc84a1bb89fbf3f9c4a1fea Fix T70121 EEVEE/GPencil: Curves cause crash when using background rendering This was caused by a faulty initialization of cache->surf_per_mat which should have been empty. === M source/blender/draw/intern/draw_cache_impl_curve.c === diff --git a/source/blender/draw/intern/draw_cache_impl_curve.c b/source/blender/draw/intern/draw_cache_impl_curve.c index 25699cd7653..1c3996e2290 100644 --- a/source/blender/draw/intern/draw_cache_impl_curve.c +++ b/source/blender/draw/intern/draw_cache_impl_curve.c @@ -458,16 +458,10 @@ static void curve_batch_cache_init(Curve *cu) #endif cache->cd_used = 0; - cache->mat_len = max_ii(1, cu->totcol); - cache->surf_per_mat_tris = MEM_mallocN(sizeof(*cache->surf_per_mat_tris) * cache->mat_len, + cache->mat_len = DRW_curve_material_count_get(cu); + cache->surf_per_mat_tris = MEM_callocN(sizeof(*cache->surf_per_mat_tris) * cache->mat_len, __func__); - cache->surf_per_mat = MEM_mallocN(sizeof(*cache->surf_per_mat) * cache->mat_len, __func__); - - /* TODO Might be wiser to alloc in one chunk. */ - for (int i = 0; i < cache->mat_len; i++) { -cache->surf_per_mat_tris[i] = MEM_callocN(sizeof(GPUIndexBuf), "GPUIndexBuf"); -cache->surf_per_mat[i] = MEM_callocN(sizeof(GPUBatch), "GPUBatch"); - } + cache->surf_per_mat = MEM_callocN(sizeof(*cache->surf_per_mat) * cache->mat_len, __func__); cache->is_editmode = (cu->editnurb != NULL) || (cu->editfont != NULL); @@ -934,15 +928,13 @@ void DRW_curve_batch_cache_create_requested(Object *ob) /* Verify that all surface batches have needed attribute layers. */ /* TODO(fclem): We could be a bit smarter here and only do it per material. */ - for (int i = 0; i < cache->mat_len; i++) { -if ((cache->cd_used & cache->cd_needed) != cache->cd_needed) { + if ((cache->cd_used & cache->cd_needed) != cache->cd_needed) { +for (int i = 0; i < cache->mat_len; i++) { /* We can't discard batches at this point as they have been * referenced for drawing. Just clear them in place. */ - GPU_batch_clear(cache->surf_per_mat[i]); - memset(cache->surf_per_mat[i], 0, sizeof(*cache->surf_per_mat[i])); + GPU_BATCH_CLEAR_SAFE(cache->surf_per_mat[i]); } - } - if ((cache->cd_used & cache->cd_needed) != cache->cd_needed) { + cache->cd_used |= cache->cd_needed; cache->cd_needed = 0; } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [b841167ee35] master: Refactor readfile's liblink code.
Commit: b841167ee35a483b34db343be7ac3291f162711b Author: Bastien Montagne Date: Wed Feb 5 16:18:17 2020 +0100 Branches: master https://developer.blender.org/rBb841167ee35a483b34db343be7ac3291f162711b Refactor readfile's liblink code. Liblink specific ID type function was so far running a loop over all IDs of relevant type, unlike almost any other 'ID-callback-like' functions in Blender, which usually let the looping controll to calling code. The latter approach is more convinient when one want to add generic (i.e. type-agnostic) code, since it typically only has to change code in one place (caller function) instead of tens of places (all the callback functions). This commit also changes/sanitizes a few things that had nothing to do in main liblink code, like mesh conversion from tessfaces to polys (which can be done in after-linking versionning code), or scenes' cycles detection/check regarding background 'set' scenes. Reviewed By: brecht Differential Revision: https://developer.blender.org/D6727 === M source/blender/blenloader/intern/readfile.c M source/blender/blenloader/intern/versioning_280.c M source/blender/makesdna/DNA_scene_types.h === diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index e55e96e31d9..30becd855ae 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -105,6 +105,7 @@ #include "BLT_translation.h" #include "BKE_action.h" +#include "BKE_animsys.h" #include "BKE_armature.h" #include "BKE_brush.h" #include "BKE_collection.h" @@ -2612,27 +2613,20 @@ static PreviewImage *direct_link_preview_image(FileData *fd, PreviewImage *old_p /** \name Read ID * \{ */ -static void lib_link_id(FileData *fd, Main *main) +static void lib_link_id(FileData *fd, Main *UNUSED(bmain), ID *id) { - ListBase *lbarray[MAX_LIBARRAY]; - int base_count, i; - - base_count = set_listbasepointers(main, lbarray); + /* Note: WM IDProperties are never written to file, hence they should always be NULL here. */ + BLI_assert((GS(id->name) != ID_WM) || id->properties == NULL); + IDP_LibLinkProperty(id->properties, fd); - for (i = 0; i < base_count; i++) { -ListBase *lb = lbarray[i]; -ID *id; + AnimData *adt = BKE_animdata_from_id(id); + if (adt != NULL) { +lib_link_animdata(fd, id, adt); + } -for (id = lb->first; id; id = id->next) { - if (id->tag & LIB_TAG_NEED_LINK) { -if (id->override_library) { - id->override_library->reference = newlibadr_us( - fd, id->lib, id->override_library->reference); - id->override_library->storage = newlibadr_us(fd, id->lib, id->override_library->storage); -} -/* DO NOT clear LIB_TAG_NEED_LINK here, it is used again by per-ID-type linkers. */ - } -} + if (id->override_library) { +id->override_library->reference = newlibadr_us(fd, id->lib, id->override_library->reference); +id->override_library->storage = newlibadr_us(fd, id->lib, id->override_library->storage); } } @@ -2734,36 +2728,27 @@ static void direct_link_curveprofile(FileData *fd, CurveProfile *profile) * \{ */ /* library brush linking after fileread */ -static void lib_link_brush(FileData *fd, Main *main) -{ - /* only link ID pointers */ - for (Brush *brush = main->brushes.first; brush; brush = brush->id.next) { -if (brush->id.tag & LIB_TAG_NEED_LINK) { - IDP_LibLinkProperty(brush->id.properties, fd); - - /* brush->(mask_)mtex.obj is ignored on purpose? */ - brush->mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mtex.tex); - brush->mask_mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mask_mtex.tex); - brush->clone.image = newlibadr(fd, brush->id.lib, brush->clone.image); - brush->toggle_brush = newlibadr(fd, brush->id.lib, brush->toggle_brush); - brush->paint_curve = newlibadr_us(fd, brush->id.lib, brush->paint_curve); - - /* link default grease pencil palette */ - if (brush->gpencil_settings != NULL) { -if (brush->gpencil_settings->flag & GP_BRUSH_MATERIAL_PINNED) { - brush->gpencil_settings->material = newlibadr_us( - fd, brush->id.lib, brush->gpencil_settings->material); - - if (!brush->gpencil_settings->material) { -brush->gpencil_settings->flag &= ~GP_BRUSH_MATERIAL_PINNED; - } -} -else { - brush->gpencil_settings->material = NULL; -} - } +static void lib_link_brush(FileData *fd, Main *UNUSED(bmain), Brush *brush) +{ + /* brush->(mask_)mtex.obj is ignored on purpose? */ + brush->mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mtex.tex); + brush->mask_mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mask_mtex.tex); + brush->clone.image = newlibadr(fd, brush->id.lib,
[Bf-blender-cvs] [5f8ee2a36b6] greasepencil-object: GPencil: Fix renamed functions after merge
Commit: 5f8ee2a36b6004b6f4866c51caeb63ebfafb3328 Author: Antonio Vazquez Date: Wed Feb 5 11:39:55 2020 +0100 Branches: greasepencil-object https://developer.blender.org/rB5f8ee2a36b6004b6f4866c51caeb63ebfafb3328 GPencil: Fix renamed functions after merge === M source/blender/blenkernel/intern/brush.c M source/blender/blenkernel/intern/gpencil.c M source/blender/blenloader/intern/versioning_defaults.c M source/blender/draw/engines/gpencil/gpencil_draw_utils.c M source/blender/editors/gpencil/gpencil_merge.c M source/blender/editors/gpencil/gpencil_vertex_ops.c === diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 0ca2dbe8784..2879905795b 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -320,7 +320,7 @@ void BKE_gpencil_brush_preset_set(Main *bmain, Brush *brush, const short type) * drawn. */ Material *ma = BLI_findstring(>materials, "Dots Stroke", offsetof(ID, name) + 2); if (ma == NULL) { -ma = BKE_material_add_gpencil(bmain, "Dots Stroke"); +ma = BKE_gpencil_material_add(bmain, "Dots Stroke"); } brush->gpencil_settings->material = ma; /* Pin the matterial to the brush. */ diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index 9ddba9384a6..c604502e87a 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -2379,21 +2379,21 @@ bool BKE_gpencil_merge_materials_table_get(Object *ob, MaterialGPencilStyle *gp_style_primary = NULL; MaterialGPencilStyle *gp_style_secondary = NULL; - short *totcol = give_totcolp(ob); + short *totcol = BKE_object_material_num(ob); if (totcol == 0) { return changed; } for (int idx_primary = 0; idx_primary < *totcol; idx_primary++) { /* Read primary material to compare. */ -ma_primary = BKE_material_gpencil_get(ob, idx_primary + 1); +ma_primary = BKE_gpencil_material(ob, idx_primary + 1); if (ma_primary == NULL) { continue; } for (int idx_secondary = idx_primary + 1; idx_secondary < *totcol; idx_secondary++) { /* Read secondary material to compare with primary material. */ - ma_secondary = BKE_material_gpencil_get(ob, idx_secondary + 1); + ma_secondary = BKE_gpencil_material(ob, idx_secondary + 1); if ((ma_secondary == NULL) || (BLI_ghash_haskey(r_mat_table, POINTER_FROM_INT(idx_secondary { continue; diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c index 4364aeba5cc..8dc71dd314e 100644 --- a/source/blender/blenloader/intern/versioning_defaults.c +++ b/source/blender/blenloader/intern/versioning_defaults.c @@ -612,14 +612,14 @@ void BLO_update_defaults_startup_blend(Main *bmain, const char *app_template) /* Dots Stroke. */ ma = BLI_findstring(>materials, "Dots Stroke", offsetof(ID, name) + 2); if (ma == NULL) { - ma = BKE_material_add_gpencil(bmain, "Dots Stroke"); + ma = BKE_gpencil_material_add(bmain, "Dots Stroke"); } ma->gp_style->mode = GP_STYLE_MODE_DOTS; /* Boxes Stroke. */ ma = BLI_findstring(>materials, "Boxes Stroke", offsetof(ID, name) + 2); if (ma == NULL) { - ma = BKE_material_add_gpencil(bmain, "Boxes Stroke"); + ma = BKE_gpencil_material_add(bmain, "Boxes Stroke"); } ma->gp_style->mode = GP_STYLE_MODE_BOX; diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c index 826151b922f..f2fc77dccf6 100644 --- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c +++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c @@ -928,7 +928,7 @@ static void gpencil_add_fill_vertexdata(GpencilBatchCache *cache, const bool attenuate = (GPENCIL_VERTEX_MODE(gpd) && GPENCIL_ANY_VERTEX_MASK(ts->gpencil_selectmode_vertex)); - MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(ob, gps->mat_nr + 1); + MaterialGPencilStyle *gp_style = BKE_gpencil_material_settings(ob, gps->mat_nr + 1); if (gps->totpoints >= 3) { float tfill[4]; /* set color using material, tint color and opacity */ @@ -1097,7 +1097,7 @@ static void gpencil_add_editpoints_vertexdata(GpencilBatchCache *cache, const bool hide_vertex_lines = (GPENCIL_VERTEX_MODE(gpd) && (use_vertex_mask) && ((v3d->gp_flag & V3D_GP_SHOW_MULTIEDIT_LINES) == 0)); - MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(ob, gps->mat_nr + 1); + MaterialGPencilStyle *gp_style = BKE_gpencil_material_settings(ob, gps->mat_nr + 1); /* alpha
[Bf-blender-cvs] [7a88e2c1587] greasepencil-refactor: GPencil: Fix function renaming after merge
Commit: 7a88e2c158796317af19b1a0565e26613fc52e42 Author: Antonio Vazquez Date: Wed Feb 5 11:46:18 2020 +0100 Branches: greasepencil-refactor https://developer.blender.org/rB7a88e2c158796317af19b1a0565e26613fc52e42 GPencil: Fix function renaming after merge === M source/blender/draw/engines/gpencil/gpencil_draw_data.c M source/blender/draw/engines/gpencil/gpencil_engine.c M source/blender/draw/engines/overlay/overlay_gpencil.c M source/blender/draw/engines/overlay/overlay_outline.c M source/blender/editors/gpencil/gpencil_fill.c M source/blender/editors/gpencil/gpencil_sculpt_paint.c M source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c M source/blender/gpencil_modifiers/intern/MOD_gpenciltint.c === diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_data.c b/source/blender/draw/engines/gpencil/gpencil_draw_data.c index e0126168256..97e5a44f0ab 100644 --- a/source/blender/draw/engines/gpencil/gpencil_draw_data.c +++ b/source/blender/draw/engines/gpencil/gpencil_draw_data.c @@ -261,7 +261,7 @@ GPENCIL_MaterialPool *gpencil_material_pool_create(GPENCIL_PrivateData *pd, Obje int mat_id = pool->used_count++; gpMaterial *mat_data = >mat_data[mat_id]; -MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(ob, i + 1); +MaterialGPencilStyle *gp_style = BKE_gpencil_material_settings(ob, i + 1); if (gp_style->mode == GP_MATERIAL_MODE_LINE) { mat_data->flag = 0; diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c index be2ac9cb818..8736857c45c 100644 --- a/source/blender/draw/engines/gpencil/gpencil_engine.c +++ b/source/blender/draw/engines/gpencil/gpencil_engine.c @@ -517,7 +517,7 @@ static void gp_stroke_cache_populate(bGPDlayer *gpl, bGPDframe *gpf, bGPDstroke { gpIterPopulateData *iter = (gpIterPopulateData *)thunk; - MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(iter->ob, gps->mat_nr + 1); + MaterialGPencilStyle *gp_style = BKE_gpencil_material_settings(iter->ob, gps->mat_nr + 1); bool hide_material = (gp_style->flag & GP_MATERIAL_HIDE) != 0; bool show_stroke = (gp_style->flag & GP_MATERIAL_STROKE_SHOW) != 0; diff --git a/source/blender/draw/engines/overlay/overlay_gpencil.c b/source/blender/draw/engines/overlay/overlay_gpencil.c index 6e61698412c..c96c448c63b 100644 --- a/source/blender/draw/engines/overlay/overlay_gpencil.c +++ b/source/blender/draw/engines/overlay/overlay_gpencil.c @@ -292,7 +292,7 @@ static void overlay_gpencil_draw_stroke_color_name(bGPDlayer *UNUSED(gpl), void *thunk) { Object *ob = (Object *)thunk; - Material *ma = give_current_material(ob, gps->mat_nr + 1); + Material *ma = BKE_object_material_get(ob, gps->mat_nr + 1); if (ma == NULL) { return; } diff --git a/source/blender/draw/engines/overlay/overlay_outline.c b/source/blender/draw/engines/overlay/overlay_outline.c index ab04244db6e..e77a0a143a9 100644 --- a/source/blender/draw/engines/overlay/overlay_outline.c +++ b/source/blender/draw/engines/overlay/overlay_outline.c @@ -207,7 +207,7 @@ static void gp_stroke_cache_populate(bGPDlayer *UNUSED(gpl), { iterData *iter = (iterData *)thunk; - MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(iter->ob, gps->mat_nr + 1); + MaterialGPencilStyle *gp_style = BKE_gpencil_material_settings(iter->ob, gps->mat_nr + 1); bool hide_material = (gp_style->flag & GP_MATERIAL_HIDE) != 0; bool show_stroke = (gp_style->flag & GP_MATERIAL_STROKE_SHOW) != 0; diff --git a/source/blender/editors/gpencil/gpencil_fill.c b/source/blender/editors/gpencil/gpencil_fill.c index 86324c7cb72..8c8a9c5238f 100644 --- a/source/blender/editors/gpencil/gpencil_fill.c +++ b/source/blender/editors/gpencil/gpencil_fill.c @@ -275,7 +275,7 @@ static void gp_draw_datablock(tGPDfill *tgpf, const float ink[4]) continue; } /* check if the color is visible */ - MaterialGPencilStyle *gp_style = BKE_material_gpencil_settings_get(ob, gps->mat_nr + 1); + MaterialGPencilStyle *gp_style = BKE_gpencil_material_settings(ob, gps->mat_nr + 1); if ((gp_style == NULL) || (gp_style->flag & GP_MATERIAL_HIDE)) { continue; } diff --git a/source/blender/editors/gpencil/gpencil_sculpt_paint.c b/source/blender/editors/gpencil/gpencil_sculpt_paint.c index 5ed8a182713..31227b8254b 100644 --- a/source/blender/editors/gpencil/gpencil_sculpt_paint.c +++ b/source/blender/editors/gpencil/gpencil_sculpt_paint.c @@ -1662,7 +1662,7 @@ static bool gpsculpt_brush_do_frame(bContext *C, if (redo_geom) { bGPDstroke *gps_active = (gps->runtime.gps_orig) ? gps->runtime.gps_orig : gps; if (gpl->actframe == gpf) { -
[Bf-blender-cvs] [23018417d59] greasepencil-refactor: Merge branch 'greasepencil-object' into greasepencil-refactor
Commit: 23018417d59c91ab32d41f62ab5261a6bee5d991 Author: Antonio Vazquez Date: Wed Feb 5 11:42:35 2020 +0100 Branches: greasepencil-refactor https://developer.blender.org/rB23018417d59c91ab32d41f62ab5261a6bee5d991 Merge branch 'greasepencil-object' into greasepencil-refactor Conflicts: source/blender/blenkernel/intern/gpencil_modifier.c source/blender/draw/engines/gpencil/gpencil_draw_utils.c source/blender/draw/engines/gpencil/gpencil_engine.c source/blender/draw/engines/overlay/overlay_extra.c source/blender/editors/gpencil/gpencil_fill.c source/blender/editors/gpencil/gpencil_utils.c source/blender/gpencil_modifiers/intern/MOD_gpencil_util.c source/blender/gpencil_modifiers/intern/MOD_gpencilcolor.c source/blender/gpencil_modifiers/intern/MOD_gpencilopacity.c source/blender/gpencil_modifiers/intern/MOD_gpenciltint.c === === diff --cc source/blender/blenkernel/intern/gpencil.c index 6b2fcf8334d,c604502e87a..ee674001caf --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@@ -1126,9 -1129,9 +1126,9 @@@ Material *BKE_gpencil_object_material_e Material *ma = BKE_gpencil_brush_material_get(brush); /* check if the material is already on object material slots and add it if missing */ -if (ma && BKE_gpencil_object_material_get_index(ob, ma) < 0) { +if (ma && BKE_gpencil_object_material_index_get(ob, ma) < 0) { BKE_object_material_slot_add(bmain, ob); - assign_material(bmain, ob, ma, ob->totcol, BKE_MAT_ASSIGN_USERPREF); + BKE_object_material_assign(bmain, ob, ma, ob->totcol, BKE_MAT_ASSIGN_USERPREF); } return ma; @@@ -1145,10 -1148,10 +1145,10 @@@ int BKE_gpencil_object_material_ensure( if (!material) { return -1; } - int index = BKE_gpencil_object_material_get_index(ob, material); + int index = BKE_gpencil_object_material_index_get(ob, material); if (index < 0) { BKE_object_material_slot_add(bmain, ob); - assign_material(bmain, ob, material, ob->totcol, BKE_MAT_ASSIGN_USERPREF); + BKE_object_material_assign(bmain, ob, material, ob->totcol, BKE_MAT_ASSIGN_USERPREF); return ob->totcol - 1; } return index; @@@ -2485,12 -2482,12 +2485,12 @@@ void BKE_gpencil_stats_update(bGPdata * } /* get material index (0-based like mat_nr not actcol) */ -int BKE_gpencil_object_material_get_index(Object *ob, Material *ma) +int BKE_gpencil_object_material_index_get(Object *ob, Material *ma) { - short *totcol = give_totcolp(ob); + short *totcol = BKE_object_material_num(ob); Material *read_ma = NULL; for (short i = 0; i < *totcol; i++) { - read_ma = give_current_material(ob, i + 1); + read_ma = BKE_object_material_get(ob, i + 1); if (ma == read_ma) { return i; } @@@ -3392,9 -3368,9 +3392,9 @@@ static void gpencil_convert_spline(Mai else if ((only_stroke) || (do_stroke)) { /* Also use the first color if the fill is none for stroke color. */ if (ob_cu->totcol > 0) { - mat_curve = give_current_material(ob_cu, 1); + mat_curve = BKE_object_material_get(ob_cu, 1); if (mat_curve) { - linearrgb_to_srgb_v3_v3(mat_gp->gp_style->stroke_rgba, _curve->r); + copy_v3_v3(mat_gp->gp_style->stroke_rgba, _curve->r); mat_gp->gp_style->stroke_rgba[3] = mat_curve->a; /* Set fill and stroke depending of curve type (3D or 2D). */ if ((cu->flag & CU_3D) || ((cu->flag & (CU_FRONT | CU_BACK)) == 0)) { diff --cc source/blender/blenloader/intern/versioning_defaults.c index ecc87a72fc9,8dc71dd314e..1c0ea8d20ed --- a/source/blender/blenloader/intern/versioning_defaults.c +++ b/source/blender/blenloader/intern/versioning_defaults.c @@@ -614,16 -612,16 +614,16 @@@ void BLO_update_defaults_startup_blend( /* Dots Stroke. */ ma = BLI_findstring(>materials, "Dots Stroke", offsetof(ID, name) + 2); if (ma == NULL) { - ma = BKE_material_add_gpencil(bmain, "Dots Stroke"); + ma = BKE_gpencil_material_add(bmain, "Dots Stroke"); } -ma->gp_style->mode = GP_STYLE_MODE_DOTS; +ma->gp_style->mode = GP_MATERIAL_MODE_DOT; /* Boxes Stroke. */ ma = BLI_findstring(>materials, "Boxes Stroke", offsetof(ID, name) + 2); if (ma == NULL) { - ma = BKE_material_add_gpencil(bmain, "Boxes Stroke"); + ma = BKE_gpencil_material_add(bmain, "Boxes Stroke"); } -ma->gp_style->mode = GP_STYLE_MODE_BOX; +ma->gp_style->mode = GP_MATERIAL_MODE_SQUARE; /* Reset all grease pencil brushes. */ Scene *scene = bmain->scenes.first; diff --cc source/blender/editors/gpencil/drawgpencil.c index 275089e0beb,d6e96c08fdc..b2b3670941f ---
[Bf-blender-cvs] [76ef2f55d28] greasepencil-object: Cleanup: Remove unused function: give_node_material()
Commit: 76ef2f55d2897561e324f1ce65899498c86c462d Author: Antonio Vazquez Date: Wed Feb 5 11:25:50 2020 +0100 Branches: greasepencil-object https://developer.blender.org/rB76ef2f55d2897561e324f1ce65899498c86c462d Cleanup: Remove unused function: give_node_material() === M source/blender/blenkernel/BKE_material.h M source/blender/blenkernel/intern/material.c M source/blender/editors/animation/anim_filter.c === diff --git a/source/blender/blenkernel/BKE_material.h b/source/blender/blenkernel/BKE_material.h index a0a41a048e3..0fd08dc3246 100644 --- a/source/blender/blenkernel/BKE_material.h +++ b/source/blender/blenkernel/BKE_material.h @@ -60,7 +60,6 @@ void BKE_material_copy_data(struct Main *bmain, const int flag); struct Material *BKE_material_copy(struct Main *bmain, const struct Material *ma); struct Material *BKE_material_localize(struct Material *ma); -struct Material *give_node_material(struct Material *ma); /* returns node material or self */ void BKE_material_make_local(struct Main *bmain, struct Material *ma, const bool lib_local); void BKE_gpencil_material_attr_init(struct Material *ma); @@ -87,7 +86,10 @@ struct Material *BKE_object_material_get(struct Object *ob, short act); void BKE_id_material_assign(struct Main *bmain, struct ID *id, struct Material *ma, short act); void BKE_object_material_assign( struct Main *bmain, struct Object *ob, struct Material *ma, short act, int assign_type); -void BKE_object_material_array_assign(struct Main *bmain, struct Object *ob, struct Material ***matar, short totcol); +void BKE_object_material_array_assign(struct Main *bmain, + struct Object *ob, + struct Material ***matar, + short totcol); short BKE_object_material_slot_find_index(struct Object *ob, struct Material *ma); bool BKE_object_material_slot_add(struct Main *bmain, struct Object *ob); diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 91fc0519c07..8159cc03414 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -618,19 +618,6 @@ MaterialGPencilStyle *BKE_gpencil_material_settings(Object *ob, short act) } } -Material *give_node_material(Material *ma) -{ - if (ma && ma->use_nodes && ma->nodetree) { -bNode *node = nodeGetActiveID(ma->nodetree, ID_MA); - -if (node) { - return (Material *)node->id; -} - } - - return NULL; -} - void BKE_material_resize_object(Main *bmain, Object *ob, const short totcol, bool do_id_user) { Material **newmatar; @@ -937,7 +924,10 @@ void BKE_material_remap_object_calc(Object *ob_dst, Object *ob_src, short *remap } /* XXX - this calls many more update calls per object then are needed, could be optimized */ -void BKE_object_material_array_assign(Main *bmain, struct Object *ob, struct Material ***matar, short totcol) +void BKE_object_material_array_assign(Main *bmain, + struct Object *ob, + struct Material ***matar, + short totcol) { int actcol_orig = ob->actcol; short i; diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index b3a9353bb74..a9ddc53e5bb 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -2290,7 +2290,6 @@ static size_t animdata_filter_ds_material( static size_t animdata_filter_ds_materials( bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, int filter_mode) { - bool has_nested = false; size_t items = 0; int a = 0; @@ -2302,34 +2301,6 @@ static size_t animdata_filter_ds_materials( if (ma) { /* add channels */ items += animdata_filter_ds_material(ac, anim_data, ads, ma, filter_mode); - - /* for optimising second pass - check if there's a nested material here to come back for */ - if (has_nested == false) { -has_nested = (give_node_material(ma) != NULL); - } -} - } - - /* Second pass: go through a second time looking for "nested" materials - * (material.material references). - * - * NOTE: here we ignore the expanded status of the parent, as it could be too confusing as to - * why these are disappearing/not available, - * since the relationships between these is not that clear. - */ - if (has_nested) { -for (a = 1; a <= ob->totcol; a++) { - Material *base = BKE_object_material_get(ob, a); - Material *ma = give_node_material(base); - - /* add channels from the nested material if it exists - * - skip if the same material is referenced in
[Bf-blender-cvs] [5314efc4cc1] greasepencil-object: T73589: Code Quality: Renaming on BKE_material.h
Commit: 5314efc4cc12955d64c6a84c4e30346e49a3ab14 Author: Antonio Vazquez Date: Wed Feb 5 11:23:58 2020 +0100 Branches: greasepencil-object https://developer.blender.org/rB5314efc4cc12955d64c6a84c4e30346e49a3ab14 T73589: Code Quality: Renaming on BKE_material.h Old Name New Name == init_def_materialBKE_materials_init BKE_material_gpencil_default_freeBKE_materials_exit test_object_materialsBKE_object_materials_test test_all_objects_materials BKE_objects_materials_test_all give_matarar BKE_object_material_array give_totcolp BKE_object_material_num give_current_material_p BKE_object_material_get_p give_current_materialBKE_object_material_get assign_material BKE_object_material_assign assign_matarar BKE_object_material_array_assign give_matarar_id BKE_id_material_array give_totcolp_id BKE_id_material_num assign_material_id BKE_id_material_assign clear_matcopybuf BKE_material_copybuf_clear free_matcopybuf BKE_material_copybuf_free copy_matcopybuf BKE_material_copybuf_copy paste_matcopybuf BKE_material_copybuf_paste BKE_material_init_gpencil_settings BKE_gpencil_material_attr_init BKE_material_add_gpencil BKE_gpencil_material_add BKE_material_gpencil_get BKE_gpencil_material BKE_material_gpencil_default_get BKE_gpencil_material_default BKE_material_gpencil_settings_getBKE_gpencil_material_settings === M source/blender/alembic/intern/abc_mesh.cc M source/blender/blenkernel/BKE_material.h M source/blender/blenkernel/intern/brush.c M source/blender/blenkernel/intern/gpencil.c M source/blender/blenkernel/intern/gpencil_modifier.c M source/blender/blenkernel/intern/library_remap.c M source/blender/blenkernel/intern/material.c M source/blender/blenkernel/intern/mesh.c M source/blender/blenkernel/intern/mesh_convert.c M source/blender/blenkernel/intern/object.c M source/blender/blenkernel/intern/particle.c M source/blender/blenkernel/intern/particle_system.c M source/blender/blenloader/intern/readfile.c M source/blender/collada/AnimationExporter.cpp M source/blender/collada/AnimationImporter.cpp M source/blender/collada/BCAnimationCurve.cpp M source/blender/collada/BCAnimationSampler.cpp M source/blender/collada/EffectExporter.cpp M source/blender/collada/GeometryExporter.cpp M source/blender/collada/InstanceWriter.cpp M source/blender/collada/MaterialExporter.cpp M source/blender/collada/MaterialExporter.h M source/blender/collada/MeshImporter.cpp M source/blender/collada/collada_utils.cpp M source/blender/depsgraph/intern/builder/deg_builder_nodes.cc M source/blender/depsgraph/intern/builder/deg_builder_relations.cc M source/blender/draw/engines/eevee/eevee_materials.c M source/blender/draw/engines/eevee/eevee_volumes.c M source/blender/draw/engines/gpencil/gpencil_draw_utils.c M source/blender/draw/engines/gpencil/gpencil_engine.c M source/blender/draw/engines/overlay/overlay_extra.c M source/blender/draw/engines/overlay/overlay_particle.c M source/blender/draw/engines/workbench/workbench_deferred.c M source/blender/draw/engines/workbench/workbench_forward.c M source/blender/draw/engines/workbench/workbench_materials.c M source/blender/editors/animation/anim_filter.c M source/blender/editors/animation/keyframing.c M source/blender/editors/gpencil/drawgpencil.c M source/blender/editors/gpencil/gpencil_add_monkey.c M source/blender/editors/gpencil/gpencil_add_stroke.c M source/blender/editors/gpencil/gpencil_data.c M source/blender/editors/gpencil/gpencil_edit.c M source/blender/editors/gpencil/gpencil_fill.c M source/blender/editors/gpencil/gpencil_merge.c M source/blender/editors/gpencil/gpencil_utils.c M source/blender/editors/interface/interface_eyedropper_gpencil_color.c M source/blender/editors/mesh/editmesh_select_similar.c M source/blender/editors/mesh/editmesh_tools.c M source/blender/editors/mesh/meshtools.c M source/blender/editors/object/object_add.c M source/blender/editors/object/object_bake_api.c M source/blender/editors/object/object_relations.c M source/blender/editors/object/object_select.c M source/blender/editors/render/render_preview.c M source/blender/editors/render/render_shading.c M source/blender/editors/sculpt_paint/paint_image.c M
[Bf-blender-cvs] [bc7a4d5bad8] greasepencil-object: Merge branch 'master' into greasepencil-object
Commit: bc7a4d5bad84ed46e5fd2480a863315506a471f3 Author: Antonio Vazquez Date: Wed Feb 5 11:31:10 2020 +0100 Branches: greasepencil-object https://developer.blender.org/rBbc7a4d5bad84ed46e5fd2480a863315506a471f3 Merge branch 'master' into greasepencil-object === === diff --cc source/blender/editors/interface/interface_eyedropper_gpencil_color.c index d4a1e0921c8,51467ae9695..3acae220a54 --- a/source/blender/editors/interface/interface_eyedropper_gpencil_color.c +++ b/source/blender/editors/interface/interface_eyedropper_gpencil_color.c @@@ -112,12 -108,28 +112,12 @@@ static void eyedropper_add_material Object *ob = CTX_data_active_object(C); Material *ma = NULL; - const bool only_stroke = ((!event->ctrl) && (!event->shift)); - const bool only_fill = ((!event->ctrl) && (event->shift)); - const bool both = ((event->ctrl) && (event->shift)); - - float col_conv[4]; bool found = false; - /* Convert from linear rgb space to display space because grease pencil colors are in display - * space, and this conversion is needed to undo the conversion to linear performed by - * eyedropper_color_sample_fl. */ - if (eye->display) { -copy_v3_v3(col_conv, eye->color); -IMB_colormanagement_scene_linear_to_display_v3(col_conv, eye->display); - } - else { -copy_v3_v3(col_conv, eye->color); - } - /* Look for a similar material in grease pencil slots. */ - short *totcol = give_totcolp(ob); + short *totcol = BKE_object_material_num(ob); for (short i = 0; i < *totcol; i++) { - ma = give_current_material(ob, i + 1); + ma = BKE_object_material_get(ob, i + 1); if (ma == NULL) { continue; } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [c35d6b18544] master: Cleanup: Remove unused function: give_node_material()
Commit: c35d6b1854474ec02888f8812041651bdeb5145e Author: Antonio Vazquez Date: Wed Feb 5 11:25:50 2020 +0100 Branches: master https://developer.blender.org/rBc35d6b1854474ec02888f8812041651bdeb5145e Cleanup: Remove unused function: give_node_material() === M source/blender/blenkernel/BKE_material.h M source/blender/blenkernel/intern/material.c M source/blender/editors/animation/anim_filter.c === diff --git a/source/blender/blenkernel/BKE_material.h b/source/blender/blenkernel/BKE_material.h index a0a41a048e3..0fd08dc3246 100644 --- a/source/blender/blenkernel/BKE_material.h +++ b/source/blender/blenkernel/BKE_material.h @@ -60,7 +60,6 @@ void BKE_material_copy_data(struct Main *bmain, const int flag); struct Material *BKE_material_copy(struct Main *bmain, const struct Material *ma); struct Material *BKE_material_localize(struct Material *ma); -struct Material *give_node_material(struct Material *ma); /* returns node material or self */ void BKE_material_make_local(struct Main *bmain, struct Material *ma, const bool lib_local); void BKE_gpencil_material_attr_init(struct Material *ma); @@ -87,7 +86,10 @@ struct Material *BKE_object_material_get(struct Object *ob, short act); void BKE_id_material_assign(struct Main *bmain, struct ID *id, struct Material *ma, short act); void BKE_object_material_assign( struct Main *bmain, struct Object *ob, struct Material *ma, short act, int assign_type); -void BKE_object_material_array_assign(struct Main *bmain, struct Object *ob, struct Material ***matar, short totcol); +void BKE_object_material_array_assign(struct Main *bmain, + struct Object *ob, + struct Material ***matar, + short totcol); short BKE_object_material_slot_find_index(struct Object *ob, struct Material *ma); bool BKE_object_material_slot_add(struct Main *bmain, struct Object *ob); diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 91fc0519c07..8159cc03414 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -618,19 +618,6 @@ MaterialGPencilStyle *BKE_gpencil_material_settings(Object *ob, short act) } } -Material *give_node_material(Material *ma) -{ - if (ma && ma->use_nodes && ma->nodetree) { -bNode *node = nodeGetActiveID(ma->nodetree, ID_MA); - -if (node) { - return (Material *)node->id; -} - } - - return NULL; -} - void BKE_material_resize_object(Main *bmain, Object *ob, const short totcol, bool do_id_user) { Material **newmatar; @@ -937,7 +924,10 @@ void BKE_material_remap_object_calc(Object *ob_dst, Object *ob_src, short *remap } /* XXX - this calls many more update calls per object then are needed, could be optimized */ -void BKE_object_material_array_assign(Main *bmain, struct Object *ob, struct Material ***matar, short totcol) +void BKE_object_material_array_assign(Main *bmain, + struct Object *ob, + struct Material ***matar, + short totcol) { int actcol_orig = ob->actcol; short i; diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index b3a9353bb74..a9ddc53e5bb 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -2290,7 +2290,6 @@ static size_t animdata_filter_ds_material( static size_t animdata_filter_ds_materials( bAnimContext *ac, ListBase *anim_data, bDopeSheet *ads, Object *ob, int filter_mode) { - bool has_nested = false; size_t items = 0; int a = 0; @@ -2302,34 +2301,6 @@ static size_t animdata_filter_ds_materials( if (ma) { /* add channels */ items += animdata_filter_ds_material(ac, anim_data, ads, ma, filter_mode); - - /* for optimising second pass - check if there's a nested material here to come back for */ - if (has_nested == false) { -has_nested = (give_node_material(ma) != NULL); - } -} - } - - /* Second pass: go through a second time looking for "nested" materials - * (material.material references). - * - * NOTE: here we ignore the expanded status of the parent, as it could be too confusing as to - * why these are disappearing/not available, - * since the relationships between these is not that clear. - */ - if (has_nested) { -for (a = 1; a <= ob->totcol; a++) { - Material *base = BKE_object_material_get(ob, a); - Material *ma = give_node_material(base); - - /* add channels from the nested material if it exists - * - skip if the same material is referenced in its node tree -
[Bf-blender-cvs] [1bc2a98a9d6] master: T73589: Code Quality: Renaming on BKE_material.h
Commit: 1bc2a98a9d609e54c928672f148edfba9d5f8c5a Author: Antonio Vazquez Date: Wed Feb 5 11:23:58 2020 +0100 Branches: master https://developer.blender.org/rB1bc2a98a9d609e54c928672f148edfba9d5f8c5a T73589: Code Quality: Renaming on BKE_material.h Old Name New Name == init_def_materialBKE_materials_init BKE_material_gpencil_default_freeBKE_materials_exit test_object_materialsBKE_object_materials_test test_all_objects_materials BKE_objects_materials_test_all give_matarar BKE_object_material_array give_totcolp BKE_object_material_num give_current_material_p BKE_object_material_get_p give_current_materialBKE_object_material_get assign_material BKE_object_material_assign assign_matarar BKE_object_material_array_assign give_matarar_id BKE_id_material_array give_totcolp_id BKE_id_material_num assign_material_id BKE_id_material_assign clear_matcopybuf BKE_material_copybuf_clear free_matcopybuf BKE_material_copybuf_free copy_matcopybuf BKE_material_copybuf_copy paste_matcopybuf BKE_material_copybuf_paste BKE_material_init_gpencil_settings BKE_gpencil_material_attr_init BKE_material_add_gpencil BKE_gpencil_material_add BKE_material_gpencil_get BKE_gpencil_material BKE_material_gpencil_default_get BKE_gpencil_material_default BKE_material_gpencil_settings_getBKE_gpencil_material_settings === M source/blender/alembic/intern/abc_mesh.cc M source/blender/blenkernel/BKE_material.h M source/blender/blenkernel/intern/brush.c M source/blender/blenkernel/intern/gpencil.c M source/blender/blenkernel/intern/gpencil_modifier.c M source/blender/blenkernel/intern/library_remap.c M source/blender/blenkernel/intern/material.c M source/blender/blenkernel/intern/mesh.c M source/blender/blenkernel/intern/mesh_convert.c M source/blender/blenkernel/intern/object.c M source/blender/blenkernel/intern/particle.c M source/blender/blenkernel/intern/particle_system.c M source/blender/blenloader/intern/readfile.c M source/blender/collada/AnimationExporter.cpp M source/blender/collada/AnimationImporter.cpp M source/blender/collada/BCAnimationCurve.cpp M source/blender/collada/BCAnimationSampler.cpp M source/blender/collada/EffectExporter.cpp M source/blender/collada/GeometryExporter.cpp M source/blender/collada/InstanceWriter.cpp M source/blender/collada/MaterialExporter.cpp M source/blender/collada/MaterialExporter.h M source/blender/collada/MeshImporter.cpp M source/blender/collada/collada_utils.cpp M source/blender/depsgraph/intern/builder/deg_builder_nodes.cc M source/blender/depsgraph/intern/builder/deg_builder_relations.cc M source/blender/draw/engines/eevee/eevee_materials.c M source/blender/draw/engines/eevee/eevee_volumes.c M source/blender/draw/engines/gpencil/gpencil_draw_utils.c M source/blender/draw/engines/gpencil/gpencil_engine.c M source/blender/draw/engines/overlay/overlay_extra.c M source/blender/draw/engines/overlay/overlay_particle.c M source/blender/draw/engines/workbench/workbench_deferred.c M source/blender/draw/engines/workbench/workbench_forward.c M source/blender/draw/engines/workbench/workbench_materials.c M source/blender/editors/animation/anim_filter.c M source/blender/editors/animation/keyframing.c M source/blender/editors/gpencil/drawgpencil.c M source/blender/editors/gpencil/gpencil_add_monkey.c M source/blender/editors/gpencil/gpencil_add_stroke.c M source/blender/editors/gpencil/gpencil_data.c M source/blender/editors/gpencil/gpencil_edit.c M source/blender/editors/gpencil/gpencil_fill.c M source/blender/editors/gpencil/gpencil_merge.c M source/blender/editors/gpencil/gpencil_utils.c M source/blender/editors/interface/interface_eyedropper_gpencil_color.c M source/blender/editors/mesh/editmesh_select_similar.c M source/blender/editors/mesh/editmesh_tools.c M source/blender/editors/mesh/meshtools.c M source/blender/editors/object/object_add.c M source/blender/editors/object/object_bake_api.c M source/blender/editors/object/object_relations.c M source/blender/editors/object/object_select.c M source/blender/editors/render/render_preview.c M source/blender/editors/render/render_shading.c M source/blender/editors/sculpt_paint/paint_image.c M source/blender/editors/sculpt_paint/paint_image_proj.c M
[Bf-blender-cvs] [06c56086460] master: Readfile: Proper fix for `recalc` flags clearing in non-real IDs
Commit: 06c560864607562acdc1e61b13369f24b22c102c Author: Bastien Montagne Date: Wed Feb 5 15:49:57 2020 +0100 Branches: master https://developer.blender.org/rB06c560864607562acdc1e61b13369f24b22c102c Readfile: Proper fix for `recalc` flags clearing in non-real IDs In current `readfile.c` code we have that: https://developer.blender.org/diffusion/B/browse/master/source/blender/blenloader/intern/readfile.c$3523 This is unconditionally clearing nodetree's recalc flags, and was added by rB81a762e79f83 ages ago. Thing is, in main ID read code we only clear that flag when **not** in undo context. This proposed change intends to properly handle those cases, by moving `id.recalc` flags clearing from `read_libblock()` to `direct_link_id()`, which is also called for all 'local' IDs (ntrees and master collections currently). I’d expect that change to be straightforward (and maybe even fixing some odd undocumented bugs), however there is no .blend file testcases associated with changes in rB81a762e79f83, so wouldn’t mind that to be double checked before it goes to master. Reviewed By: brecht Differential Revision: https://developer.blender.org/D6711 === M source/blender/blenloader/intern/readfile.c === diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 5a834f31528..6db32ef120f 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2668,6 +2668,18 @@ static void direct_link_id(FileData *fd, ID *id) id->tag = 0; id->flag &= ~LIB_INDIRECT_WEAK_LINK; + /* NOTE: It is important to not clear the recalc flags for undo/redo. + * Preserving recalc flags on redo/undo is the only way to make dependency graph detect + * that animation is to be evaluated on undo/redo. If this is not enforced by the recalc + * flags dependency graph does not do animation update to avoid loss of unkeyed changes., + * which conflicts with undo/redo of changes to animation data itself. + * + * But for regular file load we clear the flag, since the flags might have been changed since + * the version the file has been saved with. */ + if (!fd->memfile) { +id->recalc = 0; + } + /* Link direct data of overrides. */ if (id->override_library) { id->override_library = newdataadr(fd, id->override_library); @@ -3520,8 +3532,6 @@ static void direct_link_nodetree(FileData *fd, bNodeTree *ntree) ntree->adt = newdataadr(fd, ntree->adt); direct_link_animdata(fd, ntree->adt); - ntree->id.recalc &= ~ID_RECALC_ALL; - link_list(fd, >nodes); for (node = ntree->nodes.first; node; node = node->next) { node->typeinfo = NULL; @@ -9419,18 +9429,6 @@ static BHead *read_libblock(FileData *fd, id->newid = NULL; /* Needed because .blend may have been saved with crap value here... */ id->orig_id = NULL; - /* NOTE: It is important to not clear the recalc flags for undo/redo. - * Preserving recalc flags on redo/undo is the only way to make dependency graph detect - * that animation is to be evaluated on undo/redo. If this is not enforced by the recalc - * flags dependency graph does not do animation update to avoid loss of unkeyed changes., - * which conflicts with undo/redo of changes to animation data itself. - * - * But for regular file load we clear the flag, since the flags might have been changed since - * the version the file has been saved with. */ - if (!fd->memfile) { -id->recalc = 0; - } - /* this case cannot be direct_linked: it's just the ID part */ if (bhead->code == ID_LINK_PLACEHOLDER) { /* That way, we know which data-lock needs do_versions (required currently for linking). */ ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [ea2e6995a90] master: Fix T56892: Crash on Collada .dae import
Commit: ea2e6995a9083e1dff0b46909397cba2c639884e Author: Sebastian Parborg Date: Wed Feb 5 15:46:38 2020 +0100 Branches: master https://developer.blender.org/rBea2e6995a9083e1dff0b46909397cba2c639884e Fix T56892: Crash on Collada .dae import In this case the ERROR_REQUIRED_ATTRIBUTE_MISSING seem to be fatal so stop the import to avoid crashing if we run into this error. === M source/blender/collada/ErrorHandler.cpp === diff --git a/source/blender/collada/ErrorHandler.cpp b/source/blender/collada/ErrorHandler.cpp index af9d10c7841..4f70281fb45 100644 --- a/source/blender/collada/ErrorHandler.cpp +++ b/source/blender/collada/ErrorHandler.cpp @@ -79,6 +79,10 @@ bool ErrorHandler::handleError(const COLLADASaxFWL::IError *error) error_context = "File access"; } +else if (parserError.getErrorType() == GeneratedSaxParser::ParserError::ERROR_REQUIRED_ATTRIBUTE_MISSING) { + isError = true; +} + else { isError = (parserError.getSeverity() != GeneratedSaxParser::ParserError::Severity::SEVERITY_ERROR_NONCRITICAL); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [d2c0df28424] master: Merge branch 'blender-v2.82-release'
Commit: d2c0df28424b93dbcc1a92423e0b68d2e9590945 Author: Campbell Barton Date: Thu Feb 6 01:33:23 2020 +1100 Branches: master https://developer.blender.org/rBd2c0df28424b93dbcc1a92423e0b68d2e9590945 Merge branch 'blender-v2.82-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [6d10c240629] blender-v2.82-release: Fix finding freetype on Linux not using pre-compiled libs
Commit: 6d10c2406297cf93238129b5e704a7ba7e8ce3bc Author: Campbell Barton Date: Thu Feb 6 01:30:26 2020 +1100 Branches: blender-v2.82-release https://developer.blender.org/rB6d10c2406297cf93238129b5e704a7ba7e8ce3bc Fix finding freetype on Linux not using pre-compiled libs Finding X11 before platform libs caused freetype not to use pre-compiled libraries. === M CMakeLists.txt M build_files/cmake/platform/platform_unix.cmake === diff --git a/CMakeLists.txt b/CMakeLists.txt index 2bac16c339a..b5b19096506 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -793,61 +793,6 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Release") endif() endif() -#- -# Platform specifics - -if(WITH_X11) - find_package(X11 REQUIRED) - - find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH}) - mark_as_advanced(X11_XF86keysym_INCLUDE_PATH) - - list(APPEND PLATFORM_LINKLIBS ${X11_X11_LIB}) - - if(WITH_X11_XINPUT) -if(X11_Xinput_LIB) - list(APPEND PLATFORM_LINKLIBS ${X11_Xinput_LIB}) -else() - message(FATAL_ERROR "LibXi not found. Disable WITH_X11_XINPUT if you - want to build without tablet support") -endif() - endif() - - if(WITH_X11_XF86VMODE) -# XXX, why doesn't cmake make this available? -find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH}) -mark_as_advanced(X11_Xxf86vmode_LIB) -if(X11_Xxf86vmode_LIB) - list(APPEND PLATFORM_LINKLIBS ${X11_Xxf86vmode_LIB}) -else() - message(FATAL_ERROR "libXxf86vm not found. Disable WITH_X11_XF86VMODE if you - want to build without") -endif() - endif() - - if(WITH_X11_XFIXES) -if(X11_Xfixes_LIB) - list(APPEND PLATFORM_LINKLIBS ${X11_Xfixes_LIB}) -else() - message(FATAL_ERROR "libXfixes not found. Disable WITH_X11_XFIXES if you - want to build without") -endif() - endif() - - if(WITH_X11_ALPHA) -find_library(X11_Xrender_LIB Xrender ${X11_LIB_SEARCH_PATH}) -mark_as_advanced(X11_Xrender_LIB) -if(X11_Xrender_LIB) - list(APPEND PLATFORM_LINKLIBS ${X11_Xrender_LIB}) -else() - message(FATAL_ERROR "libXrender not found. Disable WITH_X11_ALPHA if you - want to build without") -endif() - endif() - -endif() - - # # Main Platform Checks # diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index 5d46ee751af..eb89d847101 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -482,6 +482,65 @@ endif() # lfs on glibc, all compilers should use add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE) +# +# System Libraries +# +# Keep last, so indirectly linked libraries don't override our own pre-compiled libs. + +if(WITH_X11) + find_package(X11 REQUIRED) + + find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH}) + mark_as_advanced(X11_XF86keysym_INCLUDE_PATH) + + list(APPEND PLATFORM_LINKLIBS ${X11_X11_LIB}) + + if(WITH_X11_XINPUT) +if(X11_Xinput_LIB) + list(APPEND PLATFORM_LINKLIBS ${X11_Xinput_LIB}) +else() + message(FATAL_ERROR "LibXi not found. Disable WITH_X11_XINPUT if you + want to build without tablet support") +endif() + endif() + + if(WITH_X11_XF86VMODE) +# XXX, why doesn't cmake make this available? +find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH}) +mark_as_advanced(X11_Xxf86vmode_LIB) +if(X11_Xxf86vmode_LIB) + list(APPEND PLATFORM_LINKLIBS ${X11_Xxf86vmode_LIB}) +else() + message(FATAL_ERROR "libXxf86vm not found. Disable WITH_X11_XF86VMODE if you + want to build without") +endif() + endif() + + if(WITH_X11_XFIXES) +if(X11_Xfixes_LIB) + list(APPEND PLATFORM_LINKLIBS ${X11_Xfixes_LIB}) +else() + message(FATAL_ERROR "libXfixes not found. Disable WITH_X11_XFIXES if you + want to build without") +endif() + endif() + + if(WITH_X11_ALPHA) +find_library(X11_Xrender_LIB Xrender ${X11_LIB_SEARCH_PATH}) +mark_as_advanced(X11_Xrender_LIB) +if(X11_Xrender_LIB) + list(APPEND PLATFORM_LINKLIBS ${X11_Xrender_LIB}) +else() + message(FATAL_ERROR "libXrender not found. Disable WITH_X11_ALPHA if you + want to build without") +endif() + endif() + +endif() + +# +# Compilers + # GNU Compiler if(CMAKE_COMPILER_IS_GNUCC) set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing") ___ Bf-blender-cvs mailing list
[Bf-blender-cvs] [be70fcd7f23] master: Merge branch 'blender-v2.82-release'
Commit: be70fcd7f23d14f4f410b5662f1f884a68581587 Author: Campbell Barton Date: Thu Feb 6 01:24:49 2020 +1100 Branches: master https://developer.blender.org/rBbe70fcd7f23d14f4f410b5662f1f884a68581587 Merge branch 'blender-v2.82-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [87c18fbbc53] blender-v2.82-release: CMake: remove non-standard package search paths
Commit: 87c18fbbc532fd7e92eeec209a3ff559757548eb Author: Campbell Barton Date: Thu Feb 6 01:16:55 2020 +1100 Branches: blender-v2.82-release https://developer.blender.org/rB87c18fbbc532fd7e92eeec209a3ff559757548eb CMake: remove non-standard package search paths Reduce the number of possible locations used to find libraries, to simplify troubleshooting. Only keep '*_ROOT_DIR' and the path used by 'install_deps.sh'. === M build_files/build_environment/patches/cmake/modules/FindBlosc.cmake M build_files/build_environment/patches/cmake/modules/FindCppUnit.cmake M build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake M build_files/build_environment/patches/cmake/modules/FindLogC4Plus.cmake M build_files/build_environment/patches/cmake/modules/FindOpenEXR.cmake M build_files/build_environment/patches/cmake/modules/FindTBB.cmake M build_files/cmake/Modules/FindAlembic.cmake M build_files/cmake/Modules/FindAudaspace.cmake M build_files/cmake/Modules/FindBlosc.cmake M build_files/cmake/Modules/FindEigen3.cmake M build_files/cmake/Modules/FindEmbree.cmake M build_files/cmake/Modules/FindFftw3.cmake M build_files/cmake/Modules/FindGLEW.cmake M build_files/cmake/Modules/FindGflags.cmake M build_files/cmake/Modules/FindGlog.cmake M build_files/cmake/Modules/FindHDF5.cmake M build_files/cmake/Modules/FindIcuLinux.cmake M build_files/cmake/Modules/FindJack.cmake M build_files/cmake/Modules/FindJeMalloc.cmake M build_files/cmake/Modules/FindLZO.cmake M build_files/cmake/Modules/FindOpenCOLLADA.cmake M build_files/cmake/Modules/FindOpenColorIO.cmake M build_files/cmake/Modules/FindOpenEXR.cmake M build_files/cmake/Modules/FindOpenGLES.cmake M build_files/cmake/Modules/FindOpenImageDenoise.cmake M build_files/cmake/Modules/FindOpenImageIO.cmake M build_files/cmake/Modules/FindOpenJPEG.cmake M build_files/cmake/Modules/FindOpenShadingLanguage.cmake M build_files/cmake/Modules/FindOpenSubdiv.cmake M build_files/cmake/Modules/FindOpenVDB.cmake M build_files/cmake/Modules/FindOptiX.cmake M build_files/cmake/Modules/FindPCRE.cmake M build_files/cmake/Modules/FindPugiXML.cmake M build_files/cmake/Modules/FindPythonLibsUnix.cmake M build_files/cmake/Modules/FindSDL2.cmake M build_files/cmake/Modules/FindSndFile.cmake M build_files/cmake/Modules/FindSpacenav.cmake M build_files/cmake/Modules/FindTBB.cmake M build_files/cmake/Modules/FindUSD.cmake M build_files/cmake/Modules/FindXML2.cmake === diff --git a/build_files/build_environment/patches/cmake/modules/FindBlosc.cmake b/build_files/build_environment/patches/cmake/modules/FindBlosc.cmake index 8565ddc73ed..015d211b818 100644 --- a/build_files/build_environment/patches/cmake/modules/FindBlosc.cmake +++ b/build_files/build_environment/patches/cmake/modules/FindBlosc.cmake @@ -29,9 +29,6 @@ ENDIF() SET(_blosc_SEARCH_DIRS ${BLOSC_ROOT_DIR} - /usr/local - /sw # Fink - /opt/local # DarwinPorts /opt/lib/blosc ) diff --git a/build_files/build_environment/patches/cmake/modules/FindCppUnit.cmake b/build_files/build_environment/patches/cmake/modules/FindCppUnit.cmake index 781ec0ce6c8..80cb07ece2a 100644 --- a/build_files/build_environment/patches/cmake/modules/FindCppUnit.cmake +++ b/build_files/build_environment/patches/cmake/modules/FindCppUnit.cmake @@ -29,9 +29,6 @@ ENDIF() SET(_cppunit_SEARCH_DIRS ${CPPUNIT_ROOT_DIR} - /usr/local - /sw # Fink - /opt/local # DarwinPorts /opt/lib/cppunit ) diff --git a/build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake b/build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake index 62ccc17d014..fed30505708 100644 --- a/build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake +++ b/build_files/build_environment/patches/cmake/modules/FindIlmBase.cmake @@ -124,7 +124,6 @@ set(IlmBase_generic_include_paths /usr/include /usr/include/${CMAKE_LIBRARY_ARCHITECTURE} /usr/local/include - /sw/include /opt/local/include ) set(IlmBase_generic_library_paths @@ -133,7 +132,6 @@ set(IlmBase_generic_library_paths /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE} /usr/local/lib /usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE} - /sw/lib /opt/local/lib ) diff --git a/build_files/build_environment/patches/cmake/modules/FindLogC4Plus.cmake b/build_files/build_environment/patches/cmake/modules/FindLogC4Plus.cmake index 6575cd0c763..d1a021a88bb 100644 --- a/build_files/build_environment/patches/cmake/modules/FindLogC4Plus.cmake +++ b/build_files/build_environment/patches/cmake/modules/FindLogC4Plus.cmake @@ -29,9 +29,6 @@ ENDIF() SET(_logc4plus_SEARCH_DIRS ${LOGC4PLUS_ROOT_DIR} -
[Bf-blender-cvs] [fe8222cf004] vr_scene_inspection: Merge branch 'soc-2019-openxr' into vr_scene_inspection
Commit: fe8222cf0047a081119aa94849e3173db8d34514 Author: Julian Eisel Date: Wed Feb 5 14:39:18 2020 +0100 Branches: vr_scene_inspection https://developer.blender.org/rBfe8222cf0047a081119aa94849e3173db8d34514 Merge branch 'soc-2019-openxr' into vr_scene_inspection === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [d930ff7f4ff] soc-2019-openxr: Merge branch 'temp-openxr-ghostxr' into temp-openxr-blenderside
Commit: d930ff7f4ffad2e59e584175f28f68f552110891 Author: Julian Eisel Date: Wed Feb 5 14:37:59 2020 +0100 Branches: soc-2019-openxr https://developer.blender.org/rBd930ff7f4ffad2e59e584175f28f68f552110891 Merge branch 'temp-openxr-ghostxr' into temp-openxr-blenderside === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [eecf3021d7e] soc-2019-openxr: Merge branch 'master' into temp-openxr-buildstuff
Commit: eecf3021d7e48230e00fe9a7f26af64751c08488 Author: Julian Eisel Date: Wed Feb 5 14:37:09 2020 +0100 Branches: soc-2019-openxr https://developer.blender.org/rBeecf3021d7e48230e00fe9a7f26af64751c08488 Merge branch 'master' into temp-openxr-buildstuff === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [f3e9351111b] soc-2019-openxr: Merge branch 'temp-openxr-directx' into temp-openxr-ghostxr
Commit: f3e935bf15d827773e3f9705a977e28a1899 Author: Julian Eisel Date: Wed Feb 5 14:37:45 2020 +0100 Branches: soc-2019-openxr https://developer.blender.org/rBf3e935bf15d827773e3f9705a977e28a1899 Merge branch 'temp-openxr-directx' into temp-openxr-ghostxr === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [2a259497ae9] soc-2019-openxr: Merge branch 'temp-openxr-buildstuff' into temp-openxr-directx
Commit: 2a259497ae9f8021ffd4cd2f4755b5c6ad23fbba Author: Julian Eisel Date: Wed Feb 5 14:37:30 2020 +0100 Branches: soc-2019-openxr https://developer.blender.org/rB2a259497ae9f8021ffd4cd2f4755b5c6ad23fbba Merge branch 'temp-openxr-buildstuff' into temp-openxr-directx === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [0a27ab2e93d] soc-2019-openxr: Merge branch 'temp-openxr-blenderside' into soc-2019-openxr
Commit: 0a27ab2e93d350df8d88eae726a9e41c5498 Author: Julian Eisel Date: Wed Feb 5 14:38:19 2020 +0100 Branches: soc-2019-openxr https://developer.blender.org/rB0a27ab2e93d350df8d88eae726a9e41c5498 Merge branch 'temp-openxr-blenderside' into soc-2019-openxr === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [6c815ebc5bc] greasepencil-refactor: Merge branch 'greasepencil-object' into greasepencil-refactor
Commit: 6c815ebc5bc842f3268e84caceca0c1ebfac92b1 Author: Antonio Vazquez Date: Wed Feb 5 11:11:26 2020 +0100 Branches: greasepencil-refactor https://developer.blender.org/rB6c815ebc5bc842f3268e84caceca0c1ebfac92b1 Merge branch 'greasepencil-object' into greasepencil-refactor === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [c0e989d3e52] greasepencil-object: Merge branch 'master' into greasepencil-object
Commit: c0e989d3e521217e991881070c1c674449e83b7e Author: Antonio Vazquez Date: Wed Feb 5 11:10:54 2020 +0100 Branches: greasepencil-object https://developer.blender.org/rBc0e989d3e521217e991881070c1c674449e83b7e Merge branch 'master' into greasepencil-object === === diff --cc release/scripts/startup/bl_ui/properties_paint_common.py index 440df1d34d3,ec3dec6c54d..cc8a6c49a9c --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@@ -998,10 -994,10 +998,12 @@@ def brush_basic_texpaint_settings(layou def brush_basic_gpencil_paint_settings(layout, context, brush, *, compact=False): +tool_settings = context.tool_settings +settings = tool_settings.gpencil_paint gp_settings = brush.gpencil_settings tool = context.workspace.tools.from_space_view3d_mode(context.mode, create=False) + if gp_settings is None: + return # Brush details if brush.gpencil_tool == 'ERASE': ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [edcec3aee03] master: Merge branch 'blender-v2.82-release'
Commit: edcec3aee03da94936c9f7167a51b63ff62ff07d Author: Antonio Vazquez Date: Wed Feb 5 11:08:57 2020 +0100 Branches: master https://developer.blender.org/rBedcec3aee03da94936c9f7167a51b63ff62ff07d Merge branch 'blender-v2.82-release' === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [db0121a0099] blender-v2.82-release: Fix T73580: Gpencil crash when try to draw without eraser brush available
Commit: db0121a0099836113e7babe7f006e99e4f6ed69f Author: Antonio Vazquez Date: Wed Feb 5 11:08:15 2020 +0100 Branches: blender-v2.82-release https://developer.blender.org/rBdb0121a0099836113e7babe7f006e99e4f6ed69f Fix T73580: Gpencil crash when try to draw without eraser brush available === M release/scripts/startup/bl_ui/properties_paint_common.py M source/blender/editors/gpencil/gpencil_paint.c === diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index 93bf5eca052..8b4f86b2879 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -996,6 +996,8 @@ def brush_basic_texpaint_settings(layout, context, brush, *, compact=False): def brush_basic_gpencil_paint_settings(layout, context, brush, *, compact=False): gp_settings = brush.gpencil_settings tool = context.workspace.tools.from_space_view3d_mode(context.mode, create=False) +if gp_settings is None: +return # Brush details if brush.gpencil_tool == 'ERASE': diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c index 6a91417e7f3..e07071e5e67 100644 --- a/source/blender/editors/gpencil/gpencil_paint.c +++ b/source/blender/editors/gpencil/gpencil_paint.c @@ -1963,6 +1963,9 @@ static Brush *gp_get_default_eraser(Main *bmain, ToolSettings *ts) Paint *paint = >gp_paint->paint; Brush *brush_old = paint->brush; for (Brush *brush = bmain->brushes.first; brush; brush = brush->id.next) { +if (brush->gpencil_settings == NULL) { + continue; +} if ((brush->ob_mode == OB_MODE_PAINT_GPENCIL) && (brush->gpencil_tool == GPAINT_TOOL_ERASE)) { /* save first eraser to use later if no default */ if (brush_dft == NULL) { ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [8fa26bf7e11] functions: disable duplicate removal
Commit: 8fa26bf7e114219400bf862eaa7d7f14d30b88e3 Author: Jacques Lucke Date: Wed Feb 5 10:26:33 2020 +0100 Branches: functions https://developer.blender.org/rB8fa26bf7e114219400bf862eaa7d7f14d30b88e3 disable duplicate removal === M source/blender/functions/intern/node_tree_multi_function_network/generate.cc === diff --git a/source/blender/functions/intern/node_tree_multi_function_network/generate.cc b/source/blender/functions/intern/node_tree_multi_function_network/generate.cc index 0f42b8513c5..a5dea57ed04 100644 --- a/source/blender/functions/intern/node_tree_multi_function_network/generate.cc +++ b/source/blender/functions/intern/node_tree_multi_function_network/generate.cc @@ -269,7 +269,7 @@ std::unique_ptr generate_node_tree_multi_function_network } optimize_network__constant_folding(network_builder, resources); - optimize_network__remove_duplicates(network_builder); + // optimize_network__remove_duplicates(network_builder); optimize_network__remove_unused_nodes(network_builder); // network_builder.to_dot__clipboard(); // function_tree.to_dot__clipboard(); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs