105 const Nurb &src_curve = *src_curves[i];
109 offset += src_curve.
pntsu;
111 offsets.
last() = offset;
114 curves.update_curve_types();
125 const Nurb &src_curve = *src_curves[curve_i];
127 const IndexRange points = points_by_curve[curve_i];
130 const BPoint &bp = src_points[i];
131 positions[points[i]] = bp.
vec;
132 radii[points[i]] = bp.
radius;
133 tilts[points[i]] = bp.
tilt;
150 const Nurb &src_curve = *src_curves[curve_i];
152 const IndexRange points = points_by_curve[curve_i];
154 resolutions[curve_i] = src_curve.
resolu;
158 positions[points[i]] =
point.vec[1];
159 handle_positions_l[points[i]] =
point.vec[0];
161 handle_positions_r[points[i]] =
point.vec[2];
163 radii[points[i]] =
point.radius;
164 tilts[points[i]] =
point.tilt;
176 const Nurb &src_curve = *src_curves[curve_i];
177 const Span src_points(src_curve.
bp, src_curve.
pntsu);
178 const IndexRange points = points_by_curve[curve_i];
180 resolutions[curve_i] = src_curve.
resolu;
181 nurbs_orders[curve_i] = src_curve.
orderu;
185 const BPoint &bp = src_points[i];
186 positions[points[i]] = bp.
vec;
187 radii[points[i]] = bp.
radius;
188 tilts[points[i]] = bp.
tilt;
189 nurbs_weights[points[i]] = bp.
vec[3];
196 curves.curve_type_counts(),
198 [&](
const IndexMask & ) { BLI_assert_unreachable(); },
205 radius_attribute.
finish();
void foreach_curve_by_type(const VArray< int8_t > &types, const std::array< int, CURVE_TYPES_NUM > &type_counts, const IndexMask &selection, FunctionRef< void(IndexMask)> catmull_rom_fn, FunctionRef< void(IndexMask)> poly_fn, FunctionRef< void(IndexMask)> bezier_fn, FunctionRef< void(IndexMask)> nurbs_fn)
GPU_SHADER_INTERFACE_INFO(overlay_edit_curve_handle_iface, "vert").flat(Type pos vertex_in(1, Type::UINT, "data") .vertex_out(overlay_edit_curve_handle_iface) .geometry_layout(PrimitiveIn Frequency::GEOMETRY storage_buf(1, Qualifier::READ, "uint", "data[]", Frequency::GEOMETRY) .push_constant(Type Frequency::GEOMETRY selection[]