From fd843147adf7a44e14bc7ad5a429d7fc92bf985a Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 28 Sep 2023 10:46:20 +1000 Subject: [PATCH] add missing method handlers on Windows and use 32bit depth buffer for render target by default --- ios/include/AssetManager.hpp | 1 - ios/include/FilamentViewer.hpp | 3 ++- ios/include/PolyvoxFilamentApi.h | 1 + ios/src/AssetManager.cpp | 13 ++++++------- ios/src/FilamentViewer.cpp | 6 +++++- ios/src/PolyvoxFilamentApi.cpp | 6 +++++- macos/src/AssetManager.cpp | 3 --- 7 files changed, 19 insertions(+), 14 deletions(-) diff --git a/ios/include/AssetManager.hpp b/ios/include/AssetManager.hpp index a446a511..4bcf7ff2 100644 --- a/ios/include/AssetManager.hpp +++ b/ios/include/AssetManager.hpp @@ -76,7 +76,6 @@ namespace polyvox { NameComponentManager* _ncm = nullptr; Engine* _engine; Scene* _scene; - MaterialProvider* _unlitProvider = nullptr; MaterialProvider* _ubershaderProvider = nullptr; gltfio::ResourceLoader* _gltfResourceLoader = nullptr; gltfio::TextureProvider* _stbDecoder = nullptr; diff --git a/ios/include/FilamentViewer.hpp b/ios/include/FilamentViewer.hpp index b849678a..ca939013 100644 --- a/ios/include/FilamentViewer.hpp +++ b/ios/include/FilamentViewer.hpp @@ -75,6 +75,7 @@ namespace polyvox { bool setCamera(EntityId asset, const char* nodeName); + void createSwapChain(const void* surface, uint32_t width, uint32_t height); void destroySwapChain(); @@ -87,7 +88,7 @@ namespace polyvox { void clearBackgroundImage(); void setBackgroundImagePosition(float x, float y, bool clamp); void moveCameraToAsset(EntityId entityId); - + void setViewFrustumCulling(bool enabled); void setCameraExposure(float aperture, float shutterSpeed, float sensitivity); void setCameraPosition(float x, float y, float z); void setCameraRotation(float rads, float x, float y, float z); diff --git a/ios/include/PolyvoxFilamentApi.h b/ios/include/PolyvoxFilamentApi.h index 319e4f4c..49cd3155 100644 --- a/ios/include/PolyvoxFilamentApi.h +++ b/ios/include/PolyvoxFilamentApi.h @@ -109,6 +109,7 @@ void set_position(void* assetManager, EntityId asset, float x, float y, float z) void set_rotation(void* assetManager, EntityId asset, float rads, float x, float y, float z); void set_scale(void* assetManager, EntityId asset, float scale); void move_camera_to_asset(const void* const viewer, EntityId asset); +void set_view_frustum_culling(const void* const viewer, bool enabled); void set_camera_exposure(const void* const viewer, float aperture, float shutterSpeed, float sensitivity); void set_camera_position(const void* const viewer, float x, float y, float z); void set_camera_rotation(const void* const viewer, float rads, float x, float y, float z); diff --git a/ios/src/AssetManager.cpp b/ios/src/AssetManager.cpp index 3272ca9e..8bfbe367 100644 --- a/ios/src/AssetManager.cpp +++ b/ios/src/AssetManager.cpp @@ -21,9 +21,8 @@ #include "Log.hpp" #include "AssetManager.hpp" -#include "material/UnlitMaterialProvider.hpp" #include "material/FileMaterialProvider.hpp" -// #include "gltfio/materials/uberarchive.h" +#include "gltfio/materials/uberarchive.h" extern "C" { #include "material/image.h" @@ -53,14 +52,14 @@ _scene(scene) { _gltfResourceLoader = new ResourceLoader({.engine = _engine, .normalizeSkinningWeights = true }); - auto uberdata = resourceLoaderWrapper->load("packages/polyvox_filament/assets/default.uberz"); + // auto uberdata = resourceLoaderWrapper->load("packages/polyvox_filament/assets/default.uberz"); - if (!uberdata.data) { - Log("Failed to load ubershader material. This is fatal."); - } + // if (!uberdata.data) { + // Log("Failed to load ubershader material. This is fatal."); + // } _ubershaderProvider = gltfio::createUbershaderProvider( - _engine, uberdata.data, uberdata.size); + _engine, UBERARCHIVE_DEFAULT_DATA, UBERARCHIVE_DEFAULT_SIZE); Log("Created ubershader provider."); EntityManager &em = EntityManager::get(); diff --git a/ios/src/FilamentViewer.cpp b/ios/src/FilamentViewer.cpp index 427e6caf..74a78aba 100644 --- a/ios/src/FilamentViewer.cpp +++ b/ios/src/FilamentViewer.cpp @@ -602,7 +602,7 @@ void FilamentViewer::createRenderTarget(intptr_t textureId, uint32_t width, uint .height(height) .levels(1) .usage(filament::Texture::Usage::DEPTH_ATTACHMENT) - .format(filament::Texture::InternalFormat::DEPTH24) + .format(filament::Texture::InternalFormat::DEPTH32F) .build(*_engine); _rt = filament::RenderTarget::Builder() .texture(RenderTarget::AttachmentPoint::COLOR, _rtColor) @@ -901,6 +901,10 @@ void FilamentViewer::updateViewportAndCameraProjection( contentScaleFactor); } +void FilamentViewer::setViewFrustumCulling(bool enabled) { + _view->setFrustumCullingEnabled(enabled); +} + void FilamentViewer::setCameraPosition(float x, float y, float z) { Camera& cam =_view->getCamera(); diff --git a/ios/src/PolyvoxFilamentApi.cpp b/ios/src/PolyvoxFilamentApi.cpp index d9cbc256..5702ea28 100644 --- a/ios/src/PolyvoxFilamentApi.cpp +++ b/ios/src/PolyvoxFilamentApi.cpp @@ -96,10 +96,14 @@ extern "C" { return ((FilamentViewer*)viewer)->setCamera(asset, nodeName); } - void void move_camera_to_asset(const void* const viewer, EntityId asset) { + void move_camera_to_asset(const void* const viewer, EntityId asset) { ((FilamentViewer*)viewer)->moveCameraToAsset(asset); } + void set_view_frustum_culling(const void* const viewer, bool enabled) { + ((FilamentViewer*)viewer)->setViewFrustumCulling(enabled); + } + void set_camera_focus_distance(const void* const viewer, float distance) { ((FilamentViewer*)viewer)->setCameraFocusDistance(distance); } diff --git a/macos/src/AssetManager.cpp b/macos/src/AssetManager.cpp index db37d2c9..deea1ee1 100644 --- a/macos/src/AssetManager.cpp +++ b/macos/src/AssetManager.cpp @@ -18,14 +18,11 @@ #include "SceneAsset.hpp" #include "Log.hpp" -#include "material/StandardMaterialProvider.hpp" -#include "material/UnlitMaterialProvider.hpp" #include "material/FileMaterialProvider.hpp" #include "gltfio/materials/uberarchive.h" extern "C" { #include "material/image.h" -#include "material/unlit_opaque.h" } namespace polyvox {