@@ -172,51 +172,33 @@ CGraphicsPipelineLoaderMTL::CGraphicsPipelineLoaderMTL(IAssetManager* _am) : m_a
172
172
173
173
174
174
constexpr const char * MISSING_MTL_PIPELINE_CACHE_KEY = " irr/builtin/graphics_pipeline/loaders/mtl/missing_material_pipeline" ;
175
-
176
- /*
177
- if possible, it would be great to use CImageLoaderPNG here
178
-
179
- auto imgDataBuf = core::make_smart_refctd_ptr<ICPUBuffer>(sizeof(MISSING_CHECKERBOARD_TEXTURE_CONTENT));
180
- void* dst = reinterpret_cast<uint8_t*>(imgDataBuf->getPointer());
181
- const void* src = &MISSING_CHECKERBOARD_TEXTURE_CONTENT;
182
- memcpy(dst, src, sizeof(MISSING_CHECKERBOARD_TEXTURE_CONTENT));
183
- ICPUImage::SCreationParams imageParams;
184
- imageParams.type =
185
- ICPUImage img();
186
-
187
-
188
-
189
-
190
- */
191
- auto texture_file = m_assetMgr->getFileSystem ()->createMemoryReadFile (MISSING_CHECKERBOARD_TEXTURE_CONTENT, sizeof (MISSING_CHECKERBOARD_TEXTURE_CONTENT), " checkerboard.png" );
192
-
193
- SAssetLoadParams params;
194
- auto imageBundle = m_assetMgr->getAsset (texture_file, std::string (" checkerboard.png" ), params);
175
+ auto default_texture_file = m_assetMgr->getFileSystem ()->createMemoryReadFile (MISSING_CHECKERBOARD_TEXTURE_CONTENT, sizeof (MISSING_CHECKERBOARD_TEXTURE_CONTENT), " checkerboard.png" );
176
+
177
+ SAssetLoadParams assetLoadParams;
178
+ auto imageBundle = m_assetMgr->getAsset (default_texture_file, std::string (" checkerboard.png" ), assetLoadParams);
195
179
auto image = core::smart_refctd_ptr_dynamic_cast<ICPUImage>(imageBundle.getContents ().begin ()[0 ]);
180
+ default_texture_file->drop ();
196
181
ICPUImageView::SCreationParams viewParams;
197
- viewParams.flags = static_cast <ICPUImageView::E_CREATE_FLAGS>(0u );
198
- viewParams.format = EF_UNKNOWN;
199
- viewParams.viewType = IImageView<ICPUImage>::ET_2D;
200
- viewParams.subresourceRange .baseArrayLayer = 0u ;
201
- viewParams.subresourceRange .layerCount = 1u ;
202
- viewParams.subresourceRange .baseMipLevel = 0u ;
203
- viewParams.subresourceRange .levelCount = 1u ;
204
- viewParams.image = std::move (image);
205
-
206
- image_views_set_t views;
207
- views[0 ] = ICPUImageView::create (std::move (viewParams));
208
-
209
- auto file = m_assetMgr->getFileSystem ()->createMemoryReadFile (DUMMY_MTL_CONTENT, strlen (DUMMY_MTL_CONTENT), " default IrrlichtBAW material" );
210
- auto bundle = loadAsset (file, params);
211
- auto pipeline = static_cast < ICPURenderpassIndependentPipeline*>( bundle.getContents ().begin ()->get ());
212
- file->drop ();
213
- auto p = core::smart_refctd_ptr<ICPURenderpassIndependentPipeline>(pipeline);
214
- auto ds3 = makeDescSet (std::move (views), p->getLayout ()->getDescriptorSetLayout (3u ));
215
-
216
- SAssetBundle ds3Bundle{ ds3 };
217
- m_assetMgr->changeAssetKey (ds3Bundle, MISSING_CHECKERBOARD_TEXTURE_CACHE_KEY);
218
- m_assetMgr->insertAssetIntoCache (ds3Bundle);
219
-
182
+ {
183
+ viewParams.flags = static_cast <ICPUImageView::E_CREATE_FLAGS>(0u );
184
+ viewParams.format = EF_UNKNOWN;
185
+ viewParams.viewType = IImageView<ICPUImage>::ET_2D;
186
+ viewParams.subresourceRange .baseArrayLayer = 0u ;
187
+ viewParams.subresourceRange .layerCount = 1u ;
188
+ viewParams.subresourceRange .baseMipLevel = 0u ;
189
+ viewParams.subresourceRange .levelCount = 1u ;
190
+ viewParams.image = std::move (image);
191
+ }
192
+ auto imageView = ICPUImageView::create (std::move (viewParams));
193
+ SAssetBundle imageViewBundle{ imageView };
194
+ m_assetMgr->changeAssetKey (imageViewBundle, MISSING_CHECKERBOARD_TEXTURE_CACHE_KEY);
195
+ m_assetMgr->insertAssetIntoCache (imageViewBundle);
196
+
197
+ auto default_mtl_file = m_assetMgr->getFileSystem ()->createMemoryReadFile (DUMMY_MTL_CONTENT, strlen (DUMMY_MTL_CONTENT), " default IrrlichtBAW material" );
198
+ auto bundle = loadAsset (default_mtl_file, assetLoadParams);
199
+ auto pipelinePtr = static_cast < ICPURenderpassIndependentPipeline*>( bundle.getContents ().begin ()->get ());
200
+ default_mtl_file->drop ();
201
+ auto p = core::smart_refctd_ptr<ICPURenderpassIndependentPipeline>(pipelinePtr);
220
202
insertPipelineIntoCache (std::move (p), MISSING_MTL_PIPELINE_CACHE_KEY, m_assetMgr);
221
203
}
222
204
@@ -397,12 +379,17 @@ SAssetBundle CGraphicsPipelineLoaderMTL::loadAsset(io::IReadFile* _file, const I
397
379
}
398
380
}
399
381
}
400
- else {
382
+ else
383
+ {
401
384
const asset::IAsset::E_TYPE types[]{ asset::IAsset::ET_DESCRIPTOR_SET, (asset::IAsset::E_TYPE)0u };
402
- auto b = m_assetMgr->findAssets (dsCacheKey, types);
403
- if (b)
385
+ SAssetLoadParams assetloadparams;
386
+ auto default_imageview_bundle = m_assetMgr->getAsset (dsCacheKey, assetloadparams);
387
+ if (!default_imageview_bundle.isEmpty ())
404
388
{
405
- ds3 = core::smart_refctd_ptr_dynamic_cast<ICPUDescriptorSet>(b->begin ()->getContents ().begin ()[0 ]);
389
+ auto assetptr = core::smart_refctd_ptr_dynamic_cast<ICPUImageView>(default_imageview_bundle.getContents ().begin ()[0 ]);
390
+ image_views_set_t views;
391
+ views[0 ] = assetptr;
392
+ ds3 = makeDescSet (std::move (views), layout->getDescriptorSetLayout (3u ));
406
393
}
407
394
}
408
395
}
0 commit comments