Skip to content

Commit 7078e11

Browse files
committed
No UV cows still wont turn pink
1 parent 7c37b2e commit 7078e11

File tree

2 files changed

+37
-50
lines changed

2 files changed

+37
-50
lines changed

src/irr/asset/CGraphicsPipelineLoaderMTL.cpp

Lines changed: 34 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -172,51 +172,33 @@ CGraphicsPipelineLoaderMTL::CGraphicsPipelineLoaderMTL(IAssetManager* _am) : m_a
172172

173173

174174
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);
195179
auto image = core::smart_refctd_ptr_dynamic_cast<ICPUImage>(imageBundle.getContents().begin()[0]);
180+
default_texture_file->drop();
196181
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);
220202
insertPipelineIntoCache(std::move(p), MISSING_MTL_PIPELINE_CACHE_KEY, m_assetMgr);
221203
}
222204

@@ -397,12 +379,17 @@ SAssetBundle CGraphicsPipelineLoaderMTL::loadAsset(io::IReadFile* _file, const I
397379
}
398380
}
399381
}
400-
else {
382+
else
383+
{
401384
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())
404388
{
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));
406393
}
407394
}
408395
}

src/irr/asset/IAssetManager.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,6 @@ void IAssetManager::addLoadersAndWriters()
129129
#ifdef _IRR_COMPILE_WITH_PLY_LOADER_
130130
addAssetLoader(core::make_smart_refctd_ptr<asset::CPLYMeshFileLoader>(this));
131131
#endif
132-
#ifdef _IRR_COMPILE_WITH_MTL_LOADER_
133-
addAssetLoader(core::make_smart_refctd_ptr<asset::CGraphicsPipelineLoaderMTL>(this));
134-
#endif
135132
#ifdef _IRR_COMPILE_WITH_OBJ_LOADER_
136133
addAssetLoader(core::make_smart_refctd_ptr<asset::COBJMeshFileLoader>(this));
137134
#endif
@@ -174,6 +171,9 @@ void IAssetManager::addLoadersAndWriters()
174171
#ifdef _IRR_COMPILE_WITH_PNG_WRITER_
175172
addAssetWriter(core::make_smart_refctd_ptr<asset::CImageWriterPNG>());
176173
#endif
174+
#ifdef _IRR_COMPILE_WITH_MTL_LOADER_
175+
addAssetLoader(core::make_smart_refctd_ptr<asset::CGraphicsPipelineLoaderMTL>(this));
176+
#endif
177177
#ifdef _IRR_COMPILE_WITH_OPENEXR_WRITER_
178178
addAssetWriter(core::make_smart_refctd_ptr<asset::CImageWriterOpenEXR>());
179179
#endif

0 commit comments

Comments
 (0)