39 using T = decltype(dummy);
40 using Converter = AttributeConverter<T>;
41 using VBOType = typename Converter::VBOType;
42 if constexpr (!std::is_void_v<VBOType>) {
43 const Span<T> src = attribute.typed<T>();
44 MutableSpan<VBOType> data = vbo.data<VBOType>();
45 if constexpr (std::is_same_v<T, VBOType>) {
46 array_utils::copy(src, data);
49 threading::parallel_for(src.index_range(), 8192, [&](const IndexRange range) {
50 for (const int i : range) {
51 data[i] = Converter::convert(src[i]);