diff --git a/source/blender/editors/sculpt_paint/grease_pencil_paint.cc b/source/blender/editors/sculpt_paint/grease_pencil_paint.cc index fb4dc73c0d6..c42e9792f93 100644 --- a/source/blender/editors/sculpt_paint/grease_pencil_paint.cc +++ b/source/blender/editors/sculpt_paint/grease_pencil_paint.cc @@ -238,21 +238,28 @@ struct PaintOperationExecutor { "hardness", bke::AttrDomain::Curve, bke::AttributeInitVArray(VArray::ForSingle(1.0f, curves.curves_num()))); - bke::SpanAttributeWriter start_caps = attributes.lookup_or_add_for_write_span( - "start_cap", bke::AttrDomain::Curve); - bke::SpanAttributeWriter end_caps = attributes.lookup_or_add_for_write_span( - "end_cap", bke::AttrDomain::Curve); cyclic.span.last() = false; materials.span.last() = material_index; hardnesses.span.last() = hardness_; - start_caps.span.last() = settings_->caps_type; - end_caps.span.last() = settings_->caps_type; + + /* Only set the attribute if the type is not the default or if it already exists. */ + if (settings_->caps_type != GP_STROKE_CAP_TYPE_ROUND || attributes.contains("start_cap")) { + bke::SpanAttributeWriter start_caps = + attributes.lookup_or_add_for_write_span("start_cap", bke::AttrDomain::Curve); + start_caps.span.last() = settings_->caps_type; + start_caps.finish(); + } + + if (settings_->caps_type != GP_STROKE_CAP_TYPE_ROUND || attributes.contains("end_cap")) { + bke::SpanAttributeWriter end_caps = attributes.lookup_or_add_for_write_span( + "end_cap", bke::AttrDomain::Curve); + end_caps.span.last() = settings_->caps_type; + end_caps.finish(); + } cyclic.finish(); materials.finish(); hardnesses.finish(); - start_caps.finish(); - end_caps.finish(); curves.curve_types_for_write().last() = CURVE_TYPE_POLY; curves.update_curve_types();