Skip to content

Commit 40b9b7e

Browse files
just PArserUtil.cpp, CMitsubaLoader.cpp, CSerializedLoader.cpp and main.cpp left to fix
1 parent ead11eb commit 40b9b7e

27 files changed

+75
-96
lines changed

examples_tests/18.MitsubaLoader/main.cpp

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ int main()
201201

202202
//
203203
asset::SAssetBundle meshes;
204-
core::smart_refctd_ptr<ext::MitsubaLoader::CGlobalMitsubaMetadata> globalMeta;
204+
core::smart_refctd_ptr<const ext::MitsubaLoader::CMitsubaMetadata> globalMeta;
205205
{
206206
auto device = createDeviceEx(params);
207207

@@ -277,26 +277,24 @@ int main()
277277
if (!firstmesh)
278278
return 3;
279279

280-
auto meta = firstmesh->getMetadata();
281-
if (!meta)
280+
globalMeta = core::smart_refctd_ptr<const ext::MitsubaLoader::CMitsubaMetadata>(meshes.getMetadata()->selfCast<const ext::MitsubaLoader::CMitsubaMetadata>());
281+
if (!globalMeta)
282282
return 4;
283-
assert(core::strcmpi(meta->getLoaderName(),ext::MitsubaLoader::IMitsubaMetadata::LoaderName) == 0);
284-
globalMeta = static_cast<ext::MitsubaLoader::IMeshMetadata*>(meta)->globalMetadata;
285283
}
286284

287285

288286
// recreate wth resolution
289287
params.WindowSize = dimension2d<uint32_t>(1280, 720);
290288
// set resolution
291-
if (globalMeta->sensors.size())
289+
if (globalMeta->m_global.m_sensors.size())
292290
{
293-
const auto& film = globalMeta->sensors.front().film;
291+
const auto& film = globalMeta->m_global.m_sensors.front().film;
294292
params.WindowSize.Width = film.width;
295293
params.WindowSize.Height = film.height;
296294
}
297295
else return 1; // no cameras
298296

299-
const auto& sensor = globalMeta->sensors.front(); //always choose frist one
297+
const auto& sensor = globalMeta->m_global.m_sensors.front(); //always choose frist one
300298
auto isOkSensorType = [](const ext::MitsubaLoader::CElementSensor& sensor) -> bool {
301299
return sensor.type == ext::MitsubaLoader::CElementSensor::Type::PERSPECTIVE || sensor.type == ext::MitsubaLoader::CElementSensor::Type::THINLENS;
302300
};
@@ -366,32 +364,24 @@ int main()
366364
ds2layout = core::make_smart_refctd_ptr<asset::ICPUDescriptorSetLayout>(bnd, bnd + 4);
367365
}
368366

367+
auto contents = meshes.getContents();
369368
//gather all meshes into core::vector and modify their pipelines
370369
core::vector<core::smart_refctd_ptr<asset::ICPUMesh>> cpumeshes;
371-
cpumeshes.reserve(meshes.getSize());
370+
cpumeshes.reserve(contents.size());
372371
uint32_t cc = cpumeshes.capacity();
373-
for (auto it = meshes.getContents().begin(); it != meshes.getContents().end(); ++it)
374-
{
372+
for (auto it=contents.begin(); it!=contents.end(); ++it)
375373
cpumeshes.push_back(core::smart_refctd_ptr_static_cast<asset::ICPUMesh>(std::move(*it)));
376-
}
377-
378-
core::smart_refctd_ptr<asset::ICPUDescriptorSet> cpuds0;
379-
{
380-
auto* meta = static_cast<ext::MitsubaLoader::CMitsubaPipelineMetadata*>(cpumeshes[0]->getMeshBuffer(0)->getPipeline()->getMetadata());
381-
cpuds0 = core::smart_refctd_ptr<asset::ICPUDescriptorSet>(meta->getDescriptorSet());
382-
}
383374

384-
//all pipelines have the same metadata
385-
auto* pipelineMetadata = static_cast<const asset::IPipelineMetadata*>(cpumeshes.front()->getMeshBuffer(0u)->getPipeline()->getMetadata());
375+
auto cpuds0 = globalMeta->m_global.m_ds0;
386376

387-
asset::ICPUDescriptorSetLayout* ds1layout = cpumeshes.front()->getMeshBuffer(0u)->getPipeline()->getLayout()->getDescriptorSetLayout(1u);
377+
asset::ICPUDescriptorSetLayout* ds1layout = cpumeshes.front()->getMeshBuffers().begin()[0u]->getPipeline()->getLayout()->getDescriptorSetLayout(1u);
388378
uint32_t ds1UboBinding = 0u;
389379
for (const auto& bnd : ds1layout->getBindings())
390-
if (bnd.type==asset::EDT_UNIFORM_BUFFER)
391-
{
392-
ds1UboBinding = bnd.binding;
393-
break;
394-
}
380+
if (bnd.type==asset::EDT_UNIFORM_BUFFER)
381+
{
382+
ds1UboBinding = bnd.binding;
383+
break;
384+
}
395385

