2023-10-03 00:34:29 +08:00
2021-11-06 12:38:56 +08:00
2023-10-03 00:34:29 +08:00
2023-10-03 00:34:29 +08:00
2023-10-03 00:34:29 +08:00
2023-04-18 14:17:05 +08:00
2023-04-27 16:32:32 +08:00
2023-09-22 08:22:19 +08:00
2023-09-30 16:54:20 +10:00
2023-09-22 08:25:03 +08:00
2021-09-15 20:07:11 +08:00
2021-09-15 20:07:11 +08:00
2021-09-15 20:07:11 +08:00
2023-09-22 08:29:26 +08:00
2023-09-30 16:54:20 +10:00
2023-10-03 00:34:29 +08:00

polyvox_filament

Flutter plugin wrapping the Filament renderer https://github.com/google/filament.

Filament is bundled with pre-compiled static libraries:

iOS/MacOS: v1.43.1 (iOS release build has a skybox bug so the debug versions are currently shipped on iOS) Windows - v1.32.4 (Waiting for https://github.com/google/filament/issues/7078 to be resolved before upgrading, not sure exactly when the bug was introduced but it was somewhere between v1.34.2 and v1.40.0) Linux - TODO, previously was v1.24.1 but this needs to be bumped up to parity with the other platforms (ideally v.1.43.1)

Only arm64 libs are provided for iOS/MacOS, only x64 libs are provided for Windows/Linux, all provided for Android.

Building notes:

  • we remove -fno-exceptions from CMakeLists.txt

Project structure:

  • most shared code/headers under ios/src (because I still can't get podspec to build a target with symlinks or relative paths)

  • building on MacOS, we currently just delete the macos/include and macos/src directories and copy from iOS (for same reason), e.g. rm -r ../macos/include && cp -R ../ios/include ../macos && rm -r ../macos/src && cp -R ../ios/src ../macos && pushd macos && pod update && popd && flutter run -d macos

  • Android keeps a separate copy of ALL headers (because it's currently running a different version of Filament, earlier versions have some texture filtering issues) -- can't symlink either? --- IMPORTANT - current version only works on Flutter 3.15.0-15.2.pre / Filament v1.43.1

  • Note also need to specifically build imageio/png/tinyexr

  • if release build, then need to comment out -fno-exceptions

Linux specific

(Fedora 34) Building Filament: env LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/11/ CC=clang CXX=clang++ CXX_FLAGS="-v" LD_FLAGS="-v" FILAMENT_REQUIRES_CXXABI=true ./build.sh -c release

Running example project: export PKG_CONFIG_PATH=/usr/lib/pkgconfig/:/usr/lib64/pkgconfig/ CPLUS_INCLUDE_PATH=/usr/include/gtk-3.0/:/usr/include/pango-1.0/:/usr/include/harfbuzz:/usr/include/cairo/:/usr/include/gdk-pixbuf-2.0/:/usr/include/atk-1.0/

Extract and move both lib/ and include/ to ./ios

Web:

EMCC_CFLAGS="-Wno-missing-field-initializers -Wno-deprecated-literal-operator -fPIC" ./build.sh -c -p webgl -i debug

EMCC_CFLAGS="-I/Users/nickfisher/Documents/filament/libs/utils/include -I/Users/nickfisher/Documents/filament/libs/image/include -I/Users/nickfisher/Documents/filament/libs/math/include -I../../..//third_party/basisu/encoder/ -I../../..//third_party/libpng/ -I../../..//third_party/tinyexr/ -fPIC" emmake make

Running

Android

  • MainActivity.kt must have the following:
class MainActivity: FlutterActivity() {
    override fun getTransparencyMode(): TransparencyMode {
        return TransparencyMode.transparent
    }
}

and theme must have the following in styles.xml

<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

Remember to set the background colour for your Scaffold to transparent!

Materials

  • there is a simple material (unlit/opaque) used for background images. This is created by:
filament/out/release/filament/bin/matc -a opengl -a metal -o materials/image.filamat materials/image.mat
filament/out/release/filament/bin/resgen -c -p image -x ios/include/material/ materials/image.filamat            
Description
No description provided
Readme Apache-2.0 458 MiB
Languages
C++ 48.3%
C 45.1%
Dart 5.8%
Objective-C 0.2%
CMake 0.2%
Other 0.2%