From 363d855cbe1b80839922f606eb7e038d74598aca Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sun, 10 Jul 2022 17:51:46 +1000 Subject: [PATCH] update FilamentViewer for v1.25 texture & shader providers --- ios/src/FilamentViewer.cpp | 31 +++++++++++++++++-------------- ios/src/FilamentViewer.hpp | 1 + 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/ios/src/FilamentViewer.cpp b/ios/src/FilamentViewer.cpp index 249ec998..a6ef10cb 100644 --- a/ios/src/FilamentViewer.cpp +++ b/ios/src/FilamentViewer.cpp @@ -16,6 +16,7 @@ #include "FilamentViewer.hpp" + #include #include #include @@ -37,6 +38,9 @@ #include #include #include +#include + +#include #include @@ -50,7 +54,7 @@ #include #include -#include +#include #include #include @@ -63,11 +67,6 @@ using namespace gltfio; using namespace utils; using namespace std::chrono; -namespace gltfio -{ - MaterialProvider *createUbershaderLoader(filament::Engine *engine); -} - namespace filament { class IndirectLight; @@ -154,14 +153,16 @@ namespace polyvox _view->setMultiSampleAntiAliasingOptions(multiSampleAntiAliasingOptions); - _materialProvider = gltfio::createUbershaderLoader(_engine); + _materialProvider = gltfio::createUbershaderProvider(_engine, UBERARCHIVE_DEFAULT_DATA, UBERARCHIVE_DEFAULT_SIZE); EntityManager &em = EntityManager::get(); _ncm = new NameComponentManager(em); _assetLoader = AssetLoader::create({_engine, _materialProvider, _ncm, &em}); _resourceLoader = new ResourceLoader( {.engine = _engine, .normalizeSkinningWeights = true, .recomputeBoundingBoxes = true}); - + _stbDecoder = createStbProvider(_engine); + _resourceLoader->addTextureProvider("image/png", _stbDecoder); + _resourceLoader->addTextureProvider("image/jpeg", _stbDecoder); manipulator = Manipulator::Builder().orbitHomePosition(0.0f, 0.0f, 0.05f).targetPosition(0.0f, 0.0f, 0.0f).build(Mode::ORBIT); _asset = nullptr; @@ -299,6 +300,8 @@ namespace polyvox _animator->updateBoneMatrices(); + // transformToUnitCube(); + Log("Successfully loaded GLB."); } @@ -426,9 +429,9 @@ namespace polyvox ResourceBuffer skyboxBuffer = _loadResource(skyboxPath); - image::KtxBundle *skyboxBundle = - new image::KtxBundle(static_cast(skyboxBuffer.data), static_cast(skyboxBuffer.size)); - _skyboxTexture = image::ktx::createTexture(_engine, skyboxBundle, false); + image::Ktx1Bundle *skyboxBundle = + new image::Ktx1Bundle(static_cast(skyboxBuffer.data), static_cast(skyboxBuffer.size)); + _skyboxTexture = ktxreader::Ktx1Reader::createTexture(_engine, skyboxBundle, false); _skybox = filament::Skybox::Builder().environment(_skyboxTexture).build(*_engine); _scene->setSkybox(_skybox); @@ -439,11 +442,11 @@ namespace polyvox // Load IBL. ResourceBuffer iblBuffer = _loadResource(iblPath); - image::KtxBundle *iblBundle = new image::KtxBundle( + image::Ktx1Bundle *iblBundle = new image::Ktx1Bundle( static_cast(iblBuffer.data), static_cast(iblBuffer.size)); math::float3 harmonics[9]; iblBundle->getSphericalHarmonics(harmonics); - _iblTexture = image::ktx::createTexture(_engine, iblBundle, false); + _iblTexture = ktxreader::Ktx1Reader::createTexture(_engine, iblBundle, false); _indirectLight = IndirectLight::Builder() .reflections(_iblTexture) .irradiance(3, harmonics) @@ -496,7 +499,7 @@ namespace polyvox { if (!_view || !_mainCamera || !_swapChain) { - // Log("Not ready for rendering"); + Log("Not ready for rendering"); return; } diff --git a/ios/src/FilamentViewer.hpp b/ios/src/FilamentViewer.hpp index a41d5886..2cf9a2e3 100644 --- a/ios/src/FilamentViewer.hpp +++ b/ios/src/FilamentViewer.hpp @@ -169,6 +169,7 @@ namespace polyvox { MaterialProvider* _materialProvider; gltfio::ResourceLoader* _resourceLoader = nullptr; + gltfio::TextureProvider* _stbDecoder = nullptr; bool _recomputeAabb = false; bool _actualSize = false;