396386

397387
//point lights
@@ -437,8 +427,8 @@ int main()
437427
if (inst.emitter.type==ext::MitsubaLoader::CElementEmitter::AREA)
438428
{
439429
core::vectorSIMDf pos;
440-
assert(cpumesh->getMeshBufferCount()==1u);
441-
const float area = computeAreaAndAvgPos(cpumesh->getMeshBuffer(0), inst.tform, pos);
430+
assert(cpumesh->getMeshBuffers().size()==1u);
431+
const float area = computeAreaAndAvgPos(cpumesh->getMeshBuffers().begin()[0], inst.tform, pos);
442432
assert(area>0.f);
443433
inst.tform.pseudoMulWith4x1(pos);
444434

@@ -459,9 +449,8 @@ int main()
459449
for (auto& mesh : cpumeshes)
460450
{
461451
//modify pipeline layouts with our custom DS2 layout (DS2 will be used for lights buffer)
462-
for (uint32_t i = 0u; i < mesh->getMeshBufferCount(); ++i)
452+
for (auto meshbuffer : mesh->getMeshBuffers())
463453
{
464-
auto* meshbuffer = mesh->getMeshBuffer(i);
465454
auto* pipeline = meshbuffer->getPipeline();
466455

467456
asset::SPushConstantRange pcr;
@@ -644,7 +633,7 @@ int main()
644633
#ifdef TESTING
645634
if (0)
646635
#else
647-
if (globalMeta->sensors.size() && isOkSensorType(globalMeta->sensors.front()))
636+
if (globalMeta->m_global.m_sensors.size() && isOkSensorType(globalMeta->m_global.m_sensors.front()))
648637
#endif
649638
{
650639
const auto& film = sensor.film;
@@ -762,10 +751,8 @@ int main()
762751
{
763752
auto& mesh = (*gpumeshes)[j];
764753

765-
for (uint32_t i = 0u; i < mesh->getMeshBufferCount(); ++i)
754+
for (auto mb : mesh->getMeshBuffers())
766755
{
767-
auto* mb = mesh->getMeshBuffer(i);
768-
769756
auto* pipeline = mb->getPipeline();
770757
const video::IGPUDescriptorSet* ds[3]{ gpuds0.get(), gpuds1.get(), gpuds2.get() };
771758
driver->bindGraphicsPipeline(pipeline);

include/nbl/ext/MitsubaLoader/CElementBSDF.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ namespace ext
1414
namespace MitsubaLoader
1515
{
1616

17-
class CGlobalMitsubaMetadata;
1817

1918
class CElementBSDF : public IElement
2019
{
@@ -363,7 +362,7 @@ class CElementBSDF : public IElement
363362
}
364363

365364
bool addProperty(SNamedPropertyElement&& _property) override;
366-
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CGlobalMitsubaMetadata* globalMetadata) override;
365+
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CMitsubaMetadata* globalMetadata) override;
367366
IElement::Type getType() const override { return IElement::Type::BSDF; }
368367
std::string getLogName() const override { return "bsdf"; }
369368

include/nbl/ext/MitsubaLoader/CElementEmitter.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ namespace MitsubaLoader
1818
{
1919

2020

21-
class CGlobalMitsubaMetadata;
22-
2321
class CElementEmitter : public IElement
2422
{
2523
public:
@@ -204,7 +202,7 @@ class CElementEmitter : public IElement
204202
}
205203

206204
bool addProperty(SNamedPropertyElement&& _property) override;
207-
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CGlobalMitsubaMetadata* globalMetadata) override;
205+
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CMitsubaMetadata* globalMetadata) override;
208206
IElement::Type getType() const override { return IElement::Type::EMITTER; }
209207
std::string getLogName() const override { return "emitter"; }
210208

include/nbl/ext/MitsubaLoader/CElementFilm.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ namespace ext
1616
namespace MitsubaLoader
1717
{
1818

19-
class CGlobalMitsubaMetadata;
2019

2120
class CElementFilm : public IElement
2221
{
@@ -101,7 +100,7 @@ class CElementFilm : public IElement
101100
}
102101

103102
bool addProperty(SNamedPropertyElement&& _property) override;
104-
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CGlobalMitsubaMetadata* globalMetadata) override;
103+
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CMitsubaMetadata* globalMetadata) override;
105104
IElement::Type getType() const override { return IElement::Type::FILM; }
106105
std::string getLogName() const override { return "film"; }
107106

include/nbl/ext/MitsubaLoader/CElementIntegrator.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ namespace ext
1414
namespace MitsubaLoader
1515
{
1616

17-
class CGlobalMitsubaMetadata;
1817

1918
class CElementIntegrator : public IElement
2019
{
@@ -268,7 +267,7 @@ class CElementIntegrator : public IElement
268267
}
269268

270269
bool addProperty(SNamedPropertyElement&& _property) override;
271-
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CGlobalMitsubaMetadata* globalMetadata) override;
270+
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CMitsubaMetadata* globalMetadata) override;
272271
IElement::Type getType() const override { return IElement::Type::INTEGRATOR; }
273272
std::string getLogName() const override { return "integrator"; }
274273

include/nbl/ext/MitsubaLoader/CElementRFilter.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ namespace ext
1616
namespace MitsubaLoader
1717
{
1818

19-
class CGlobalMitsubaMetadata;
2019

2120
class CElementRFilter : public IElement
2221
{
@@ -52,7 +51,7 @@ class CElementRFilter : public IElement
5251
virtual ~CElementRFilter() {}
5352

5453
bool addProperty(SNamedPropertyElement&& _property) override;
55-
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CGlobalMitsubaMetadata* globalMetadata) override;
54+
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CMitsubaMetadata* globalMetadata) override;
5655
IElement::Type getType() const override { return IElement::Type::RFILTER; }
5756
std::string getLogName() const override { return "rfilter"; }
5857

include/nbl/ext/MitsubaLoader/CElementSampler.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class CElementSampler : public IElement
3434
virtual ~CElementSampler() {}
3535

3636
bool addProperty(SNamedPropertyElement&& _property) override;
37-
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CGlobalMitsubaMetadata* globalMetadata) override;
37+
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CMitsubaMetadata* globalMetadata) override;
3838
IElement::Type getType() const override { return IElement::Type::SAMPLER; }
3939
std::string getLogName() const override { return "sampler"; }
4040

