use both ubershader/unlit material provider

This commit is contained in:
Nick Fisher
2023-03-12 14:01:26 +08:00
parent 137c9ecede
commit c856bb80cb
2 changed files with 15 additions and 12 deletions

View File

@@ -136,7 +136,8 @@ namespace polyvox {
Texture* _iblTexture = nullptr; Texture* _iblTexture = nullptr;
IndirectLight* _indirectLight = nullptr; IndirectLight* _indirectLight = nullptr;
MaterialProvider* _materialProvider = nullptr; MaterialProvider* _ubershaderProvider = nullptr;
MaterialProvider* _unlitProvider = nullptr;
gltfio::ResourceLoader* _resourceLoader = nullptr; gltfio::ResourceLoader* _resourceLoader = nullptr;
gltfio::TextureProvider* _stbDecoder = nullptr; gltfio::TextureProvider* _stbDecoder = nullptr;

View File

@@ -73,7 +73,7 @@
#include "ResourceManagement.hpp" #include "ResourceManagement.hpp"
extern "C" { extern "C" {
#include "material/image_material.h" #include "material/image.h"
#include "material/unlit_opaque.h" #include "material/unlit_opaque.h"
} }
@@ -154,11 +154,11 @@ FilamentViewer::FilamentViewer(void* context, LoadResource loadResource,
_view->setScene(_scene); _view->setScene(_scene);
_view->setCamera(_mainCamera); _view->setCamera(_mainCamera);
// ToneMapper *tm = new LinearToneMapper(); ToneMapper *tm = new LinearToneMapper();
// colorGrading = ColorGrading::Builder().toneMapper(tm).build(*_engine); colorGrading = ColorGrading::Builder().toneMapper(tm).build(*_engine);
// delete tm; delete tm;
// _view->setColorGrading(colorGrading); _view->setColorGrading(colorGrading);
_cameraFocalLength = 28.0f; _cameraFocalLength = 28.0f;
_mainCamera->setLensProjection(_cameraFocalLength, 1.0f, kNearPlane, _mainCamera->setLensProjection(_cameraFocalLength, 1.0f, kNearPlane,
@@ -192,15 +192,16 @@ FilamentViewer::FilamentViewer(void* context, LoadResource loadResource,
// auto materialRb = _loadResource("file:///mnt/hdd_2tb/home/hydroxide/projects/filament/unlit.filamat"); // auto materialRb = _loadResource("file:///mnt/hdd_2tb/home/hydroxide/projects/filament/unlit.filamat");
// Log("Loaded resource of size %d", materialRb.size); // Log("Loaded resource of size %d", materialRb.size);
// _materialProvider = new FileMaterialProvider(_engine, (void*) materialRb.data, (size_t)materialRb.size); // _materialProvider = new FileMaterialProvider(_engine, (void*) materialRb.data, (size_t)materialRb.size);
//_materialProvider = new UnlitMaterialProvider(_engine);
_unlitProvider = new UnlitMaterialProvider(_engine);
_materialProvider = gltfio::createUbershaderProvider( _ubershaderProvider = gltfio::createUbershaderProvider(
_engine, UBERARCHIVE_DEFAULT_DATA, UBERARCHIVE_DEFAULT_SIZE); _engine, UBERARCHIVE_DEFAULT_DATA, UBERARCHIVE_DEFAULT_SIZE);
Log("Created material provider"); Log("Created material provider");
EntityManager &em = EntityManager::get(); EntityManager &em = EntityManager::get();
_ncm = new NameComponentManager(em); _ncm = new NameComponentManager(em);
_assetLoader = AssetLoader::create({_engine, _materialProvider, _ncm, &em}); _assetLoader = AssetLoader::create({_engine, _ubershaderProvider, _ncm, &em});
_resourceLoader = new ResourceLoader({.engine = _engine, _resourceLoader = new ResourceLoader({.engine = _engine,
.normalizeSkinningWeights = true }); .normalizeSkinningWeights = true });
_stbDecoder = createStbProvider(_engine); _stbDecoder = createStbProvider(_engine);
@@ -268,7 +269,7 @@ void FilamentViewer::createImageRenderable() {
_imageMaterial = _imageMaterial =
Material::Builder() Material::Builder()
.package(IMAGE_MATERIAL_PACKAGE, IMAGE_MATERIAL_IMAGE_SIZE) .package(IMAGE_PACKAGE, IMAGE_IMAGE_SIZE)
.build(*_engine); .build(*_engine);
_imageVb = VertexBuffer::Builder() _imageVb = VertexBuffer::Builder()
@@ -530,7 +531,8 @@ FilamentViewer::~FilamentViewer() {
clearAssets(); clearAssets();
delete _sceneAssetLoader; delete _sceneAssetLoader;
_resourceLoader->asyncCancelLoad(); _resourceLoader->asyncCancelLoad();
_materialProvider->destroyMaterials(); _ubershaderProvider->destroyMaterials();
_unlitProvider->destroyMaterials();
AssetLoader::destroy(&_assetLoader); AssetLoader::destroy(&_assetLoader);
for(auto it : _lights) { for(auto it : _lights) {
_engine->destroy(it); _engine->destroy(it);