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