include/nbl/ext/MitsubaLoader/CElementSensor.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
#include "nbl/ext/MitsubaLoader/IElement.h"
99
#include "nbl/ext/MitsubaLoader/CElementTransform.h"
10-
//#include "nbl/ext/MitsubaLoader/CElementAnimation.h"
1110
#include "nbl/ext/MitsubaLoader/CElementFilm.h"
1211
#include "nbl/ext/MitsubaLoader/CElementSampler.h"
1312

@@ -19,7 +18,6 @@ namespace ext
1918
namespace MitsubaLoader
2019
{
2120

22-
class CGlobalMitsubaMetadata;
2321

2422
class CElementSensor : public IElement
2523
{
@@ -149,7 +147,7 @@ class CElementSensor : public IElement
149147
}
150148

151149
bool addProperty(SNamedPropertyElement&& _property) override;
152-
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CGlobalMitsubaMetadata* globalMetadata) override;
150+
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CMitsubaMetadata* globalMetadata) override;
153151
IElement::Type getType() const override { return IElement::Type::SENSOR; }
154152
std::string getLogName() const override { return "sensor"; }
155153

include/nbl/ext/MitsubaLoader/CElementShape.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ namespace ext
1818
namespace MitsubaLoader
1919
{
2020

21-
class CGlobalMitsubaMetadata;
2221

2322
class CElementShape : public IElement
2423
{
@@ -221,7 +220,7 @@ class CElementShape : public IElement
221220
}
222221

223222
bool addProperty(SNamedPropertyElement&& _property) override;
224-
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CGlobalMitsubaMetadata* globalMetadata) override;
223+
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CMitsubaMetadata* globalMetadata) override;
225224
IElement::Type getType() const override { return IElement::Type::SHAPE; }
226225
std::string getLogName() const override { return "shape"; }
227226

include/nbl/ext/MitsubaLoader/CElementTexture.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ namespace ext
1515
namespace MitsubaLoader
1616
{
1717

18-
class CGlobalMitsubaMetadata;
1918

2019
class CElementTexture : public IElement
2120
{
@@ -241,7 +240,7 @@ class CElementTexture : public IElement
241240
}
242241

243242
bool addProperty(SNamedPropertyElement&& _property) override;
244-
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CGlobalMitsubaMetadata* globalMetadata) override;
243+
bool onEndTag(asset::IAssetLoader::IAssetLoaderOverride* _override, CMitsubaMetadata* globalMetadata) override;
245244
IElement::Type getType() const override { return IElement::Type::TEXTURE; }
246245
std::string getLogName() const override { return "texture"; }
247246

0 commit comments

Comments
 (0)