@@ -222,6 +222,12 @@ class IMeshPackerV2Base
222
222
}
223
223
};
224
224
225
+ IMeshPackerV2Base () : m_virtualAttribConfig() {}
226
+ explicit IMeshPackerV2Base (const VirtualAttribConfig& cfg) : m_virtualAttribConfig()
227
+ {
228
+ m_virtualAttribConfig = cfg;
229
+ }
230
+
225
231
VirtualAttribConfig m_virtualAttribConfig;
226
232
};
227
233
@@ -358,7 +364,7 @@ class IMeshPackerV2 : public IMeshPacker<MeshBufferType,MDIStructType>, public I
358
364
std::function<core::smart_refctd_ptr<IDescriptor>(E_FORMAT)> createBufferView, const DSLayoutParamsUTB& params = {}
359
365
) const
360
366
{
361
- const uint32_t writeCount = getDSlayoutBindingsForUTB_internal (nullptr );
367
+ const uint32_t writeCount = getDSlayoutBindingsForUTB (nullptr );
362
368
const uint32_t infoCount = 1u + // for the index buffer
363
369
m_virtualAttribConfig.uintArrayElementsCnt +
364
370
m_virtualAttribConfig.floatArrayElementsCnt +
@@ -391,33 +397,33 @@ class IMeshPackerV2 : public IMeshPacker<MeshBufferType,MDIStructType>, public I
391
397
};
392
398
393
399
auto * write = outWrites;
394
- auto writeBinding = [&bnd ,dstSet,&info](uint32_t binding, uint32_t count)
400
+ auto writeBinding = [&write ,dstSet,&info](uint32_t binding, uint32_t count)
395
401
{
396
402
write->binding = binding;
397
403
write->arrayElement = 0u ;
398
404
write->count = count;
399
405
write->descriptorType = asset::EDT_UNIFORM_TEXEL_BUFFER;
400
406
write->dstSet = dstSet;
401
407
write->info = info;
402
- write++
408
+ write++;
403
409
};
404
410
405
411
writeBinding (params.usamplersBinding ,1u +m_virtualAttribConfig.uintArrayElementsCnt );
406
412
if (m_virtualAttribConfig.uintArrayElementsCnt )
407
- fillInfoStruct (EUAT_INT );
413
+ fillInfoStruct (E_UTB_ARRAY_TYPE::EUAT_UINT );
408
414
info->desc = createBufferView (EF_R16G16_UINT);
409
415
info->buffer .offset = 0u ;
410
416
info->buffer .size = m_packerDataStore.indexBuffer ->getSize ();
411
417
info++;
412
418
if (m_virtualAttribConfig.floatArrayElementsCnt )
413
419
{
414
420
writeBinding (params.fsamplersBinding ,1u +m_virtualAttribConfig.floatArrayElementsCnt );
415
- fillInfoStruct (EUAT_FLOAT);
421
+ fillInfoStruct (E_UTB_ARRAY_TYPE:: EUAT_FLOAT);
416
422
}
417
423
if (m_virtualAttribConfig.intArrayElementsCnt )
418
424
{
419
425
writeBinding (params.isamplersBinding ,1u +m_virtualAttribConfig.intArrayElementsCnt );
420
- fillInfoStruct (EUAT_INT);
426
+ fillInfoStruct (E_UTB_ARRAY_TYPE:: EUAT_INT);
421
427
}
422
428
423
429
return std::make_pair (writeCount, infoCount);
@@ -566,8 +572,13 @@ class IMeshPackerV2 : public IMeshPacker<MeshBufferType,MDIStructType>, public I
566
572
567
573
protected:
568
574
IMeshPackerV2 (const AllocationParams& allocParams, uint16_t minTriangleCountPerMDIData, uint16_t maxTriangleCountPerMDIData)
569
- :base_t (minTriangleCountPerMDIData, maxTriangleCountPerMDIData),
570
- m_allocParams (allocParams)
575
+ : base_t (minTriangleCountPerMDIData, maxTriangleCountPerMDIData), m_allocParams(allocParams)
576
+ {
577
+ initializeCommonAllocators (allocParams);
578
+ };
579
+ template <class OtherBufferType , class OtherDescriptorSetType , class OtherMeshBufferType >
580
+ explicit IMeshPackerV2 (const IMeshPackerV2<OtherBufferType,OtherDescriptorSetType,OtherMeshBufferType,MDIStructType>* otherMp)
581
+ : base_t(cpuMP->m_minTriangleCountPerMDIData,cpuMP->m_maxTriangleCountPerMDIData), IMeshPackerV2Base(cpuMP->m_virtualAttribConfig), m_allocParams(otherMp->m_allocParams)
571
582
{
572
583
initializeCommonAllocators (allocParams);
573
584
};
0 commit comments