Compare commits

...

998 Commits

Author SHA1 Message Date
Nick Fisher dcc523edff chore(release): publish packages
- thermion_dart@0.2.1-dev.19.0
 - thermion_flutter@0.2.1-dev.19.0
 - thermion_flutter_web@0.2.0+10
 - thermion_flutter_platform_interface@0.2.1-dev.19.0
 - thermion_flutter_ffi@0.2.1-dev.19.0
2024-11-21 10:08:10 +08:00
Nick Fisher 26eba7ae09 fix!: update Makefile & rebuild materials for Vulkan 2024-11-21 10:07:08 +08:00
Nick Fisher 9692c07da9 chore: free flight handler cleanup 2024-11-21 10:03:48 +08:00
Nick Fisher 2860db3fbd feat: use InputAction.ZOOM for scroll wheel in free flight handler 2024-11-21 08:44:36 +08:00
Nick Fisher 1ce5bd3bcf feat: free flight camera improvements 2024-11-19 16:30:35 +08:00
Nick Fisher 9d3f87218e chore(release): publish packages
- thermion_dart@0.2.1-dev.18.0
 - thermion_flutter@0.2.1-dev.18.0
 - thermion_flutter_web@0.2.0+9
 - thermion_flutter_platform_interface@0.2.1-dev.18.0
 - thermion_flutter_ffi@0.2.1-dev.18.0
2024-11-18 22:56:40 +08:00
Nick Fisher 505b4bb156 fix: fix windows import header 2024-11-18 22:55:25 +08:00
Nick Fisher 25320f45af chore: fix spelling 2024-11-15 22:58:04 +08:00
Nick Fisher 0b9f3160d9 feat: add MaterialInstance.setDepthFunc 2024-11-15 22:56:40 +08:00
Nick Fisher bb27f40cb2 chore: add TMaterialInstance to ffigen.yaml 2024-11-15 22:55:16 +08:00
Nick Fisher 9853d6b721 chore: remove uvScale parameter from SceneManager and add some explicit logging 2024-11-15 22:24:30 +08:00
Nick Fisher 52f041afba chore: move TMaterialInstance FFI methods to own file/header 2024-11-15 22:24:07 +08:00
Nick Fisher 646814126f chore: test cleanup 2024-11-15 22:23:28 +08:00
Nick Fisher 05cb4325da chore: rebuild materials 2024-11-15 22:23:07 +08:00
Nick Fisher e8b3468a3a chore: remove uvScale from unlit.mat 2024-11-15 22:22:49 +08:00
Nick Fisher 741607b78b chore: add checks to Makefile for FILAMENT_PATH 2024-11-15 22:22:31 +08:00
Nick Fisher 70414bb83c chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.17
 - thermion_flutter@0.2.1-dev.17
 - thermion_flutter_web@0.2.0+8
 - thermion_flutter_platform_interface@0.2.1-dev.17
 - thermion_flutter_ffi@0.2.1-dev.17
2024-11-15 17:59:12 +08:00
Nick Fisher 436873a455 successfully creating D3D texture with D3D11_RESOURCE_MISC_SHARED_NTHANDLE;
successfully allocating with VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT

working copying vulkan texture

successfully passing D3D texture back to Flutter

chore: Dart/Windows sample project: remove unnnecessary InvalidateRect from update()

chore: Dart/Windows sample project: add generated bindings

successfully blitting from Vulkan swapchain to D3D texture

working Vulkan texture integration with Flutter

refactor to allow disposal of resources in destructors

handle destroyTexture correctly

correctly implement surface resizing/destruction

move Windows engine to Vulkan backend and flush after creating swapchain

add vulkan + vkshaders to Windows libs

update materials with Vulkan

move Vulkan implementation to thermion_Dart

remove extras folder

thermion_flutter plugin updates

update build hook to copy .lib file to output directory and use -vulkan lib zip file

thermion_flutter cleanup

reinstate stereoscopic on Windows

add dxgi and d3d11.lib to windows header pragma

update cli_windows sample project

copy filament/vulkan headers to output directory. This was originally added to facilitate linking on Windows (where thermion_flutter_plugin.cpp needs the Vulkan-related headers), but this doesn't actually solve the problem because there's no way that I've found to get the directory structure correct in the Dart native_assets build directory unless you explicitly address each inidivual file. The current approach is therefore to just keep a permanent copy of the headers in the thermion_filament directory (meaning these will need to be updated manually if the Filament version changes). However, I decided to keep the changes to build.dart because it doesn't have much negative impact and may be helpful in future.

disable stereoscopic on Windows and disable handle use after free checks

use filament headers for thermion_flutter

throw Exception for MSAA on Windows (note that passing msaa:true for setAntiAliasing doesn't actually set MSAA on other platforms, but at least it won't cause the engine to crash)

change header include path for Windows/Vulkan

change header include path for Windows/Vulkan

add filament/vulkan headers for flutter (Windows)

ensure destroyTexture platform methods accept an integer rather than a list

handle Android/Windows swapchain creation separately
2024-11-11 12:49:40 +08:00
Nick Fisher b59cadc061 add first pass vulkan implementation 2024-11-11 12:49:40 +08:00
Nick Fisher bdcbd90ec6 split D3D/GLES texture creation 2024-11-11 12:49:40 +08:00
Nick Fisher f3e96fe94a remove external/internal D3D textures 2024-11-11 12:49:40 +08:00
Nick Fisher ef97f0e6c2 refactor Windows rendering into standalone DLL 2024-11-11 12:49:40 +08:00
Nick Fisher 8976eb9621 update extras/Windows include path 2024-11-11 12:49:40 +08:00
Nick Fisher e2cfe9247e improvements to BackingWindow (?) 2024-11-11 12:49:40 +08:00
Nick Fisher 6472670ec3 add createRenderTargetRenderThread 2024-11-11 12:49:40 +08:00
Nick Fisher 0eb81114dd expose GetSharedContext method on FlutterRenderContext 2024-11-11 12:49:40 +08:00
Nick Fisher 31c5ef41eb use texture backed platform on Windows 2024-11-11 12:49:40 +08:00
Nick Fisher 73470fa504 refactor WGLContext for easier legibility 2024-11-11 12:49:40 +08:00
Nick Fisher 14b815e009 remove unnecessary _context property from FilamentViewer 2024-11-11 12:49:40 +08:00
Nick Fisher 5ae028f1e9 print default gpu in cli_windows thermion_window 2024-11-11 12:49:40 +08:00
Nick Fisher 859a514bc5 chore: remove DLL from cli_windows project 2024-11-11 12:49:40 +08:00
Nick Fisher 4d97126ef6 chore: update cli_windows project 2024-11-11 12:49:40 +08:00
Nick Fisher cc34cb20bd Merge branch 'develop' of https://github.com/nmfisher/thermion into develop 2024-11-02 16:32:06 +08:00
Nick Fisher 9c555c9ec0 chore: update cli_windows project 2024-11-02 16:29:36 +08:00
Nick Fisher 9537f75bc2 Update dart.yml 2024-11-02 16:41:14 +11:00
Nick Fisher 30e0012da6 Update dart.yml 2024-11-02 16:31:38 +11:00
Nick Fisher 1892235d5c Update dart.yml 2024-11-02 16:11:51 +11:00
Nick Fisher 82bd84b60d Update dart.yml 2024-11-02 16:07:04 +11:00
Nick Fisher 814adf8567 Update dart.yml 2024-11-02 16:01:09 +11:00
Nick Fisher 671880b405 chore: move windows extras to standalone cli_windows example 2024-11-02 12:55:56 +08:00
Nick Fisher 6ce2e22fac Update dart.yml 2024-11-02 15:54:05 +11:00
Nick Fisher 51d3dae1db Update dart.yml 2024-11-02 15:49:39 +11:00
Nick Fisher a33a18da42 Merge branch 'develop' of https://github.com/nmfisher/thermion into develop 2024-11-02 13:24:18 +11:00
Nick Fisher 6ff04fb76a feat: add Dart methods for getRenderableBoundingBox, setParameterInt and setParameterFloat4 2024-11-02 10:23:36 +08:00
Nick Fisher 124938dbc2 temporarily disable UnprojectTexture 2024-11-02 10:23:36 +08:00
Nick Fisher 902f67e97d expose setParameterInt/setParameterFloat4, rename to getScreenSpaceBoundingBox, and expose method for getting renderable bounding box 2024-11-02 10:23:36 +08:00
Nick Fisher 08c02c1590 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.16
 - thermion_flutter@0.2.1-dev.16
 - thermion_flutter_web@0.2.0+7
 - thermion_flutter_platform_interface@0.2.1-dev.16
 - thermion_flutter_ffi@0.2.1-dev.16
2024-11-02 10:23:36 +08:00
Nick Fisher 4650ae1295 feat: Rename Gizmo material to UnlitFixedSize, and expose methods for using this material on other entities. Also exposes new methods for setting single float parameters. 2024-11-02 10:23:36 +08:00
Nick Fisher c77ede9109 doc: fix links in README 2024-11-02 10:23:36 +08:00
Nick Fisher 0f56cbe7e7 doc: README 2024-11-02 10:23:36 +08:00
Nick Fisher 708e90117d doc: update README 2024-11-02 10:23:36 +08:00
Nick Fisher 33e5350605 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.15
 - thermion_flutter@0.2.1-dev.15
 - thermion_flutter_web@0.2.0+6
 - thermion_flutter_platform_interface@0.2.1-dev.15
 - thermion_flutter_ffi@0.2.1-dev.15
2024-11-02 10:23:35 +08:00
Nick Fisher d1924cfdf4 chore: add logging to ThermionTextureWidget 2024-11-02 10:23:35 +08:00
Nick Fisher dff214259a fix: multiply coordinates by pixelRatio for scale events 2024-11-02 10:23:35 +08:00
Nick Fisher d25edfc097 fix: remove superfluous ceil() calls for picking coordinates 2024-11-02 10:23:35 +08:00
Nick Fisher 8c2b8a6cba feat: expose zoomSensitivity argument for flight input handler 2024-11-02 10:23:35 +08:00
Nick Fisher eccbde4ebb chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.14
 - thermion_flutter@0.2.1-dev.14
 - thermion_flutter_platform_interface@0.2.1-dev.14
 - thermion_flutter_ffi@0.2.1-dev.14
 - thermion_flutter_web@0.2.0+5
2024-11-02 10:23:35 +08:00
Nick Fisher 27e1456b9f chore: add Dart/windows-only example project 2024-11-02 13:10:36 +11:00
Nick Fisher 9c6b2a92ac fix: replace assets symlink for quickstart project 2024-10-30 12:03:48 +08:00
Nick Fisher 1d6cb9cad2 fix: replace symlinks for camera_manipulation project 2024-10-30 15:01:15 +11:00
Nick Fisher d31e6c8183 feat: sanitize file paths in build.dart for Windows compatibility 2024-10-30 14:35:49 +11:00
Nick Fisher cf1a50c2e5 chore: use dependency_overrides for camera_manipulation project 2024-10-30 14:28:06 +11:00
Nick Fisher 7c15125a97 fix: reduce size of pick functor for compatibility with armeabi-v7a 2024-10-30 10:47:39 +08:00
Nick Fisher b7c14ebbda chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.13
 - thermion_flutter_web@0.2.0+4
 - thermion_flutter@0.2.1-dev.13
 - thermion_flutter_ffi@0.2.1-dev.13
 - thermion_flutter_platform_interface@0.2.1-dev.13
2024-10-30 10:47:39 +08:00
Nick Fisher 2969321b8c chore: test cleanup 2024-10-30 10:47:39 +08:00
Nick Fisher 036369a8dc feat: pass through fragment coordinates for picking 2024-10-30 10:47:39 +08:00
Nick Fisher 7be2b43c35 chore: remove sandbox from macos quickstart project 2024-10-30 10:47:39 +08:00
Nick Fisher e5fe6d95e9 test: add perspective projection test 2024-10-30 10:47:39 +08:00
Nick Fisher a8480a9eee Update dart.yml 2024-10-25 17:26:07 +08:00
Nick Fisher 1a4f53a3f9 Update dart.yml 2024-10-25 17:19:26 +08:00
Nick Fisher 11c374c25d Update dart.yml 2024-10-25 17:17:11 +08:00
Nick Fisher 618d633602 Update dart.yml 2024-10-25 17:16:02 +08:00
Nick Fisher 3effb837b7 chore: dummy tests 2024-10-25 16:59:27 +08:00
Nick Fisher 68d363388d chore: dummy tests 2024-10-25 14:49:11 +08:00
Nick Fisher 10fd78276c chore: dummy tests 2024-10-25 14:22:28 +08:00
Nick Fisher 4d778326c6 chore: dummy test for GitHub actions 2024-10-25 14:17:14 +08:00
Nick Fisher e2d381b6b7 chore: rename test 2024-10-25 13:57:21 +08:00
Nick Fisher 4fc819e9b9 Update dart.yml 2024-10-25 13:51:39 +08:00
Nick Fisher f0feb8aeb1 Merge branch 'develop' of https://github.com/nmfisher/thermion into develop 2024-10-25 16:45:58 +11:00
Nick Fisher 85013743fe chore: (flutter) (example) use dependency overrides for local thermion packages. We want to build this application for CI before releasing, so we need to be testing the packages that will be built 2024-10-25 16:45:44 +11:00
Nick Fisher e5a1585c25 chore: (windows) remove unused libs 2024-10-25 16:44:42 +11:00
Nick Fisher dd8bf920a5 chore: update dart.yml 2024-10-25 12:31:29 +08:00
Nick Fisher b70c144784 chore: update dart.yml 2024-10-25 12:26:39 +08:00
Nick Fisher d9849717de chore: cleanup tests 2024-10-25 12:25:47 +08:00
Nick Fisher ec4fd5fd44 Update dart.yml 2024-10-25 12:20:10 +08:00
Nick Fisher 52b83d933d Update dart.yml 2024-10-25 12:04:11 +08:00
Nick Fisher f1f2a237bb chore: remove combined integration_test 2024-10-25 12:01:01 +08:00
Nick Fisher 4a90031054 Update dart.yml 2024-10-25 11:55:34 +08:00
Nick Fisher cf34b7867d Update dart.yml 2024-10-25 11:51:21 +08:00
Nick Fisher e49330c34a Update dart.yml 2024-10-25 11:45:16 +08:00
Nick Fisher 53ff1de23c Merge branch 'master' into develop 2024-10-25 11:42:00 +08:00
Nick Fisher 7165b13d48 chore: clean up thermion_dart test directory for GitHub actions 2024-10-25 11:41:45 +08:00
Nick Fisher f330721c0c Update dart.yml 2024-10-25 11:40:38 +08:00
Nick Fisher 01fe469a28 Update dart.yml 2024-10-25 11:36:59 +08:00
Nick Fisher e716b55b5c Update dart.yml 2024-10-25 11:32:36 +08:00
Nick Fisher e7ebf6e8b2 Update dart.yml 2024-10-25 11:31:00 +08:00
Nick Fisher 16e34bf76a Update dart.yml 2024-10-25 11:29:36 +08:00
Nick Fisher 3dce7a61a8 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.12
 - thermion_flutter@0.2.1-dev.12
 - thermion_flutter_web@0.2.0+3
 - thermion_flutter_platform_interface@0.2.1-dev.12
 - thermion_flutter_ffi@0.2.1-dev.12
2024-10-25 11:25:11 +08:00
Nick Fisher 5dac06d335 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.12
 - thermion_flutter_web@0.2.0+2
 - thermion_flutter_platform_interface@0.2.1-dev.11
 - thermion_flutter_ffi@0.2.1-dev.11
 - thermion_flutter@0.2.1-dev.11
2024-10-25 11:24:32 +08:00
Nick Fisher a8d21fe316 Merge pull request #72 from nmfisher/develop
Gesture handling improvements & build fixes
2024-10-25 14:24:20 +11:00
Nick Fisher d784efa44a Update dart.yml 2024-10-25 11:22:49 +08:00
Nick Fisher b2a4955d54 Update dart.yml 2024-10-25 11:19:50 +08:00
Nick Fisher 02d7a0acfd Update dart.yml 2024-10-25 14:16:29 +11:00
Nick Fisher ee5c08f795 fix: (flutter) (windows) remove deleted source file from Windows CMakeLists 2024-10-25 14:16:22 +11:00
Nick Fisher d7debf981c Merge branch 'master' into develop 2024-10-25 14:15:51 +11:00
Nick Fisher 2b4a73f355 feat: add SCALE2_MOVE InputType 2024-10-25 10:37:57 +08:00
Nick Fisher 06b20ec6fc fix: properly pass through loadResourcesAsync flag for loadGlbFromBuffer 2024-10-25 10:37:34 +08:00
Nick Fisher a3b6d60e16 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.11
 - thermion_flutter@0.2.1-dev.10
 - thermion_flutter_web@0.2.0+1
 - thermion_flutter_platform_interface@0.2.1-dev.10
 - thermion_flutter_ffi@0.2.1-dev.10
2024-10-24 12:59:43 +08:00
Nick Fisher 37608a8fbe fix: LFS materials 2024-10-24 12:58:13 +08:00
Nick Fisher 2713286ca5 Merge pull request #71 from nmfisher/develop
Allow finer control over input handling
2024-10-24 15:56:11 +11:00
Nick Fisher 6f648702e9 feat: add SCALE2_ROTATE to InputHandler 2024-10-24 12:52:14 +08:00
Nick Fisher 5e17e0c6d1 feat!: expose velocity, rotation and timestamp for scale events in listener. accept rotationSensitivity/zoomSensitivity for FixedOrbitRotateInputHandlerDelegate 2024-10-24 10:07:32 +08:00
Nick Fisher 0fcc44bff8 doc: update docstrings for setLayerVisibilty and setVisibilityLayer 2024-10-23 15:48:34 +08:00
Nick Fisher f65324e555 chore: cleanup LFS 2024-10-23 15:17:25 +08:00
Nick Fisher 1ba4b2a5be chore: merge master 2024-10-23 15:16:06 +08:00
Nick Fisher de4733edf1 chore: remove superseded LFS files 2024-10-23 15:12:46 +08:00
Nick Fisher 75936c75d0 doc: fix doc index 2024-10-23 15:04:26 +08:00
Nick Fisher 6f6ee807cf chore: update published dependency for sample project 2024-10-23 14:59:31 +08:00
Nick Fisher 7a1ce5c281 docs: update doc index 2024-10-23 14:59:09 +08:00
Nick Fisher d4a3985a65 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.10
 - thermion_flutter@0.2.1-dev.9
 - thermion_flutter_ffi@0.2.1-dev.9
 - thermion_flutter_platform_interface@0.2.1-dev.9
 - thermion_flutter_web@0.2.0
2024-10-23 14:46:40 +08:00
Nick Fisher d73e723003 feat: set SCALE2:InputAction.ZOOM by default 2024-10-23 14:45:48 +08:00
Nick Fisher 02c3876131 doc: update camera_manipulation example project and docs 2024-10-23 14:45:48 +08:00
Nick Fisher 641ed45b59 doc: add camera_manipulation example project 2024-10-23 14:45:48 +08:00
Nick Fisher aa7306fc4c feat: track zoom delta for DelegateInputHandler 2024-10-23 14:45:48 +08:00
Nick Fisher d8296f85bf feat: set InputType.SCALE1 to ROTATE by default for DelegateInputHandler.fixedOrbit 2024-10-23 14:45:47 +08:00
Nick Fisher b96dda26c0 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.9
 - thermion_flutter@0.2.1-dev.8
 - thermion_flutter_ffi@0.2.1-dev.8
 - thermion_flutter_web@0.1.1
 - thermion_flutter_platform_interface@0.2.1-dev.8
2024-10-23 14:45:47 +08:00
Nick Fisher 3ba16e019c chore: add quickstart .metadata 2024-10-23 14:45:47 +08:00
Nick Fisher 12f97cf78f chore: test cleanup 2024-10-23 14:45:47 +08:00
Nick Fisher 219dfa801f chore: test cleanup 2024-10-23 14:45:47 +08:00
Nick Fisher 1826c23692 chore: test cleanup 2024-10-23 14:45:47 +08:00
Nick Fisher b5dd62a614 doc: add BUILDING.md with Windows instructions 2024-10-23 14:45:47 +08:00
Nick Fisher 59e7d7c7c3 chore!: View.getCamera returns Future<Camera> 2024-10-23 14:45:47 +08:00
Nick Fisher e66cb35899 fix:move createUnlitMaterialInstance and createGeometry to render thread 2024-10-23 14:45:47 +08:00
Nick Fisher d9aa90350c feat: produce debug symbols on Windows 2024-10-23 14:45:47 +08:00
Nick Fisher 4a9d28e59d fix:move createUnlitMaterialInstance and createGeometry to render thread 2024-10-23 14:45:47 +08:00
Nick Fisher 636e1961dd fix:move createUnlitMaterialInstance and createGeometry to render thread 2024-10-23 14:45:47 +08:00
Nick Fisher ff27652fb6 chore: rename SceneManager* methods 2024-10-23 14:45:47 +08:00
Nick Fisher 3b6285cff8 fix: dont calculate surface orientation for non-triangle geometry 2024-10-23 14:45:47 +08:00
Nick Fisher 0d865977b4 chore: test cleanup 2024-10-23 14:45:47 +08:00
Nick Fisher a6872f5a77 cleanup tests 2024-10-23 14:45:46 +08:00
Nick Fisher d26d786f67 fix!: (windows) add flushAndWait call to capture() to prevent stalling on Windows; use provided buffer as pixelBuffer rather than duplicate allocation 2024-10-23 14:45:46 +08:00
Nick Fisher 71aa4be3b1 fix!: add meshoptimizer lib on Windows 2024-10-23 14:45:46 +08:00
Nick Fisher 70507a5919 fix!: Dart-only release mode builds on Window 2024-10-23 14:45:46 +08:00
Nick Fisher b99886095b fix: fix all Windows warnings so apps will compile with /WX 2024-10-23 14:45:46 +08:00
Nick Fisher 8dabe08792 feat: (flutter) (windows) add DestroyRenderingSurface method 2024-10-23 14:45:46 +08:00
Nick Fisher de4fd3b8d0 feat: (flutter) (windows) add DestroyRenderingSurface method 2024-10-23 14:45:46 +08:00
Nick Fisher 7778afe3ec feat: (flutter) (windows) add DestroyRenderingSurface method 2024-10-23 14:45:46 +08:00
Nick Fisher f817406dbc feat: (flutter) (windows) add Destroy() to BackingWindow 2024-10-23 14:45:46 +08:00
Nick Fisher a16e3fcd3c chore: cleanup thermion_flutter pubspec.yaml 2024-10-23 14:45:46 +08:00
Nick Fisher 2bbaff5f15 chore: cleanup quickstart pubspec.yaml 2024-10-23 14:45:46 +08:00
Nick Fisher 18023f1606 chore: cleanup thermion_flutter_ffi pubspec 2024-10-23 14:45:46 +08:00
Nick Fisher 707793c6b2 chore: rearrange thermion_flutter_ffi src dir 2024-10-23 14:45:44 +08:00
Nick Fisher f080720712 chore: update quickstart for Windows 2024-10-23 14:45:23 +08:00
Nick Fisher cf7d8e45f4 doc: add camera_manipulation 2024-10-23 14:45:23 +08:00
Nick Fisher a5c3d7b215 feat: simplify FixedOrbitCameraRotationDelegate 2024-10-23 14:45:23 +08:00
Nick Fisher 68053b0f5a rename gestureHandler to inputHandler 2024-10-23 14:45:23 +08:00
Nick Fisher 39762c8132 chore: update quickstart 2024-10-23 14:45:23 +08:00
Nick Fisher e27a8ee601 doc: update README 2024-10-23 14:45:23 +08:00
Nick Fisher 0a10dc426b fix: on resize, destroy swapchain if destroySwapChainOnResize is true 2024-10-23 14:45:23 +08:00
Nick Fisher 53ee466fb6 chore: update quickstart android project files 2024-10-23 14:45:23 +08:00
Nick Fisher 33acc73ab7 chore: add flutter quickstart example, assets and update README 2024-10-23 14:45:23 +08:00
Nick Fisher dbbb4d7123 fix: add listener in ThermionFlutterTextureBackedPlatform to unset viewer on dispose 2024-10-23 14:45:22 +08:00
Nick Fisher de39af13d0 fix: add listener in ThermionFlutterMethodChannelInterface to unset viewer on dispose 2024-10-23 14:45:22 +08:00
Nick Fisher 9244009350 fix: clean up destruction logic for FlutterPlatformTexture 2024-10-23 14:45:22 +08:00
Nick Fisher bb10a75f0e fix: use internal Set for determining first ThermionTextureWidget to call requestFrame and cleanup destruction logic 2024-10-23 14:45:22 +08:00
Nick Fisher 6cf4efdf31 chore: await future in ThermionFlutterPlugin 2024-10-23 14:45:22 +08:00
Nick Fisher 83fe74253f chore: remove destroy() methods from FFIRenderTarget/FFISwapChain, implement destroyRenderTarget/destroySwapChain and clean up ThermionViewerFFI disposal 2024-10-23 14:45:22 +08:00
Nick Fisher 4be95072fd chore: update stubbed methods 2024-10-23 14:45:22 +08:00
Nick Fisher 9a8c245e31 chore: add destroySwapChain/destroyRenderTarget methods to Dart vieer and allow setting null renderTarget 2024-10-23 14:45:22 +08:00
Nick Fisher f2e0f32054 chore: remove destroy() methods from RenderTarget and SwapChain (these need to be managed by Viewer to handle instances where the viewer itself has been disposed 2024-10-23 14:45:22 +08:00
Nick Fisher a6c9ee60a9 fix: set View render target to nullptr if Dart renderTarget is null 2024-10-23 14:45:21 +08:00
Nick Fisher 9cef768dfc docs: add quickstart to README 2024-10-23 14:45:21 +08:00
Nick Fisher 75d5fb2f8d docs: remove Windows native_toolchain_c fixes from docs 2024-10-23 14:45:21 +08:00
Nick Fisher e417756971 fix: set render target to null for each view and then destroy render targets when viewer disposed 2024-10-23 14:45:21 +08:00
Nick Fisher 9d961af8ed chore: rename Viewer_destroyOnRenderThread method and cleanup unused SwapChain parameter in render threa 2024-10-23 14:45:21 +08:00
Nick Fisher ac25475155 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.8
 - thermion_flutter_web@0.1.0+9
 - thermion_flutter@0.2.1-dev.7
 - thermion_flutter_platform_interface@0.2.1-dev.7
 - thermion_flutter_ffi@0.2.1-dev.7
2024-10-23 14:45:21 +08:00
Nick Fisher 983228a8ac fix: move ThermionWin32.h to include 2024-10-23 14:45:21 +08:00
Nick Fisher 6e627d8f9f chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.7
 - thermion_flutter_web@0.1.0+8
 - thermion_flutter@0.2.1-dev.6
 - thermion_flutter_platform_interface@0.2.1-dev.6
 - thermion_flutter_ffi@0.2.1-dev.6
2024-10-23 14:45:21 +08:00
Nick Fisher dd82d5d3e7 Windows embedder fixes 2024-10-23 14:45:21 +08:00
Nick Fisher df319f007f cleanup 2024-10-23 14:45:21 +08:00
Nick Fisher 880551aaa3 cleanup 2024-10-23 14:45:21 +08:00
Nick Fisher b8c76a16cc (flutter) set view renderable on Windows 2024-10-23 14:45:21 +08:00
Nick Fisher a52f835288 move standalone Windows file to extras 2024-10-23 14:45:21 +08:00
Nick Fisher bd9295bc90 cleanup 2024-10-23 14:45:21 +08:00
Nick Fisher a43ee8fa3a don't call endFrame() if no views were rendered 2024-10-23 14:45:21 +08:00
Nick Fisher d8a42a4136 add files to run standalone Windows 2024-10-23 14:45:21 +08:00
Nick Fisher e2d11014d0 fix Windows build.dart to avoid native_assets fork; add implementations for ThermionFlutterWindows 2024-10-23 14:45:20 +08:00
Nick Fisher 6d1e56caac mobile gesture handler 2024-10-23 14:45:20 +08:00
Nick Fisher c322c6aff9 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.6
 - thermion_flutter_web@0.1.0+7
 - thermion_flutter_platform_interface@0.2.1-dev.5
 - thermion_flutter@0.2.1-dev.5
 - thermion_flutter_ffi@0.2.1-dev.5
2024-10-23 14:45:20 +08:00
Nick Fisher 7631aec796 add native_assets_cli to dependencies 2024-10-23 14:45:20 +08:00
Nick Fisher 033e863750 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.5
 - thermion_flutter_platform_interface@0.2.1-dev.4
 - thermion_flutter_web@0.1.0+6
 - thermion_flutter@0.2.1-dev.4
 - thermion_flutter_ffi@0.2.1-dev.4
2024-10-23 14:45:20 +08:00
Nick Fisher 05b96c6972 add animation tests 2024-10-23 14:45:20 +08:00
Nick Fisher 9fc26a2078 update cube test asset with morph targets 2024-10-23 14:45:20 +08:00
Nick Fisher c894925db1 update cube test asset with morph targets 2024-10-23 14:45:20 +08:00
Nick Fisher b0da2f63a8 update tests 2024-10-23 14:45:20 +08:00
Nick Fisher 1c05793f03 bump animation_tools_dart dependency 2024-10-23 14:45:20 +08:00
Nick Fisher bd123ba2f1 bump animation_tools_dart dependency 2024-10-23 14:45:20 +08:00
Nick Fisher 4aad34ce93 add pick to view tests 2024-10-23 14:45:20 +08:00
Nick Fisher b2bd8ee66f add fall-through for InputAction.ZOOM for Third Person camera delegate 2024-10-23 14:45:20 +08:00
Nick Fisher 018434ea57 move zoom delta to InputAction.ZOOM for FreeFlight rotation delegate 2024-10-23 14:45:20 +08:00
Nick Fisher 71c230552d move zoom delta to InputAction.ZOOM for FixedOrbit rotation delegate 2024-10-23 14:45:20 +08:00
Nick Fisher 2a4b440db2 pass through sensitivity options in DelegateGestureHandler and implement cameraUpdated 2024-10-23 14:45:20 +08:00
Nick Fisher 22eeb492b0 rearrange package folders 2024-10-23 14:45:19 +08:00
Nick Fisher 19a1bc0f1d add stubbed methods 2024-10-23 14:45:19 +08:00
Nick Fisher 58010dafde add InputAction.ZOOM 2024-10-23 14:45:19 +08:00
Nick Fisher 6e64cc3617 add DefaultPickDelegate 2024-10-23 14:45:19 +08:00
Nick Fisher 056ba55f1c use condition_variable for render thread requestFrame as well as tasks 2024-10-23 14:45:19 +08:00
Nick Fisher abd1fdefca rearrange utils dir 2024-10-23 14:45:19 +08:00
Nick Fisher 1fc3807fa8 add Axis class and rearrange utils dir 2024-10-23 14:45:19 +08:00
Nick Fisher ae91e09943 add option for async loading glTF resources 2024-10-23 14:45:19 +08:00
Nick Fisher 5087cc48f5 return View when picking, use uint32_t for morphIndices 2024-10-23 14:45:19 +08:00
Nick Fisher f7da303d29 set bloom enabled by default, but 0 strength 2024-10-23 14:45:19 +08:00
Nick Fisher f90bc7b165 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.4
 - thermion_flutter_web@0.1.0+5
 - thermion_flutter@0.2.1-dev.3
 - thermion_flutter_platform_interface@0.2.1-dev.3
 - thermion_flutter_ffi@0.2.1-dev.3
2024-10-23 14:45:19 +08:00
Nick Fisher 9a1354d287 chore: make pub.dev happy 2024-10-23 14:45:19 +08:00
Nick Fisher b3721122f0 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.3
 - thermion_flutter_web@0.1.0+4
 - thermion_flutter@0.2.1-dev.2
 - thermion_flutter_platform_interface@0.2.1-dev.2
 - thermion_flutter_ffi@0.2.1-dev.2
2024-10-23 14:45:19 +08:00
Nick Fisher 3c9ee7f82f chore: make pub.dev happy 2024-10-23 14:45:19 +08:00
Nick Fisher 6ec57d02fd chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.2
 - thermion_flutter_web@0.1.0+3
 - thermion_flutter_ffi@0.2.1-dev.1
 - thermion_flutter@0.2.1-dev.1
 - thermion_flutter_platform_interface@0.2.1-dev.1
2024-10-23 14:45:19 +08:00
Nick Fisher 99f0bb8468 chore: make pub.dev happy 2024-10-23 14:45:18 +08:00
Nick Fisher a6738a8493 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.1
 - thermion_flutter_web@0.1.0+2
 - thermion_flutter@0.2.1-dev.0
 - thermion_flutter_platform_interface@0.2.1-dev.0
 - thermion_flutter_ffi@0.2.1-dev.0
2024-10-23 14:45:18 +08:00
Nick Fisher 17d6ca9459 chore: move swift bindings to test folder to make pub.dev happy 2024-10-23 14:45:18 +08:00
Nick Fisher 11fa485440 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.0
 - thermion_flutter@0.2.1-dev.0.0.0
 - thermion_flutter_ffi@0.2.1-dev.0.0.0
 - thermion_flutter_platform_interface@0.2.1-dev.0.0.0
 - thermion_flutter_web@0.1.0+1
2024-10-23 14:45:18 +08:00
Nick Fisher 3e67b64b90 chore(release): publish packages
- thermion_dart@0.2.0
 - thermion_flutter@0.2.0
 - thermion_flutter_ffi@0.2.0
 - thermion_flutter_platform_interface@0.2.0
 - thermion_flutter_web@0.1.0
2024-10-23 14:45:18 +08:00
Nick Fisher 021180dbe3 chore(release): publish packages
- thermion_dart@0.2.0-dev.8.0.0
 - thermion_flutter@0.2.0-dev.8.0.0
 - thermion_flutter_ffi@0.2.0-dev.8.0.0
 - thermion_flutter_platform_interface@0.2.0-dev.8.0.0
 - thermion_flutter_web@0.1.0-dev.8.0.0
2024-10-23 14:45:18 +08:00
Nick Fisher 4f012662e6 feat: camera and resizing improvements 2024-10-23 14:45:18 +08:00
Nick Fisher 4adcf7bca5 chore: remove EMSCRIPTEN ifdefs in *RenderThread methods (no longer used) 2024-10-23 14:45:18 +08:00
Nick Fisher 8ddaf24a94 chore: cleanup 2024-10-23 14:45:18 +08:00
Nick Fisher 50ed0bdfda feat: support multiple ThermionWidget on Android 2024-10-23 14:45:18 +08:00
Nick Fisher e1efd5e4e0 feat: use imported texture on iOS 2024-10-23 14:45:18 +08:00
Nick Fisher fbd54a2a09 feat: working implementation of multiple widgets on macos 2024-10-23 14:45:14 +08:00
Nick Fisher 22020d8607 refactor: continual refactor to support multiple render targets 2024-10-23 14:45:04 +08:00
Nick Fisher 767aa88930 chore: upgrade Swift interop gen 2024-10-23 14:45:04 +08:00
Nick Fisher 3596723d3d chore: refactoring and cleanup for Gizmo 2024-10-23 14:45:04 +08:00
Nick Fisher 03ab646713 feat: more work on multiple views/swapchains 2024-10-23 14:45:04 +08:00
Nick Fisher a5ca6132f0 refactor!: refactor to support multiple Views/Render Targets 2024-10-23 14:45:04 +08:00
Nick Fisher ef5b12af4f feat!: big refactor to support multiple swapchains 2024-10-23 14:45:04 +08:00
Nick Fisher 11f668e163 chore: don't keep superfluous handle to rtDepth and rtColor 2024-10-23 14:45:04 +08:00
Nick Fisher bb303f98d2 chore: cleanup 2024-10-23 14:45:04 +08:00
Nick Fisher 56061e6471 chore: update bindings 2024-10-23 14:45:04 +08:00
Nick Fisher faabe2f2a2 feat: add rendering check to ThermionWidget ticker 2024-10-23 14:45:04 +08:00
Nick Fisher 6dd09a12da fix!: replace queuePosition/Rotation with queueTransforms 2024-10-23 14:45:04 +08:00
Nick Fisher 68ccd983a0 fix!: replace queuePosition/Rotation with queueTransforms 2024-10-23 14:45:04 +08:00
Nick Fisher 89cdf5e52d feat: add setParameterFloat2 method 2024-10-23 14:45:04 +08:00
Nick Fisher dc27396c6f feat: add setParameterFloat2 method 2024-10-23 14:45:03 +08:00
Nick Fisher e2eb1137d2 refactor!: remove RenderThread methods no longer needed 2024-10-23 14:45:03 +08:00
Nick Fisher b5d47ae2a5 fix!: replace queuePosition/Rotation with queueTransforms 2024-10-23 14:45:03 +08:00
Nick Fisher c2b1d8660e fix!: replace queuePosition/Rotation with queueTransforms 2024-10-23 14:45:03 +08:00
Nick Fisher b2024d38b5 feat: add uvScale to unlit material 2024-10-23 14:45:03 +08:00
Nick Fisher 589201ad39 feat: add ThirdPersonCameraDelegate 2024-10-23 14:45:03 +08:00
Nick Fisher 34c0d87703 feat!: set baseColorIndex to -1 by default in unlit materialss 2024-10-23 14:45:03 +08:00
Nick Fisher f71078e112 chore: update tests 2024-10-23 14:45:03 +08:00
Nick Fisher fb8c82d838 add ThirdPersonCameraDelegate 2024-10-23 14:45:03 +08:00
Nick Fisher 41432a07ed chore: getter for native camera view matrix 2024-10-23 14:45:03 +08:00
Nick Fisher 2408104bd0 more camera work 2024-10-23 14:45:03 +08:00
Nick Fisher d1cd68cda6 more camera work 2024-10-23 14:45:03 +08:00
Nick Fisher 3dffaddfe8 chore: rearrange library/export structure 2024-10-23 14:45:03 +08:00
Nick Fisher f023810859 chore: camera transform tests 2024-10-23 14:45:03 +08:00
Nick Fisher 256d5d4eb1 feat: set camera model matrix directly 2024-10-23 14:45:03 +08:00
Nick Fisher 7edbf8fc8d chore: rearrange library dirs, gesture handler improvements 2024-10-23 14:45:02 +08:00
Nick Fisher 2a20075797 chore: import cleanup 2024-10-23 14:45:02 +08:00
Nick Fisher c91cbeba1a chore: rearrange flutter gesture/widget directory structure 2024-10-23 14:45:02 +08:00
Nick Fisher 9da4710d54 chore: rearrange flutter gesture/widget directory structure 2024-10-23 14:45:02 +08:00
Nick Fisher 2d1ee3bbbe chore: rename thermion_flutter src dir 2024-10-23 14:45:02 +08:00
Nick Fisher 758704d464 renaming/refactoring and allow creating new cameras 2024-10-23 14:45:02 +08:00
Nick Fisher 9639caf019 feat: expose more camera methods 2024-10-23 14:45:02 +08:00
Nick Fisher 0d45365ba3 chore(release): publish packages
- thermion_dart@0.2.0-dev.7.0
 - thermion_flutter_web@0.1.0-dev.7.0
 - thermion_flutter@0.2.0-dev.7.0
 - thermion_flutter_platform_interface@0.2.0-dev.7.0
 - thermion_flutter_ffi@0.2.0-dev.7.0
2024-10-23 14:45:02 +08:00
Nick Fisher c19a1b3154 fix!: fix min SDK for thermion_dart 2024-10-23 14:45:02 +08:00
Nick Fisher ac45bd2963 chore(release): publish packages
- thermion_dart@0.2.0-dev.6.0
 - thermion_flutter_web@0.1.0-dev.6.0
 - thermion_flutter@0.2.0-dev.6.0
 - thermion_flutter_platform_interface@0.2.0-dev.6.0
 - thermion_flutter_ffi@0.2.0-dev.6.0
2024-10-23 14:45:02 +08:00
Nick Fisher f2d94878da chore!: cleanup deleted export 2024-10-23 14:45:02 +08:00
Nick Fisher 532eadf434 chore(release): publish packages
- thermion_flutter@0.2.0-dev.6.0
2024-10-23 14:45:02 +08:00
Nick Fisher 673842acbc chore!: remove superseded HardwareKeyboard* classes 2024-10-23 14:45:02 +08:00
Nick Fisher aaca5ad372 chore(release): publish packages
- thermion_dart@0.2.0-dev.5.0
 - thermion_flutter_web@0.1.0-dev.5.0
 - thermion_flutter@0.2.0-dev.5.0
 - thermion_flutter_platform_interface@0.2.0-dev.5.0
 - thermion_flutter_ffi@0.2.0-dev.5.0
2024-10-23 14:45:02 +08:00
Nick Fisher f6906ac3fd chore!: remove EntityTransformController (requires replacement) 2024-10-23 14:45:02 +08:00
Nick Fisher 38a5395c78 chore(release): publish packages
- thermion_dart@0.2.0-dev.4.0
 - thermion_flutter_web@0.1.0-dev.4.0
 - thermion_flutter@0.2.0-dev.4.0
 - thermion_flutter_platform_interface@0.2.0-dev.4.0
 - thermion_flutter_ffi@0.2.0-dev.4.0
2024-10-23 14:45:01 +08:00
Nick Fisher 85dcd5a5b9 fix!: (web/wasm) free pick callbacks on dispose 2024-10-23 14:45:01 +08:00
Nick Fisher 92fbe2e5d5 chore!: restructure viewer folders as libraries to only export the public interface 2024-10-23 14:45:01 +08:00
Nick Fisher 779d5cba1c chore(release): publish packages
- thermion_flutter@0.2.0-dev.3.0
2024-10-23 14:45:01 +08:00
Nick Fisher f4217401e2 chore: add path to dev deps 2024-10-23 14:45:01 +08:00
Nick Fisher e99bf6b14b chore!: (flutter) cleanup for pub.dev publishing 2024-10-23 14:45:01 +08:00
Nick Fisher 84775f7e2a fix!: remove EntityControllerMouseWidget (replace with GestureHandler) 2024-10-23 14:45:01 +08:00
Nick Fisher 8c6bc456a8 chore(release): publish packages
- thermion_flutter@0.2.0-dev.2.0
2024-10-23 14:45:01 +08:00
Nick Fisher d58d8bbc35 chore: (flutter) web packaging fixes (use logger) 2024-10-23 14:45:01 +08:00
Nick Fisher 0738f32751 chore: (flutter) web packaging fixes 2024-10-23 14:45:01 +08:00
Nick Fisher 110962cc37 chore: (flutter) web packaging fixes 2024-10-23 14:45:01 +08:00
Nick Fisher 70e529605c chore: (flutter) add package:web to flutter deps 2024-10-23 14:45:01 +08:00
Nick Fisher aa02e04091 chore!: remove EntityListWidget - will replace with new Scene 2024-10-23 14:45:01 +08:00
Nick Fisher a670ce1cf0 chore(release): publish packages
- thermion_dart@0.2.0-dev.1.0
 - thermion_flutter@0.2.0-dev.1.0
 - thermion_flutter_ffi@0.2.0-dev.1.0
 - thermion_flutter_platform_interface@0.2.0-dev.1.0
 - thermion_flutter_web@0.1.0-dev.1.0
2024-10-23 14:45:01 +08:00
Nick Fisher f552e61157 rename Android plugin class in pubspec.yaml 2024-10-23 14:45:01 +08:00
Nick Fisher e397b68060 add namespace for build.gradle 2024-10-23 14:45:00 +08:00
Nick Fisher cb5580d770 add namespace for AndroidManifest.xml 2024-10-23 14:45:00 +08:00
Nick Fisher 0cd4ecf701 rename Android package/paths 2024-10-23 14:45:00 +08:00
Nick Fisher 46291d4a63 (flutter) provide nicer implementation of FixedOrbitCameraRotationDelegate 2024-10-23 14:45:00 +08:00
Nick Fisher 1344d1c424 (flutter) update FreeFlight camera delegate 2024-10-23 14:45:00 +08:00
Nick Fisher bb0f3d417f add PickDelegate to DelegateGestureHandler 2024-10-23 14:45:00 +08:00
Nick Fisher 0f6d02a83f add PICK_ENTITY to GestureAction 2024-10-23 14:45:00 +08:00
Nick Fisher 56e00c9c55 add background color tests 2024-10-23 14:45:00 +08:00
Nick Fisher 943ca26eae normalize direction in addLight 2024-10-23 14:45:00 +08:00
Nick Fisher 8e1c611e92 set clearOptions to true 2024-10-23 14:45:00 +08:00
Nick Fisher ed5f23faf2 introduce stronger native typing, camera projection/culling methods, update tests 2024-10-23 14:45:00 +08:00
Nick Fisher 60bd7498ea (flutter) use scheduleFrameCallback to invoke requestFrame to match Flutter/vsync 2024-10-23 14:45:00 +08:00
Nick Fisher ab1de78b74 rename from *FFI to *RenderThread, return bool from render() to check frame timings, update render loop to wait on condition variable, add requestFrame() method 2024-10-23 14:45:00 +08:00
Nick Fisher 493d547c7b add Dart Camera type 2024-10-23 14:45:00 +08:00
Nick Fisher 7bcfd0f805 rename CameraPtr to TCamera and use named arguments for setCameraLensProjection 2024-10-23 14:45:00 +08:00
Nick Fisher 3e1b151488 move MaterialInstance methods to own class 2024-10-23 14:45:00 +08:00
Nick Fisher 820ad7cb28 rename setLayerEnabled to setLayerVisibility, add setVisibilityLayer method 2024-10-23 14:45:00 +08:00
Nick Fisher 686b4800aa add PickDelegate 2024-10-23 14:44:59 +08:00
Nick Fisher cb7828820d add ThermionPickResult typedef 2024-10-23 14:44:59 +08:00
Nick Fisher a6d457f664 update bindings 2024-10-23 14:44:59 +08:00
Nick Fisher fd95c634f1 add setMaterialDepthWrite method 2024-10-23 14:44:59 +08:00
Nick Fisher df0a744cc9 add setMaterialDepthWrite method 2024-10-23 14:44:59 +08:00
Nick Fisher af55ef56c9 update tests 2024-10-23 14:44:59 +08:00
Nick Fisher 6c6991f0a9 update stub 2024-10-23 14:44:59 +08:00
Nick Fisher d248a85aee add createUnlitMaterialInstance, setMaterialPropertyInt methods to viewer interface 2024-10-23 14:44:59 +08:00
Nick Fisher 64642204fc update bindings 2024-10-23 14:44:59 +08:00
Nick Fisher 5bb84618c3 replace some async methods with futures, fix setMaterialProperty4, update unproject, setMaterialPropertyInt, createUnlitMaterialInstance 2024-10-23 14:44:59 +08:00
Nick Fisher fc5cce71b7 export geometry from thermion_dart 2024-10-23 14:44:59 +08:00
Nick Fisher b00aa0696f remove image.mat from LFS 2024-10-23 14:44:59 +08:00
Nick Fisher 02aa14d7b7 remove image.mat from LFS 2024-10-23 14:44:59 +08:00
Nick Fisher f9dfb68e9f update built unlit material 2024-10-23 14:44:59 +08:00
Nick Fisher 208eb4ad06 remove old default paramsf rom UnlitMaterialProvider 2024-10-23 14:44:59 +08:00
Nick Fisher 5608abdf79 add setMaterialProperty for int, add create_unlit_material_instance, use double4 instead of float4 2024-10-23 14:44:59 +08:00
Nick Fisher 2e404f2087 add setMaterialProperty for int, add create_unlit_material_instance 2024-10-23 14:44:59 +08:00
Nick Fisher 024201a7b7 set default layer for loadGlb to 0,. add setMaterialProperty for int, add SceneManager::createUnlitMaterialInstance 2024-10-23 14:44:58 +08:00
Nick Fisher 7dde3b5d27 add base color/texture to unlit 2024-10-23 14:44:58 +08:00
Nick Fisher 834726b49e set default layer for loadGlb to 0,. add setMaterialProperty for int 2024-10-23 14:44:58 +08:00
Nick Fisher 204f8204f1 change float4 to double4 2024-10-23 14:44:58 +08:00
Nick Fisher 3cf4790148 update tests 2024-10-23 14:44:58 +08:00
Nick Fisher 180f3f08dc update unproject texture to accept input texture 2024-10-23 14:44:58 +08:00
Nick Fisher 67698775a3 update unproject texture to accept input texture 2024-10-23 14:44:58 +08:00
Nick Fisher 22f97beeaa update unproject texture to accept input texture 2024-10-23 14:44:58 +08:00
Nick Fisher 9f98f21d38 update unproject texture to accept input texture 2024-10-23 14:44:58 +08:00
Nick Fisher 94ff71281f don't call clearBackgroundImage when setBackgroundImage is called (would deadlock) 2024-10-23 14:44:58 +08:00
Nick Fisher 4a96df1574 set default material for geometry to baseColorIndex 0 2024-10-23 14:44:58 +08:00
Nick Fisher 80448d4a24 depth pre-pass when projecting texture 2024-10-23 14:44:58 +08:00
Nick Fisher 257c4b29f2 add spot constructor 2024-10-23 14:44:58 +08:00
Nick Fisher 3f9db33340 add test cube texture image 2024-10-23 14:44:58 +08:00
Nick Fisher 2c42fbd38d update test 2024-10-23 14:44:58 +08:00
Nick Fisher 8eca3ec76b add image methods to test helper 2024-10-23 14:44:58 +08:00
Nick Fisher 0b64bc580d update showcase 2024-10-23 14:44:58 +08:00
Nick Fisher ce2266d0ed test updates 2024-10-23 14:44:57 +08:00
Nick Fisher 60530fad6b widget updates 2024-10-23 14:44:57 +08:00
Nick Fisher b8f94ed8a9 increase min Dart SDK to 3.5 for .address FFI accessors 2024-10-23 14:44:57 +08:00
Nick Fisher 330b1ca5d8 update ffigen with new headers 2024-10-23 14:44:57 +08:00
Nick Fisher 40a7f86cef fixes for createMaterialInstance 2024-10-23 14:44:57 +08:00
Nick Fisher a9b3050265 gesture detector fixes 2024-10-23 14:44:57 +08:00
Nick Fisher b7e64b3abe ThermionViewer: add create/destroy materialinstance, add MaterialInstance property to createGeometry, priority/layer to loadGlbFromBuffer 2024-10-23 14:44:57 +08:00
Nick Fisher 56baa44c99 widget cleanup 2024-10-23 14:44:57 +08:00
Nick Fisher 357d815489 use TMaterialInstance for FFI API, add priority/layer params to load_glb_from_buffer 2024-10-23 14:44:57 +08:00
Nick Fisher e542855639 add priority/layer to FFI viewer, use struct for model matrix, add createUbershaderMaterialInstance and destroyMaterialInstance 2024-10-23 14:44:57 +08:00
Nick Fisher 6fc3f49152 update bindings 2024-10-23 14:44:57 +08:00
Nick Fisher e67c77b322 use SceneManager::LAYERS enum for Overlay, set priority/layer in loadGlbFromBuffer, add create/destroy material instance 2024-10-23 14:44:57 +08:00
Nick Fisher c3291f672e use SceneManager::LAYERS enum for Overlay 2024-10-23 14:44:57 +08:00
Nick Fisher 176036402a use SceneManager::LAYERS enum for gizmo 2024-10-23 14:44:57 +08:00
Nick Fisher 9d5488b82d add priority/layer to load_glb_from_buffer 2024-10-23 14:44:57 +08:00
Nick Fisher a2618dab31 native types, add create/destroy material instance, add SceneManager::LAYERS enum 2024-10-23 14:44:57 +08:00
Nick Fisher bb46241f98 refactor: native types 2024-10-23 14:44:57 +08:00
Nick Fisher ff7fee2d94 refactor: native types 2024-10-23 14:44:57 +08:00
Nick Fisher 9a23a24bd3 refactor: move native types to own header, add methods for create/destroy material instance, add priority/layer to load_glb_from_buffer 2024-10-23 14:44:56 +08:00
Nick Fisher a62762be92 refactor: Dart types 2024-10-23 14:44:56 +08:00
Nick Fisher 60dbc4ffd6 add texture methods (including unproject) 2024-10-23 14:44:39 +08:00
Nick Fisher 773077ab9c don't store gizmo material in LFS 2024-10-23 14:44:39 +08:00
Nick Fisher 679d208c8d test update 2024-10-23 14:44:39 +08:00
Nick Fisher 19bec9a9cf restructure viewer/types/helper folders, remove old WASM/web FFI interop, add SceneUpdated stream 2024-10-23 14:44:39 +08:00
Nick Fisher a7f6ae19f0 update tests 2024-10-23 14:44:39 +08:00
Nick Fisher 475f90d224 restructure viewer/types/helper folders, remove old WASM/web FFI interop, add SceneUpdated stream 2024-10-23 14:44:39 +08:00
Nick Fisher 285c9016d7 gesture handler & delegate improvements 2024-10-23 14:44:39 +08:00
Nick Fisher 5923d07abc allow setting material property by name 2024-10-23 14:44:39 +08:00
Nick Fisher 91cece81fb (flutter) export delegate gesture handler 2024-10-23 14:44:38 +08:00
Nick Fisher b714d421f6 remove using namespace filament* 2024-10-23 14:44:38 +08:00
Nick Fisher 20852c7ae5 update bindings 2024-10-23 14:44:38 +08:00
Nick Fisher f18f04734d allow setting material property by name 2024-10-23 14:44:38 +08:00
Nick Fisher 2eb7cc286b remove using namespace filament* 2024-10-23 14:44:38 +08:00
Nick Fisher ae91e3e2c1 geometry receives/casts shadows by default 2024-10-23 14:44:38 +08:00
Nick Fisher d73b437104 gesture handler improvements 2024-10-23 14:44:38 +08:00
Nick Fisher 04b9d9e400 remove superseded desktop/mobile gesture detector widget 2024-10-23 14:44:38 +08:00
Nick Fisher 6e7741706e add pan camera implementation and fix velocity timer 2024-10-23 14:44:38 +08:00
Nick Fisher af0ee0584d add delegate-based implementations for gesture handlers 2024-10-23 14:44:38 +08:00
Nick Fisher cabed69c48 remove double sided from HighlightOverlay material 2024-10-23 14:44:38 +08:00
Nick Fisher 2832686193 adjust gizmo size 2024-10-23 14:44:38 +08:00
Nick Fisher d7149c8282 fix setCameraModelMatrix4 2024-10-23 14:44:38 +08:00
Nick Fisher 571c7e60aa update bindings 2024-10-23 14:44:38 +08:00
Nick Fisher a434829a6c initialize viewportDimensions to (0,0) in ThermionViewer 2024-10-23 14:44:38 +08:00
Nick Fisher 60b8716315 fix winding order in GeometryHelper 2024-10-23 14:44:38 +08:00
Nick Fisher 7aba6d15b7 reduce size of gizmo 2024-10-23 14:44:37 +08:00
Nick Fisher 48ada59a2f remove logging 2024-10-23 14:44:37 +08:00
Nick Fisher c5aa1abb30 culling fixes for HighlightOverlay 2024-10-23 14:44:37 +08:00
Nick Fisher daeedd6f73 add v2 gesture handlers 2024-10-23 14:44:37 +08:00
Nick Fisher cac80159ff add v2 gesture handlers 2024-10-23 14:44:37 +08:00
Nick Fisher a5cb23c32e chore!: rename controller to viewer in gesture detector widgets 2024-10-23 14:44:37 +08:00
Nick Fisher 0f5b7e5e6d update material building in Makefile 2024-10-23 14:44:37 +08:00
Nick Fisher 12aaebd154 update test 2024-10-23 14:44:37 +08:00
Nick Fisher 8899d4b960 use opaque CameraPtr to set camera matrices/properties/etc 2024-10-23 14:44:37 +08:00
Nick Fisher 1ba91a1fd6 rename getBoundingBox to getViewportBoundingBox and add camera methods 2024-10-23 14:44:37 +08:00
Nick Fisher c34d89affd rename getBoundingBox to getViewportBoundingBox 2024-10-23 14:44:37 +08:00
Nick Fisher e07a4fac97 explicitly mark type of Camera for Gizmo 2024-10-23 14:44:37 +08:00
Nick Fisher 76428b2e70 use opaque CameraPtr to set camera matrices/properties/etc 2024-10-23 14:44:37 +08:00
Nick Fisher 78a0763ad7 remove camera methods from FilamentViewer 2024-10-23 14:44:37 +08:00
Nick Fisher 32591f5af7 remove camera methods from FilamentViewer 2024-10-23 14:44:37 +08:00
Nick Fisher c1898b97c9 use opaque CameraPtr to set camera matrices/properties/etc 2024-10-23 14:44:37 +08:00
Nick Fisher 5c82b6351c mark all ffigen functions as leaf 2024-10-23 14:44:37 +08:00
Nick Fisher 14f62a6427 remove update_viewport_and_camera_projection_ffi 2024-10-23 14:44:36 +08:00
Nick Fisher 2a30a6f2e1 remove update_viewport_and_camera_projection_ffi 2024-10-23 14:44:36 +08:00
Nick Fisher 7b96ee0d9c add matrix helper 2024-10-23 14:44:36 +08:00
Nick Fisher 5994908197 update stubbed ThermionViewer methods 2024-10-23 14:44:36 +08:00
Nick Fisher d6c3badbba remove unused get_camera_position method 2024-10-23 14:44:36 +08:00
Nick Fisher 9aa9e84bc0 update stub ThermionViewer 2024-10-23 14:44:36 +08:00
Nick Fisher f3637eab3f update bindings 2024-10-23 14:44:36 +08:00
Nick Fisher 9f9ee09f9c add loadGlbFromBuffer implementation to ThermionViewerFFI 2024-10-23 14:44:36 +08:00
Nick Fisher 08b986c5e3 add createGeometryWithNormals to SceneManager 2024-10-23 14:44:36 +08:00
Nick Fisher c8f6c2582b add createGeometryWithNormals to SceneManager 2024-10-23 14:44:36 +08:00
Nick Fisher ae1c8dbdfc add normals to CustomGeometry implementation 2024-10-23 14:44:36 +08:00
Nick Fisher 3b5c91b15c add normals to CustomGeometry interface 2024-10-23 14:44:36 +08:00
Nick Fisher 7a6e9cd598 HighlightOverlay fixes 2024-10-23 14:44:36 +08:00
Nick Fisher 6a8f0bda09 don't set stencil highlight in Gizmo 2024-10-23 14:44:36 +08:00
Nick Fisher 05305aa27d add create_geometry_with_normals method 2024-10-23 14:44:36 +08:00
Nick Fisher ae59288b1f add create_geometry_with_normals method 2024-10-23 14:44:36 +08:00
Nick Fisher 7269a5e527 add create_geometry_with_normals_ffi method, switch load_glb_from_buffer type to uint8_t for Dart leaf compat and add keepData param 2024-10-23 14:44:36 +08:00
Nick Fisher 02dffaade5 add create_geometry_with_normals_ffi method, switch load_glb_from_buffer type to uint8_t for Dart leaf compat and add keepData param 2024-10-23 14:44:35 +08:00
Nick Fisher 9686650987 update test helpers 2024-10-23 14:44:35 +08:00
Nick Fisher eefa3cbe98 (flutter) add experimental GestureHandler widget and decouple from ThermionGestureDetectorDesktop 2024-10-23 14:44:35 +08:00
Nick Fisher 0a4b5c8676 (flutter) add experimental GestureHandler widget and decouple from ThermionGestureDetectorDesktop 2024-10-23 14:44:35 +08:00
Nick Fisher dff3cc21fa add loadGlbFromBuffer method and normals param to ThermionViewer 2024-10-23 14:44:35 +08:00
Nick Fisher d7bb0e492c (flutter) set enablePicking to false by default in ThermionGestureDetector 2024-10-23 14:44:35 +08:00
Nick Fisher af92c26124 (flutter) add const FlutterWebOptions 2024-10-23 14:44:35 +08:00
Nick Fisher d1ffa246a9 (flutter) add CameraOrientationWidget 2024-10-23 14:44:35 +08:00
Nick Fisher 4e7b79f98d (flutter) add const constructor for flutter options 2024-10-23 14:44:35 +08:00
Nick Fisher 9cff791ce5 add GeometryHelper 2024-10-23 14:44:35 +08:00
Nick Fisher fdb2d75cf0 (flutter) add CameraOrientationWidget 2024-10-23 14:44:35 +08:00
Nick Fisher 825c6e1a80 feat: parent the cloned entity instance when setting stencil highlight 2024-10-23 14:44:35 +08:00
Nick Fisher ec9366d72b feat: add getAncestor method 2024-10-23 14:44:35 +08:00
Nick Fisher ff304ad3d4 feat: add getAncestor method 2024-10-23 14:44:35 +08:00
Nick Fisher b71ba411fd update bindings 2024-10-23 14:44:35 +08:00
Nick Fisher dfe7b4e6c6 feat: set stencil highlight on gizmo attach 2024-10-23 14:44:35 +08:00
Nick Fisher 96e2de6de1 update tests 2024-10-23 14:44:35 +08:00
Nick Fisher d4d4dc4fd7 feat: move createGeometry to SceneManager, add queueRelativePositionUpdateFromViewportVector and removeStencilHighlight 2024-10-23 14:44:34 +08:00
Nick Fisher 2ccbb4c0c4 chore: remove createGeometry method from FilamentViewer, set default view blend mode 2024-10-23 14:44:34 +08:00
Nick Fisher 709b098054 fix: properly destroy entities/material/etc in Gizmo on destruction, remove custom scene creation logic 2024-10-23 14:44:34 +08:00
Nick Fisher 53ff6c72f0 feat: move HighlightOverlay to nested class, move createGeometry to SceneManager, add queueRelativePositionUpdateFromViewportVector 2024-10-23 14:44:34 +08:00
Nick Fisher 8044adcc50 feat: add removeStencilHighlight, accept color param for setStencilHighlight, queuePositionUpdateFromViewportCoords to ThermionDartApi 2024-10-23 14:44:34 +08:00
Nick Fisher 9b91da3798 feat: add removeStencilHighlight, queuePositionUpdateFromViewportCoords to ThermionViewer 2024-10-23 14:44:34 +08:00
Nick Fisher 286910e722 chore: delete old unlit_opaque material 2024-10-23 14:44:34 +08:00
Nick Fisher 8fe4322536 chore: rebuild unlit material 2024-10-23 14:44:34 +08:00
Nick Fisher a7005d13df feat: add scale parameter to unlit material 2024-10-23 14:44:34 +08:00
Nick Fisher 8ca4205d2c fix: add Fence to capture() and set stencil buffer by default 2024-10-23 14:44:34 +08:00
Nick Fisher af30b27724 test: add test cube.glb 2024-10-23 14:44:34 +08:00
Nick Fisher 2d688e74f2 chore: remove old materials Makefile 2024-10-23 14:44:34 +08:00
Nick Fisher 0a4e3501dc feat: add flag for keepData for gltf instancing, add highlightScene, add stencilHighlight method 2024-10-23 14:44:34 +08:00
Nick Fisher 1b50ca2b57 chore: minor widget fixes 2024-10-23 14:44:34 +08:00
Nick Fisher b454bbd662 feat: add grid material 2024-10-23 14:44:34 +08:00
Nick Fisher 1480920938 feat: allow passing null options to ThermionWidget 2024-10-23 14:44:34 +08:00
Nick Fisher 65a6231f23 feat: grid uses own material 2024-10-23 14:44:33 +08:00
Nick Fisher 4b70116754 chore: clean up old commented code 2024-10-23 14:44:33 +08:00
Nick Fisher e136b0a9f1 fix: ignore pick results directly on axis 2024-10-23 14:44:33 +08:00
Nick Fisher e45cc0267f feat: add grid material 2024-10-23 14:44:33 +08:00
Nick Fisher d17cce2ca4 feat: expose setLightDirection and setLightPosition 2024-10-23 14:44:33 +08:00
Nick Fisher c93cc296a0 chore: update binding 2024-10-23 14:44:33 +08:00
Nick Fisher f63d42a75b chore: (js) stub missing methods 2024-10-23 14:44:33 +08:00
Nick Fisher 1ae7be0846 chore: (wasm) add missing interop methods 2024-10-23 14:44:33 +08:00
Nick Fisher c3388f2a48 feat: (flutter) (web) if importCanvasAsWidget is false, render transparency 2024-10-23 14:44:33 +08:00
Nick Fisher 4909f4395d chore: stub ThermionWidget methods 2024-10-23 14:44:33 +08:00
Nick Fisher 2a8122e280 feat: (flutter) move DPR calculation to resizeTexture and add createViewerWithOptions method to ThermionFlutterFFI 2024-10-23 14:44:33 +08:00
Nick Fisher 937eaaaaa1 fix: (flutter) pass ThermionFlutterOptions to ThermionWidget, use dpr for resizeTexture, delete unnecessary TransparencyPainter class 2024-10-23 14:44:33 +08:00
Nick Fisher f0974509bf feat: add createViewerWithOptions to ThermionFlutterPlugin and mark createViewer as deprecated 2024-10-23 14:44:33 +08:00
Nick Fisher 0d71b0d8fe feat: add createViewerWithOptions to ThermionFlutterPlugin and mark createViewer as deprecated 2024-10-23 14:44:33 +08:00
Nick Fisher cf0a76c343 feat: (flutter) (web) use options to determine whether to create canvas, and set fixed position + offset 2024-10-23 14:44:33 +08:00
Nick Fisher 0f5b90998e test: update viewport gizmo test 2024-10-23 14:44:33 +08:00
Nick Fisher 8963b79db0 chore: (flutter) export platform interface from thermion_flutter package 2024-10-23 14:44:33 +08:00
Nick Fisher dc0a698330 chore: stub new methods 2024-10-23 14:44:32 +08:00
Nick Fisher 6e54ed096f doc: pixelRatio 2024-10-23 14:44:32 +08:00
Nick Fisher a552c11983 feat: add ThermionFlutterOptions classes, rename interface parameter for offsetTop and ensure pixelRatio is passed to resizeTexture 2024-10-23 14:44:32 +08:00
Nick Fisher 1bdf6888c6 fix: emscripten export visibility for add_light 2024-10-23 14:44:32 +08:00
Nick Fisher f69fcbb783 chore: use float instead of float32_t in FilamentViewer 2024-10-23 14:44:32 +08:00
Nick Fisher 6771431038 chore: add nested PickCallbackHandler to Gizmo 2024-10-23 14:44:32 +08:00
Nick Fisher 712568d118 chore: update Makefile to add missing headers to resgen files 2024-10-23 14:44:32 +08:00
Nick Fisher 4916c4cc50 fix: (flutter/web) use window.devicePixelRatio for viewport 2024-10-23 14:44:32 +08:00
Nick Fisher 8ed26c72e2 fix: (wasm) use correct coords for pick, free memory correctly, keep pixelratio copy 2024-10-23 14:44:32 +08:00
Nick Fisher 919010235c fix: (flutter) desktop gesture detector changes for new Gizmo methods 2024-10-23 14:44:32 +08:00
Nick Fisher 580d795054 chore: Dart Gizmo class cleanup 2024-10-23 14:44:32 +08:00
Nick Fisher 329193f2f2 feat: add setGizmoVisibility/pickGizmo methods to ThermionViewer 2024-10-23 14:44:32 +08:00
Nick Fisher b20acaec6f feat: remove gizmo view references, exclude gizmo entities from picking, add createIbl 2024-10-23 14:44:32 +08:00
Nick Fisher 516d420a1e feat: createIbl 2024-10-23 14:44:32 +08:00
Nick Fisher b92b34a8ad chore: init SceneManager pointers to nullptr 2024-10-23 14:44:32 +08:00
Nick Fisher 7d7596bbdd fix: add more nan checks for gizmo manipulation 2024-10-23 14:44:31 +08:00
Nick Fisher acac2dba90 feat: expose API methods for create_ibl, pick/set gizmo visibility 2024-10-23 14:44:31 +08:00
Nick Fisher 727ac7d9df feat: create transparent overlay for gizmo for easier picking 2024-10-23 14:44:31 +08:00
Nick Fisher 2fc54ae343 feat: rescale gizmo based on distance from camera 2024-10-23 14:44:31 +08:00
Nick Fisher e04cd0488e feat: rescale gizmo based on distance from camera 2024-10-23 14:44:31 +08:00
Nick Fisher f867e21647 fix: add check for nan NDC coordinates for viewport translation 2024-10-23 14:44:31 +08:00
Nick Fisher ec27935d81 fix stub methods 2024-10-23 14:44:31 +08:00
Nick Fisher 08ae0387a9 add implementations to JS bridge/shim classes 2024-10-23 14:44:31 +08:00
Nick Fisher ca69c783d3 add missing methods to wasm viewer 2024-10-23 14:44:31 +08:00
Nick Fisher 12198dd6df feat: highlight gizmo on hover 2024-10-23 14:44:31 +08:00
Nick Fisher d1fbbe1167 add implementations to FFI viewer 2024-10-23 14:44:31 +08:00
Nick Fisher 65e79b0d07 fix!: (flutter) pass pixelRatio to createTexture 2024-10-23 14:44:31 +08:00
Nick Fisher 9fb9df1843 (flutter) (web) initialize viewer to 1x1 then resize on createTexture 2024-10-23 14:44:31 +08:00
Nick Fisher b15166a599 feat!: (flutter) (web) upgrade package:web dep to 1.0.0 2024-10-23 14:44:31 +08:00
Nick Fisher bf81dfe806 fix!: (flutter) pass pixelRatio to createTexture 2024-10-23 14:44:31 +08:00
Nick Fisher f588b3b6e7 feat: expose setLayerEnabled, viewportDimensions and getCameraFov on ThermionView 2024-10-23 14:44:31 +08:00
Nick Fisher c29db74b1d stub out new methods 2024-10-23 14:44:31 +08:00
Nick Fisher 213fc3da91 fix!: (flutter) pass pixelRatio to createTexture 2024-10-23 14:44:30 +08:00
Nick Fisher ab4f721914 fix!: (flutter) pass pixelRatio to createTexture 2024-10-23 14:44:30 +08:00
Nick Fisher 8ac9876ec3 chore: update bindings 2024-10-23 14:44:30 +08:00
Nick Fisher 4fbc113fcb chore: add viewport test 2024-10-23 14:44:30 +08:00
Nick Fisher 4d3d744cd6 feat: layers, grid 2024-10-23 14:44:30 +08:00
Nick Fisher 21416fa8c8 feat: layers, grid 2024-10-23 14:44:30 +08:00
Nick Fisher f2f973bf00 feat: ignore grid overlay and gizmo center when picking, implement highlighting 2024-10-23 14:44:30 +08:00
Nick Fisher 0c655dbfd4 feat: SceneManager updates (setLayer, add grid, queueRelativePositionUpdateWorld 2024-10-23 14:44:30 +08:00
Nick Fisher ebac947c92 feat: expose set_layer_enabled, get_camera_fov and queue_relative_position_updateg_world_axis to ThermionDartApi.h 2024-10-23 14:44:30 +08:00
Nick Fisher ce85a9d0b1 feat: add getCameraFov to FilamentViewer 2024-10-23 14:44:30 +08:00
Nick Fisher f114ca33d5 feat: add new grid overlay files to web CmakeLists 2024-10-23 14:44:30 +08:00
Nick Fisher 850628f7f6 chore: rebuild materials 2024-10-23 14:44:30 +08:00
Nick Fisher 8681d58ffb fix: update material output path in Makefile 2024-10-23 14:44:30 +08:00
Nick Fisher 8f2cd5a353 add grid overlay 2024-10-23 14:44:30 +08:00
Nick Fisher f6f12e2566 use inactive/active color gizmo 2024-10-23 14:44:30 +08:00
Nick Fisher 3512ed6da3 chore: don't use shader to overlay gizmo 2024-10-23 14:44:30 +08:00
Nick Fisher 4a29a77a78 feat: re-implement (native) Gizmo class, expose preserveScaling parameter for setParent, add methods for getting viewport bounding box from renderable entity 2024-10-23 14:44:29 +08:00
Nick Fisher aa17962936 fix: (web) add emscripten guards for flushAndWait call when swapchain destroyed 2024-10-23 14:44:29 +08:00
Nick Fisher 10cab8dcb4 feat!: (web) (flutter) create canvas when createViewer is called (no longer need to manually add canvas element to web HTML) 2024-10-23 14:44:29 +08:00
Nick Fisher 0a720fae72 feat: add capture() function and expose viewportDimensions on ThermionViewer (allows easier saving of captured images to PNG) 2024-10-23 14:44:29 +08:00
Nick Fisher 0153b5be22 feat: (web) allow table growth in emscripten module for passing C-style callback function pointers 2024-10-23 14:44:29 +08:00
Nick Fisher 479a9ead03 feat: (web) add capture() method and missing camera navigation controls 2024-10-23 14:44:29 +08:00
Nick Fisher b207a48175 feat!: resize canvas on web 2024-10-23 14:44:29 +08:00
Nick Fisher 9e3311c6f9 feat!: update web/http dependencies 2024-10-23 14:44:29 +08:00
Nick Fisher 88257c7e03 feat: download WASM module directly on web (no need to embed in index.html any more) and expose updateViewportAndCameraProjection 2024-10-23 14:44:29 +08:00
Nick Fisher a30e2f295f feat: add startOffset parameter to gltf playAnimation 2024-10-23 14:44:29 +08:00
Nick Fisher 96ad9dee18 chore(release): publish packages
- thermion_dart@0.1.3
 - thermion_flutter_ffi@0.1.0+12
 - thermion_flutter_web@0.0.3
 - thermion_flutter_platform_interface@0.1.0+11
 - thermion_flutter@0.1.1+13
2024-10-23 14:44:29 +08:00
Nick Fisher 8800195c2c chore: remove top-level .gitattributes 2024-10-23 14:41:21 +08:00
Nick Fisher 74b7c938a8 feat: set SCALE2:InputAction.ZOOM by default 2024-10-23 14:36:47 +08:00
Nick Fisher 3dcacfe631 doc: update camera_manipulation example project and docs 2024-10-23 14:36:26 +08:00
Nick Fisher bf02406bf4 doc: add camera_manipulation example project 2024-10-23 14:11:48 +08:00
Nick Fisher 4371dbda3c feat: track zoom delta for DelegateInputHandler 2024-10-23 14:10:41 +08:00
Nick Fisher c6640cef96 feat: set InputType.SCALE1 to ROTATE by default for DelegateInputHandler.fixedOrbit 2024-10-23 14:03:47 +08:00
Nick Fisher 11ca6972c6 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.9
 - thermion_flutter@0.2.1-dev.8
 - thermion_flutter_ffi@0.2.1-dev.8
 - thermion_flutter_web@0.1.1
 - thermion_flutter_platform_interface@0.2.1-dev.8
2024-10-23 13:46:45 +08:00
Nick Fisher e235d22c7c chore: add quickstart .metadata 2024-10-23 13:46:00 +08:00
Nick Fisher 512d74568a chore: test cleanup 2024-10-23 16:43:17 +11:00
Nick Fisher 617c2ba578 chore: test cleanup 2024-10-23 16:43:02 +11:00
Nick Fisher 5476c6248c chore: test cleanup 2024-10-23 16:42:33 +11:00
Nick Fisher 916366bd10 doc: add BUILDING.md with Windows instructions 2024-10-23 16:42:09 +11:00
Nick Fisher 5e66893719 chore!: View.getCamera returns Future<Camera> 2024-10-23 16:41:51 +11:00
Nick Fisher 16964b4987 fix:move createUnlitMaterialInstance and createGeometry to render thread 2024-10-23 16:40:55 +11:00
Nick Fisher 73846ffa9b feat: produce debug symbols on Windows 2024-10-23 16:40:30 +11:00
Nick Fisher d5824239f5 fix:move createUnlitMaterialInstance and createGeometry to render thread 2024-10-23 16:39:42 +11:00
Nick Fisher c4270fc918 fix:move createUnlitMaterialInstance and createGeometry to render thread 2024-10-23 16:38:23 +11:00
Nick Fisher a29a1605a7 chore: rename SceneManager* methods 2024-10-23 16:28:42 +11:00
Nick Fisher 22868a594f fix: dont calculate surface orientation for non-triangle geometry 2024-10-23 16:28:00 +11:00
Nick Fisher aed64a27e8 chore: test cleanup 2024-10-23 15:11:33 +11:00
Nick Fisher 2b338a63ba cleanup tests 2024-10-23 15:08:14 +11:00
Nick Fisher cda4027f83 fix!: (windows) add flushAndWait call to capture() to prevent stalling on Windows; use provided buffer as pixelBuffer rather than duplicate allocation 2024-10-23 15:02:28 +11:00
Nick Fisher 7814269e15 Create dart.yml 2024-10-23 14:35:44 +11:00
Nick Fisher e2175db7cb fix!: add meshoptimizer lib on Windows 2024-10-23 14:16:03 +11:00
Nick Fisher f1828b0c92 fix!: Dart-only release mode builds on Window 2024-10-23 14:15:41 +11:00
Nick Fisher 5cf9fab4f2 fix: fix all Windows warnings so apps will compile with /WX 2024-10-23 02:41:16 +11:00
Nick Fisher c3764df4e2 feat: (flutter) (windows) add DestroyRenderingSurface method 2024-10-23 02:25:06 +11:00
Nick Fisher a2a1033701 feat: (flutter) (windows) add DestroyRenderingSurface method 2024-10-23 02:24:49 +11:00
Nick Fisher 2536f7fc6f feat: (flutter) (windows) add DestroyRenderingSurface method 2024-10-23 02:24:34 +11:00
Nick Fisher b6fe78b82c feat: (flutter) (windows) add Destroy() to BackingWindow 2024-10-23 02:23:54 +11:00
Nick Fisher f8cddf0bce chore: cleanup thermion_flutter pubspec.yaml 2024-10-23 02:23:15 +11:00
Nick Fisher 2c7a32b47e chore: cleanup quickstart pubspec.yaml 2024-10-23 02:22:45 +11:00
Nick Fisher e6dd4c6cfe chore: cleanup thermion_flutter_ffi pubspec 2024-10-23 02:22:23 +11:00
Nick Fisher fb756fe9ba chore: rearrange thermion_flutter_ffi src dir 2024-10-23 02:22:04 +11:00
Nick Fisher c21e890b48 chore: update quickstart for Windows 2024-10-23 02:21:00 +11:00
Nick Fisher 3720aa98df Merge branch 'develop' of https://github.com/nmfisher/thermion into develop 2024-10-23 01:24:44 +11:00
Nick Fisher 640aa7854a doc: add camera_manipulation 2024-10-22 22:23:51 +08:00
Nick Fisher 9689690730 feat: simplify FixedOrbitCameraRotationDelegate 2024-10-22 22:23:35 +08:00
Nick Fisher a08620d7c9 rename gestureHandler to inputHandler 2024-10-22 22:23:13 +08:00
Nick Fisher fdbdc8e3f3 chore: update quickstart 2024-10-22 22:22:30 +08:00
Nick Fisher 071d3b3023 doc: update README 2024-10-22 22:22:16 +08:00
Nick Fisher f6b12d946a merge 2024-10-23 01:20:22 +11:00
Nick Fisher 11572b4939 fix: on resize, destroy swapchain if destroySwapChainOnResize is true 2024-10-22 14:11:02 +08:00
Nick Fisher 0c75b9a994 chore: update quickstart android project files 2024-10-22 14:10:22 +08:00
Nick Fisher ed44aad076 chore: add flutter quickstart example, assets and update README 2024-10-22 13:11:48 +08:00
Nick Fisher 6dc00bff74 fix: add listener in ThermionFlutterTextureBackedPlatform to unset viewer on dispose 2024-10-22 12:48:26 +08:00
Nick Fisher 5f2407baeb fix: add listener in ThermionFlutterMethodChannelInterface to unset viewer on dispose 2024-10-22 12:48:05 +08:00
Nick Fisher 45f41f3cf7 fix: clean up destruction logic for FlutterPlatformTexture 2024-10-22 12:47:35 +08:00
Nick Fisher 0c29d61a35 fix: use internal Set for determining first ThermionTextureWidget to call requestFrame and cleanup destruction logic 2024-10-22 12:47:13 +08:00
Nick Fisher 58e549e3b3 chore: await future in ThermionFlutterPlugin 2024-10-22 12:46:36 +08:00
Nick Fisher 2ae4f6b338 chore: remove destroy() methods from FFIRenderTarget/FFISwapChain, implement destroyRenderTarget/destroySwapChain and clean up ThermionViewerFFI disposal 2024-10-22 12:46:18 +08:00
Nick Fisher e28e41c1d9 chore: update stubbed methods 2024-10-22 12:45:30 +08:00
Nick Fisher 05dfe51260 chore: add destroySwapChain/destroyRenderTarget methods to Dart vieer and allow setting null renderTarget 2024-10-22 12:45:16 +08:00
Nick Fisher ec6e94f4ca chore: remove destroy() methods from RenderTarget and SwapChain (these need to be managed by Viewer to handle instances where the viewer itself has been disposed 2024-10-22 12:44:46 +08:00
Nick Fisher bdb332bd79 fix: set View render target to nullptr if Dart renderTarget is null 2024-10-22 12:44:00 +08:00
Nick Fisher 9295dfc7c1 docs: add quickstart to README 2024-10-22 12:43:31 +08:00
Nick Fisher fb4bee4801 docs: remove Windows native_toolchain_c fixes from docs 2024-10-22 12:43:15 +08:00
Nick Fisher 8b7c2aa48d fix: set render target to null for each view and then destroy render targets when viewer disposed 2024-10-22 12:42:50 +08:00
Nick Fisher 9bec96f160 chore: rename Viewer_destroyOnRenderThread method and cleanup unused SwapChain parameter in render threa 2024-10-22 12:42:19 +08:00
Nick Fisher cb517c907d chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.8
 - thermion_flutter_web@0.1.0+9
 - thermion_flutter@0.2.1-dev.7
 - thermion_flutter_platform_interface@0.2.1-dev.7
 - thermion_flutter_ffi@0.2.1-dev.7
2024-10-14 09:36:55 +08:00
Nick Fisher a6f5e59cbb fix: move ThermionWin32.h to include 2024-10-14 09:36:28 +08:00
Nick Fisher 9420143a36 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.7
 - thermion_flutter_web@0.1.0+8
 - thermion_flutter@0.2.1-dev.6
 - thermion_flutter_platform_interface@0.2.1-dev.6
 - thermion_flutter_ffi@0.2.1-dev.6
2024-10-14 09:25:59 +08:00
Nick Fisher eb8835b63a Merge pull request #69 from nmfisher/feature/multiple_swapchains
Support multiple views/widgets/swapchains
2024-10-14 12:05:21 +11:00
Nick Fisher f9468db266 Windows embedder fixes 2024-10-14 11:23:56 +11:00
Nick Fisher 1135ba054c cleanup 2024-10-12 15:07:14 +11:00
Nick Fisher 8f7509a23f cleanup 2024-10-12 15:06:57 +11:00
Nick Fisher cba9ee98ad (flutter) set view renderable on Windows 2024-10-12 14:56:04 +11:00
Nick Fisher 0ec0fef8f3 move standalone Windows file to extras 2024-10-12 14:55:41 +11:00
Nick Fisher a348562f56 cleanup 2024-10-12 14:36:51 +11:00
Nick Fisher 392a606bbc don't call endFrame() if no views were rendered 2024-10-12 14:36:05 +11:00
Nick Fisher 440bed4485 add files to run standalone Windows 2024-10-12 14:34:42 +11:00
Nick Fisher a321966e5b fix Windows build.dart to avoid native_assets fork; add implementations for ThermionFlutterWindows 2024-10-12 02:14:37 +11:00
Nick Fisher f180c1018f mobile gesture handler 2024-10-11 15:37:03 +08:00
Nick Fisher f267aa6dc6 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.6
 - thermion_flutter_web@0.1.0+7
 - thermion_flutter_platform_interface@0.2.1-dev.5
 - thermion_flutter@0.2.1-dev.5
 - thermion_flutter_ffi@0.2.1-dev.5
2024-10-10 20:58:19 +08:00
Nick Fisher 1c74e83c2c add native_assets_cli to dependencies 2024-10-10 20:57:50 +08:00
Nick Fisher 099a895eb6 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.5
 - thermion_flutter_platform_interface@0.2.1-dev.4
 - thermion_flutter_web@0.1.0+6
 - thermion_flutter@0.2.1-dev.4
 - thermion_flutter_ffi@0.2.1-dev.4
2024-10-10 20:49:40 +08:00
Nick Fisher 3b810f84da add animation tests 2024-10-10 20:49:08 +08:00
Nick Fisher 10f2c7d36b update cube test asset with morph targets 2024-10-10 20:49:01 +08:00
Nick Fisher 5b849638de update cube test asset with morph targets 2024-10-10 20:48:54 +08:00
Nick Fisher 857fd6f782 update tests 2024-10-10 20:48:41 +08:00
Nick Fisher 29edec63ab bump animation_tools_dart dependency 2024-10-10 20:47:45 +08:00
Nick Fisher c6afc4756a bump animation_tools_dart dependency 2024-10-10 20:47:33 +08:00
Nick Fisher 365657cf88 add pick to view tests 2024-10-10 20:47:17 +08:00
Nick Fisher 5441dedcf4 add fall-through for InputAction.ZOOM for Third Person camera delegate 2024-10-10 20:47:00 +08:00
Nick Fisher 254b6d8af2 move zoom delta to InputAction.ZOOM for FreeFlight rotation delegate 2024-10-10 20:46:34 +08:00
Nick Fisher 1459aea5cf move zoom delta to InputAction.ZOOM for FixedOrbit rotation delegate 2024-10-10 20:46:16 +08:00
Nick Fisher 80d8525671 pass through sensitivity options in DelegateGestureHandler and implement cameraUpdated 2024-10-10 20:45:33 +08:00
Nick Fisher 389a165ed3 rearrange package folders 2024-10-10 20:44:55 +08:00
Nick Fisher d8f309d21b add stubbed methods 2024-10-10 20:44:39 +08:00
Nick Fisher ee983ddfaa add InputAction.ZOOM 2024-10-10 20:43:58 +08:00
Nick Fisher c1cdd37e9d add DefaultPickDelegate 2024-10-10 20:43:31 +08:00
Nick Fisher 646f05933d use condition_variable for render thread requestFrame as well as tasks 2024-10-10 20:43:04 +08:00
Nick Fisher 3f854a7f27 rearrange utils dir 2024-10-10 14:59:11 +08:00
Nick Fisher 740dbea8bd add Axis class and rearrange utils dir 2024-10-10 14:58:50 +08:00
Nick Fisher 95a44936ac add option for async loading glTF resources 2024-10-10 14:58:09 +08:00
Nick Fisher 9deafc7371 return View when picking, use uint32_t for morphIndices 2024-10-10 08:42:16 +08:00
Nick Fisher c1af7e374d set bloom enabled by default, but 0 strength 2024-10-10 08:39:48 +08:00
Nick Fisher cd71db72be chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.4
 - thermion_flutter_web@0.1.0+5
 - thermion_flutter@0.2.1-dev.3
 - thermion_flutter_platform_interface@0.2.1-dev.3
 - thermion_flutter_ffi@0.2.1-dev.3
2024-10-02 17:59:56 +08:00
Nick Fisher a9d90f966b chore: make pub.dev happy 2024-10-02 17:59:34 +08:00
Nick Fisher 1a323ca551 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.3
 - thermion_flutter_web@0.1.0+4
 - thermion_flutter@0.2.1-dev.2
 - thermion_flutter_platform_interface@0.2.1-dev.2
 - thermion_flutter_ffi@0.2.1-dev.2
2024-10-02 17:58:24 +08:00
Nick Fisher 2d85e191bc chore: make pub.dev happy 2024-10-02 17:58:08 +08:00
Nick Fisher 1b971a859c chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.2
 - thermion_flutter_web@0.1.0+3
 - thermion_flutter_ffi@0.2.1-dev.1
 - thermion_flutter@0.2.1-dev.1
 - thermion_flutter_platform_interface@0.2.1-dev.1
2024-10-02 17:56:55 +08:00
Nick Fisher 78b697d1c2 chore: make pub.dev happy 2024-10-02 17:56:37 +08:00
Nick Fisher 9da2ce6672 chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.1
 - thermion_flutter_web@0.1.0+2
 - thermion_flutter@0.2.1-dev.0
 - thermion_flutter_platform_interface@0.2.1-dev.0
 - thermion_flutter_ffi@0.2.1-dev.0
2024-10-02 17:55:23 +08:00
Nick Fisher 39fabd501d chore: move swift bindings to test folder to make pub.dev happy 2024-10-02 17:53:31 +08:00
Nick Fisher 3f1867dd6f chore(release): publish packages
- thermion_dart@0.2.1-dev.0.0.0
 - thermion_flutter@0.2.1-dev.0.0.0
 - thermion_flutter_ffi@0.2.1-dev.0.0.0
 - thermion_flutter_platform_interface@0.2.1-dev.0.0.0
 - thermion_flutter_web@0.1.0+1
2024-10-02 17:46:54 +08:00
Nick Fisher 68d29041b0 chore(release): publish packages
- thermion_dart@0.2.0
 - thermion_flutter@0.2.0
 - thermion_flutter_ffi@0.2.0
 - thermion_flutter_platform_interface@0.2.0
 - thermion_flutter_web@0.1.0
2024-10-02 17:41:13 +08:00
Nick Fisher b300e86962 chore(release): publish packages
- thermion_dart@0.2.0-dev.8.0.0
 - thermion_flutter@0.2.0-dev.8.0.0
 - thermion_flutter_ffi@0.2.0-dev.8.0.0
 - thermion_flutter_platform_interface@0.2.0-dev.8.0.0
 - thermion_flutter_web@0.1.0-dev.8.0.0
2024-10-02 16:50:41 +08:00
Nick Fisher 562ecf2ee5 feat: camera and resizing improvements 2024-10-02 16:47:55 +08:00
Nick Fisher d294938a2c chore: remove EMSCRIPTEN ifdefs in *RenderThread methods (no longer used) 2024-09-30 18:24:05 +08:00
Nick Fisher 027cf23069 chore: cleanup 2024-09-30 18:20:30 +08:00
Nick Fisher c4598637bb feat: support multiple ThermionWidget on Android 2024-09-30 18:20:05 +08:00
Nick Fisher 8a94b6a334 feat: use imported texture on iOS 2024-09-30 14:51:11 +08:00
Nick Fisher c80c163212 feat: working implementation of multiple widgets on macos 2024-09-30 13:45:57 +08:00
Nick Fisher 921a994eb6 refactor: continual refactor to support multiple render targets 2024-09-28 18:28:05 +08:00
Nick Fisher 65e60da288 chore: upgrade Swift interop gen 2024-09-28 17:59:05 +08:00
Nick Fisher 661185083e chore: refactoring and cleanup for Gizmo 2024-09-28 13:24:28 +08:00
Nick Fisher a2a26555e2 feat: more work on multiple views/swapchains 2024-09-28 11:19:06 +08:00
Nick Fisher 7f11250b79 refactor!: refactor to support multiple Views/Render Targets 2024-09-27 23:16:01 +08:00
Nick Fisher a6d2f2ecf9 feat!: big refactor to support multiple swapchains 2024-09-27 18:39:20 +08:00
Nick Fisher 399d447eec chore: don't keep superfluous handle to rtDepth and rtColor 2024-09-27 16:40:30 +08:00
Nick Fisher fb6204e47c chore: cleanup 2024-09-27 15:19:53 +08:00
Nick Fisher 566856c8fb chore: update bindings 2024-09-27 15:13:45 +08:00
Nick Fisher d29dd207b6 feat: add rendering check to ThermionWidget ticker 2024-09-27 15:13:33 +08:00
Nick Fisher e20489900d fix!: replace queuePosition/Rotation with queueTransforms 2024-09-27 15:12:43 +08:00
Nick Fisher 567a268ded fix!: replace queuePosition/Rotation with queueTransforms 2024-09-27 15:12:33 +08:00
Nick Fisher 6a57d242f9 feat: add setParameterFloat2 method 2024-09-27 15:12:14 +08:00
Nick Fisher 41e0851d70 feat: add setParameterFloat2 method 2024-09-27 15:12:05 +08:00
Nick Fisher 95b378348c refactor!: remove RenderThread methods no longer needed 2024-09-27 15:11:47 +08:00
Nick Fisher 1309bf7c6e fix!: replace queuePosition/Rotation with queueTransforms 2024-09-27 15:10:13 +08:00
Nick Fisher 2531b507b0 fix!: replace queuePosition/Rotation with queueTransforms 2024-09-27 15:09:49 +08:00
Nick Fisher 16dc0419e2 feat: add uvScale to unlit material 2024-09-27 15:08:30 +08:00
Nick Fisher 4e7ec6bfb4 feat: add ThirdPersonCameraDelegate 2024-09-27 15:06:51 +08:00
Nick Fisher 035ad48fe4 feat!: set baseColorIndex to -1 by default in unlit materialss 2024-09-27 15:06:32 +08:00
Nick Fisher ff7c582157 chore: update tests 2024-09-27 15:06:02 +08:00
Nick Fisher 0876a91e17 add ThirdPersonCameraDelegate 2024-09-27 15:05:41 +08:00
Nick Fisher a2d3c1d73e chore: getter for native camera view matrix 2024-09-26 18:49:32 +08:00
Nick Fisher 1a721deee6 more camera work 2024-09-26 18:41:34 +08:00
Nick Fisher 4355d9c83f more camera work 2024-09-26 16:51:14 +08:00
Nick Fisher 239891c400 chore: rearrange library/export structure 2024-09-26 16:35:33 +08:00
Nick Fisher ac10aa0a1e chore: camera transform tests 2024-09-26 15:56:54 +08:00
Nick Fisher 7ecf414a47 feat: set camera model matrix directly 2024-09-26 15:52:50 +08:00
Nick Fisher 87c96d06a4 chore: rearrange library dirs, gesture handler improvements 2024-09-26 15:52:23 +08:00
Nick Fisher 26a8d9c6b5 chore: import cleanup 2024-09-26 10:48:40 +08:00
Nick Fisher 947a77f619 chore: rearrange flutter gesture/widget directory structure 2024-09-26 10:46:52 +08:00
Nick Fisher c850513b7f chore: rearrange flutter gesture/widget directory structure 2024-09-26 10:46:10 +08:00
Nick Fisher c47d827139 chore: rename thermion_flutter src dir 2024-09-26 10:44:47 +08:00
Nick Fisher a2684ae47d renaming/refactoring and allow creating new cameras 2024-09-25 23:56:25 +08:00
Nick Fisher 2b1339b560 feat: expose more camera methods 2024-09-25 23:09:27 +08:00
Nick Fisher 59aec2bcc9 chore(release): publish packages
- thermion_dart@0.2.0-dev.7.0
 - thermion_flutter_web@0.1.0-dev.7.0
 - thermion_flutter@0.2.0-dev.7.0
 - thermion_flutter_platform_interface@0.2.0-dev.7.0
 - thermion_flutter_ffi@0.2.0-dev.7.0
2024-09-25 22:35:46 +08:00
Nick Fisher 61d1581b96 fix!: fix min SDK for thermion_dart 2024-09-25 22:35:30 +08:00
Nick Fisher 8e47332ce8 chore(release): publish packages
- thermion_dart@0.2.0-dev.6.0
 - thermion_flutter_web@0.1.0-dev.6.0
 - thermion_flutter@0.2.0-dev.6.0
 - thermion_flutter_platform_interface@0.2.0-dev.6.0
 - thermion_flutter_ffi@0.2.0-dev.6.0
2024-09-25 21:58:28 +08:00
Nick Fisher ffe8bee98b chore!: cleanup deleted export 2024-09-25 21:58:19 +08:00
Nick Fisher 1e07486017 chore(release): publish packages
- thermion_flutter@0.2.0-dev.6.0
2024-09-25 21:57:38 +08:00
Nick Fisher 58da196876 chore!: remove superseded HardwareKeyboard* classes 2024-09-25 21:56:16 +08:00
Nick Fisher 78af155a6d chore(release): publish packages
- thermion_dart@0.2.0-dev.5.0
 - thermion_flutter_web@0.1.0-dev.5.0
 - thermion_flutter@0.2.0-dev.5.0
 - thermion_flutter_platform_interface@0.2.0-dev.5.0
 - thermion_flutter_ffi@0.2.0-dev.5.0
2024-09-25 21:52:58 +08:00
Nick Fisher d7e1b3d7ba chore!: remove EntityTransformController (requires replacement) 2024-09-25 21:52:42 +08:00
Nick Fisher 877eae35cd chore(release): publish packages
- thermion_dart@0.2.0-dev.4.0
 - thermion_flutter_web@0.1.0-dev.4.0
 - thermion_flutter@0.2.0-dev.4.0
 - thermion_flutter_platform_interface@0.2.0-dev.4.0
 - thermion_flutter_ffi@0.2.0-dev.4.0
2024-09-25 21:51:19 +08:00
Nick Fisher 87846b68de fix!: (web/wasm) free pick callbacks on dispose 2024-09-25 21:50:31 +08:00
Nick Fisher 6581ee8a2a chore!: restructure viewer folders as libraries to only export the public interface 2024-09-25 21:49:15 +08:00
Nick Fisher 951064e657 chore(release): publish packages
- thermion_flutter@0.2.0-dev.3.0
2024-09-25 21:20:54 +08:00
Nick Fisher 68ebf945a5 chore: add path to dev deps 2024-09-25 21:20:34 +08:00
Nick Fisher 153817e859 chore!: (flutter) cleanup for pub.dev publishing 2024-09-25 21:20:04 +08:00
Nick Fisher ba0bc54fa7 fix!: remove EntityControllerMouseWidget (replace with GestureHandler) 2024-09-25 21:19:41 +08:00
Nick Fisher 9b99975017 chore(release): publish packages
- thermion_flutter@0.2.0-dev.2.0
2024-09-25 21:18:00 +08:00
Nick Fisher e6a6862ba4 chore: (flutter) web packaging fixes (use logger) 2024-09-25 21:17:38 +08:00
Nick Fisher b7d3e9191a chore: (flutter) web packaging fixes 2024-09-25 21:17:20 +08:00
Nick Fisher b461b2c5db chore: (flutter) web packaging fixes 2024-09-25 21:17:09 +08:00
Nick Fisher 8f7f48bcaa chore: (flutter) add package:web to flutter deps 2024-09-25 21:16:48 +08:00
Nick Fisher 7dc8e394f7 chore!: remove EntityListWidget - will replace with new Scene 2024-09-25 21:16:24 +08:00
Nick Fisher f5c8faa5c3 chore(release): publish packages
- thermion_dart@0.2.0-dev.1.0
 - thermion_flutter@0.2.0-dev.1.0
 - thermion_flutter_ffi@0.2.0-dev.1.0
 - thermion_flutter_platform_interface@0.2.0-dev.1.0
 - thermion_flutter_web@0.1.0-dev.1.0
2024-09-25 21:06:28 +08:00
Nick Fisher c84b4010d1 Merge pull request #68 from nmfisher/improvements
Improvements
2024-09-25 21:02:53 +08:00
Nick Fisher b720c1294f rename Android plugin class in pubspec.yaml 2024-09-25 19:27:38 +08:00
Nick Fisher d442ab5ce6 add namespace for build.gradle 2024-09-25 19:27:19 +08:00
Nick Fisher 61fdf300f4 add namespace for AndroidManifest.xml 2024-09-25 19:27:04 +08:00
Nick Fisher 4dabca9160 rename Android package/paths 2024-09-25 19:26:51 +08:00
Nick Fisher 85d6946645 (flutter) provide nicer implementation of FixedOrbitCameraRotationDelegate 2024-09-25 19:26:19 +08:00
Nick Fisher 4b1d8ce729 (flutter) update FreeFlight camera delegate 2024-09-24 14:24:29 +08:00
Nick Fisher c52b0084ce add PickDelegate to DelegateGestureHandler 2024-09-24 14:21:13 +08:00
Nick Fisher 8db725d8bd add PICK_ENTITY to GestureAction 2024-09-24 14:20:49 +08:00
Nick Fisher c67d1cbbc4 add background color tests 2024-09-24 14:20:33 +08:00
Nick Fisher 3ea4062e33 normalize direction in addLight 2024-09-24 14:20:14 +08:00
Nick Fisher 65e99b9212 set clearOptions to true 2024-09-23 13:51:18 +08:00
Nick Fisher e83193ba0d introduce stronger native typing, camera projection/culling methods, update tests 2024-09-21 11:36:41 +08:00
Nick Fisher 835338ef63 (flutter) use scheduleFrameCallback to invoke requestFrame to match Flutter/vsync 2024-09-21 10:22:49 +08:00
Nick Fisher 57872d2e40 rename from *FFI to *RenderThread, return bool from render() to check frame timings, update render loop to wait on condition variable, add requestFrame() method 2024-09-21 10:21:46 +08:00
Nick Fisher b5a7996769 add Dart Camera type 2024-09-21 10:18:36 +08:00
Nick Fisher ddbb4ec5c6 rename CameraPtr to TCamera and use named arguments for setCameraLensProjection 2024-09-20 18:31:20 +08:00
Nick Fisher 7cb3080596 move MaterialInstance methods to own class 2024-09-20 18:18:08 +08:00
Nick Fisher f6c91294aa rename setLayerEnabled to setLayerVisibility, add setVisibilityLayer method 2024-09-20 17:34:17 +08:00
Nick Fisher 412d333525 add PickDelegate 2024-09-20 14:54:18 +08:00
Nick Fisher 378dede02d add ThermionPickResult typedef 2024-09-20 14:53:48 +08:00
Nick Fisher 0e3db2635f update bindings 2024-09-20 14:53:34 +08:00
Nick Fisher 77147cbafd add setMaterialDepthWrite method 2024-09-20 14:53:16 +08:00
Nick Fisher 43e5fd7766 add setMaterialDepthWrite method 2024-09-20 14:53:06 +08:00
Nick Fisher fc3ca3d6b3 update tests 2024-09-20 14:08:47 +08:00
Nick Fisher 51f52bb71b update stub 2024-09-20 14:08:26 +08:00
Nick Fisher 033c3f632d add createUnlitMaterialInstance, setMaterialPropertyInt methods to viewer interface 2024-09-20 14:08:16 +08:00
Nick Fisher 6d862ef36a update bindings 2024-09-20 14:07:37 +08:00
Nick Fisher f816274fb9 replace some async methods with futures, fix setMaterialProperty4, update unproject, setMaterialPropertyInt, createUnlitMaterialInstance 2024-09-20 14:07:09 +08:00
Nick Fisher 0816286696 export geometry from thermion_dart 2024-09-20 14:05:14 +08:00
Nick Fisher b421df5e2f remove image.mat from LFS 2024-09-20 14:04:59 +08:00
Nick Fisher f6a136643d remove image.mat from LFS 2024-09-20 14:04:43 +08:00
Nick Fisher b5e278183a update built unlit material 2024-09-20 14:04:27 +08:00
Nick Fisher 8e85042e37 remove old default paramsf rom UnlitMaterialProvider 2024-09-20 14:04:11 +08:00
Nick Fisher f943756624 add setMaterialProperty for int, add create_unlit_material_instance, use double4 instead of float4 2024-09-20 14:03:50 +08:00
Nick Fisher 92814aed56 add setMaterialProperty for int, add create_unlit_material_instance 2024-09-20 14:03:29 +08:00
Nick Fisher e8a1b976e1 set default layer for loadGlb to 0,. add setMaterialProperty for int, add SceneManager::createUnlitMaterialInstance 2024-09-20 14:02:30 +08:00
Nick Fisher ef48dbce30 add base color/texture to unlit 2024-09-20 14:01:59 +08:00
Nick Fisher 196cc6b980 set default layer for loadGlb to 0,. add setMaterialProperty for int 2024-09-20 14:01:41 +08:00
Nick Fisher 1788c74d4c change float4 to double4 2024-09-20 14:01:02 +08:00
Nick Fisher 74e808d1dc update tests 2024-09-19 21:10:42 +08:00
Nick Fisher 72dacc5b21 update unproject texture to accept input texture 2024-09-19 21:10:28 +08:00
Nick Fisher ebdaf65b89 update unproject texture to accept input texture 2024-09-19 21:10:22 +08:00
Nick Fisher fa43149c98 update unproject texture to accept input texture 2024-09-19 21:10:10 +08:00
Nick Fisher e8ae7193ee update unproject texture to accept input texture 2024-09-19 21:09:23 +08:00
Nick Fisher aa21c0fb76 don't call clearBackgroundImage when setBackgroundImage is called (would deadlock) 2024-09-19 21:08:55 +08:00
Nick Fisher 10826466a4 set default material for geometry to baseColorIndex 0 2024-09-19 17:08:06 +08:00
Nick Fisher 3b2d7d8c47 depth pre-pass when projecting texture 2024-09-19 16:59:01 +08:00
Nick Fisher 212443cb8e add spot constructor 2024-09-19 13:44:17 +08:00
Nick Fisher 523141d54b add test cube texture image 2024-09-19 13:02:51 +08:00
Nick Fisher d8a0859f16 update test 2024-09-19 13:00:40 +08:00
Nick Fisher c70cc9abb5 add image methods to test helper 2024-09-19 12:53:44 +08:00
Nick Fisher 66b626e605 update showcase 2024-09-19 12:53:30 +08:00
Nick Fisher 4b28119318 test updates 2024-09-19 12:52:27 +08:00
Nick Fisher 666506aed0 widget updates 2024-09-19 12:52:16 +08:00
Nick Fisher a55f63a428 increase min Dart SDK to 3.5 for .address FFI accessors 2024-09-19 12:51:30 +08:00
Nick Fisher fb441e151c update ffigen with new headers 2024-09-19 12:51:09 +08:00
Nick Fisher 82d85386c0 fixes for createMaterialInstance 2024-09-19 12:50:57 +08:00
Nick Fisher 242b2f6faa gesture detector fixes 2024-09-19 09:19:23 +08:00
Nick Fisher 31d31dd583 ThermionViewer: add create/destroy materialinstance, add MaterialInstance property to createGeometry, priority/layer to loadGlbFromBuffer 2024-09-19 09:17:45 +08:00
Nick Fisher f6077012b1 widget cleanup 2024-09-19 09:16:45 +08:00
Nick Fisher 18bb45dcd8 use TMaterialInstance for FFI API, add priority/layer params to load_glb_from_buffer 2024-09-19 09:16:06 +08:00
Nick Fisher 10b919e4f4 add priority/layer to FFI viewer, use struct for model matrix, add createUbershaderMaterialInstance and destroyMaterialInstance 2024-09-19 09:15:31 +08:00
Nick Fisher 98cedf821c update bindings 2024-09-19 09:14:10 +08:00
Nick Fisher 729f72e768 use SceneManager::LAYERS enum for Overlay, set priority/layer in loadGlbFromBuffer, add create/destroy material instance 2024-09-19 09:12:57 +08:00
Nick Fisher d01861e949 use SceneManager::LAYERS enum for Overlay 2024-09-19 09:12:16 +08:00
Nick Fisher adec48f253 use SceneManager::LAYERS enum for gizmo 2024-09-19 09:12:02 +08:00
Nick Fisher 27a8ce18d5 add priority/layer to load_glb_from_buffer 2024-09-19 09:11:40 +08:00
Nick Fisher 4b740a9f5a native types, add create/destroy material instance, add SceneManager::LAYERS enum 2024-09-19 09:11:20 +08:00
Nick Fisher 0b34b4546e refactor: native types 2024-09-19 09:10:24 +08:00
Nick Fisher c17919cd97 refactor: native types 2024-09-19 09:09:42 +08:00
Nick Fisher 462f1f02bf refactor: move native types to own header, add methods for create/destroy material instance, add priority/layer to load_glb_from_buffer 2024-09-19 09:09:16 +08:00
Nick Fisher ddc433a126 refactor: Dart types 2024-09-19 09:07:35 +08:00
Nick Fisher ab649e860d update gitattr 2024-09-16 20:51:27 +08:00
Nick Fisher 676ddc3773 add texture methods (including unproject) 2024-09-16 20:51:14 +08:00
Nick Fisher 7d2cf3f91b don't store gizmo material in LFS 2024-09-16 11:25:21 +08:00
Nick Fisher 492d41d756 test update 2024-09-16 11:24:24 +08:00
Nick Fisher 191c2fd709 restructure viewer/types/helper folders, remove old WASM/web FFI interop, add SceneUpdated stream 2024-09-16 11:08:27 +08:00
Nick Fisher 027fc9ae04 update tests 2024-09-16 11:08:19 +08:00
Nick Fisher b73d0e1e96 restructure viewer/types/helper folders, remove old WASM/web FFI interop, add SceneUpdated stream 2024-09-16 11:07:54 +08:00
Nick Fisher 315f2b63b9 gesture handler & delegate improvements 2024-09-13 18:32:02 +08:00
Nick Fisher ad205679cb allow setting material property by name 2024-09-13 15:27:46 +08:00
Nick Fisher 6ef8d19e94 (flutter) export delegate gesture handler 2024-09-13 15:27:20 +08:00
Nick Fisher 6b0f25ca59 remove using namespace filament* 2024-09-13 15:27:01 +08:00
Nick Fisher 820d341f67 update bindings 2024-09-13 15:26:44 +08:00
Nick Fisher 70f904d54c allow setting material property by name 2024-09-13 15:20:45 +08:00
Nick Fisher aee607908d remove using namespace filament* 2024-09-13 15:18:01 +08:00
Nick Fisher c99c57e24d geometry receives/casts shadows by default 2024-09-13 14:52:20 +08:00
Nick Fisher 00d75be479 gesture handler improvements 2024-09-13 14:25:10 +08:00
Nick Fisher 3a9bd31919 remove superseded desktop/mobile gesture detector widget 2024-09-13 13:47:26 +08:00
Nick Fisher 51be1bce39 add pan camera implementation and fix velocity timer 2024-09-13 13:46:41 +08:00
Nick Fisher 822b8e14c1 add delegate-based implementations for gesture handlers 2024-09-13 13:30:00 +08:00
Nick Fisher 2ab30a7933 remove double sided from HighlightOverlay material 2024-09-13 11:09:09 +08:00
Nick Fisher 1be8a5e862 adjust gizmo size 2024-09-13 11:08:49 +08:00
Nick Fisher 98d61fa1b3 fix setCameraModelMatrix4 2024-09-13 10:36:24 +08:00
Nick Fisher 5b3d16a316 update bindings 2024-09-13 10:36:07 +08:00
Nick Fisher b6863828b4 initialize viewportDimensions to (0,0) in ThermionViewer 2024-09-13 10:35:57 +08:00
Nick Fisher 98fefd0e52 fix winding order in GeometryHelper 2024-09-13 10:35:33 +08:00
Nick Fisher d476d78e2b reduce size of gizmo 2024-09-13 10:35:13 +08:00
Nick Fisher 98113fb79f remove logging 2024-09-13 10:34:59 +08:00
Nick Fisher 90827ff012 culling fixes for HighlightOverlay 2024-09-13 10:34:47 +08:00
Nick Fisher 44078ba2e0 add v2 gesture handlers 2024-09-13 10:34:23 +08:00
Nick Fisher 866219ee2e add v2 gesture handlers 2024-09-13 10:34:12 +08:00
Nick Fisher d785bd6b7e chore!: rename controller to viewer in gesture detector widgets 2024-09-12 08:54:07 +08:00
Nick Fisher 3e4e6653a8 update material building in Makefile 2024-09-11 23:09:56 +08:00
Nick Fisher 8d250e2664 update test 2024-09-11 23:09:41 +08:00
Nick Fisher d455cea29e use opaque CameraPtr to set camera matrices/properties/etc 2024-09-11 23:09:27 +08:00
Nick Fisher 374e8eb910 rename getBoundingBox to getViewportBoundingBox and add camera methods 2024-09-11 23:08:07 +08:00
Nick Fisher 833fc74b4c rename getBoundingBox to getViewportBoundingBox 2024-09-11 23:07:47 +08:00
Nick Fisher 62417bfebd explicitly mark type of Camera for Gizmo 2024-09-11 23:07:29 +08:00
Nick Fisher abc9ecbeee use opaque CameraPtr to set camera matrices/properties/etc 2024-09-11 23:07:03 +08:00
Nick Fisher a1f71ab459 remove camera methods from FilamentViewer 2024-09-11 23:06:32 +08:00
Nick Fisher d123929fb4 remove camera methods from FilamentViewer 2024-09-11 23:06:06 +08:00
Nick Fisher 141827c59c use opaque CameraPtr to set camera matrices/properties/etc 2024-09-11 23:05:40 +08:00
Nick Fisher 9fbcc9edaf mark all ffigen functions as leaf 2024-09-11 23:04:57 +08:00
Nick Fisher 83d9c5be30 remove update_viewport_and_camera_projection_ffi 2024-09-11 23:04:36 +08:00
Nick Fisher 6aadbbc3d0 remove update_viewport_and_camera_projection_ffi 2024-09-11 23:04:27 +08:00
Nick Fisher d5bc865cf4 add matrix helper 2024-09-11 23:04:02 +08:00
Nick Fisher d766733489 update stubbed ThermionViewer methods 2024-09-11 23:03:53 +08:00
Nick Fisher f51c640d17 remove unused get_camera_position method 2024-09-11 20:01:21 +08:00
Nick Fisher 66f10b598a update stub ThermionViewer 2024-09-11 19:59:43 +08:00
Nick Fisher 59957650aa update bindings 2024-09-11 19:59:33 +08:00
Nick Fisher d43fbd8964 add loadGlbFromBuffer implementation to ThermionViewerFFI 2024-09-11 19:59:25 +08:00
Nick Fisher f5de4349bf add createGeometryWithNormals to SceneManager 2024-09-11 18:09:42 +08:00
Nick Fisher f67e1a021d add createGeometryWithNormals to SceneManager 2024-09-11 18:09:14 +08:00
Nick Fisher 33f2c5fbf7 add normals to CustomGeometry implementation 2024-09-11 18:08:48 +08:00
Nick Fisher 6a7bde930d add normals to CustomGeometry interface 2024-09-11 18:08:35 +08:00
Nick Fisher b827a2142b HighlightOverlay fixes 2024-09-11 18:08:13 +08:00
Nick Fisher 8bd2416bad don't set stencil highlight in Gizmo 2024-09-11 18:07:38 +08:00
Nick Fisher 3684eb248c add create_geometry_with_normals method 2024-09-11 18:07:17 +08:00
Nick Fisher 9077632d1b add create_geometry_with_normals method 2024-09-11 18:07:07 +08:00
Nick Fisher d40261ae29 add create_geometry_with_normals_ffi method, switch load_glb_from_buffer type to uint8_t for Dart leaf compat and add keepData param 2024-09-11 18:06:50 +08:00
Nick Fisher 77dbb574c7 add create_geometry_with_normals_ffi method, switch load_glb_from_buffer type to uint8_t for Dart leaf compat and add keepData param 2024-09-11 18:06:31 +08:00
Nick Fisher 89a660144e update test helpers 2024-09-11 18:05:36 +08:00
Nick Fisher 7554af5d41 (flutter) add experimental GestureHandler widget and decouple from ThermionGestureDetectorDesktop 2024-09-11 18:05:24 +08:00
Nick Fisher 4b742fea2d (flutter) add experimental GestureHandler widget and decouple from ThermionGestureDetectorDesktop 2024-09-11 18:05:18 +08:00
Nick Fisher a6c6cff8b6 add loadGlbFromBuffer method and normals param to ThermionViewer 2024-09-11 18:04:36 +08:00
Nick Fisher 5813753ef9 (flutter) set enablePicking to false by default in ThermionGestureDetector 2024-09-11 18:03:52 +08:00
Nick Fisher cf0dad2631 (flutter) add const FlutterWebOptions 2024-09-11 18:03:29 +08:00
Nick Fisher cfddb99a8b (flutter) add CameraOrientationWidget 2024-09-11 18:01:45 +08:00
Nick Fisher 845d5bf223 (flutter) add const constructor for flutter options 2024-09-11 18:01:33 +08:00
Nick Fisher dbbd972909 add GeometryHelper 2024-09-11 17:54:21 +08:00
Nick Fisher aba3ba24af (flutter) add CameraOrientationWidget 2024-09-11 17:54:08 +08:00
Nick Fisher 81c27dde9f feat: parent the cloned entity instance when setting stencil highlight 2024-09-08 13:55:25 +08:00
Nick Fisher 476b552fd0 feat: add getAncestor method 2024-09-08 13:52:33 +08:00
Nick Fisher 5c4d5d4b9d feat: add getAncestor method 2024-09-08 13:52:04 +08:00
Nick Fisher ae5ef2c286 update bindings 2024-09-07 18:01:39 +08:00
Nick Fisher b0f3c8a087 feat: set stencil highlight on gizmo attach 2024-09-07 18:01:30 +08:00
Nick Fisher 43fc7ffc65 update tests 2024-09-07 18:01:03 +08:00
Nick Fisher ee24fca20e feat: move createGeometry to SceneManager, add queueRelativePositionUpdateFromViewportVector and removeStencilHighlight 2024-09-07 18:00:50 +08:00
Nick Fisher a00fdbe042 chore: remove createGeometry method from FilamentViewer, set default view blend mode 2024-09-07 17:59:55 +08:00
Nick Fisher c2eb28a8f5 fix: properly destroy entities/material/etc in Gizmo on destruction, remove custom scene creation logic 2024-09-07 17:59:03 +08:00
Nick Fisher 4c6c20f3de feat: move HighlightOverlay to nested class, move createGeometry to SceneManager, add queueRelativePositionUpdateFromViewportVector 2024-09-07 17:57:38 +08:00
Nick Fisher b2ae8135c6 feat: add removeStencilHighlight, accept color param for setStencilHighlight, queuePositionUpdateFromViewportCoords to ThermionDartApi 2024-09-07 17:55:40 +08:00
Nick Fisher aecde97200 feat: add removeStencilHighlight, queuePositionUpdateFromViewportCoords to ThermionViewer 2024-09-07 17:54:42 +08:00
Nick Fisher 331caccc22 chore: delete old unlit_opaque material 2024-09-07 17:54:12 +08:00
Nick Fisher 63e2b74bb1 chore: rebuild unlit material 2024-09-07 17:53:55 +08:00
Nick Fisher 433f03161c feat: add scale parameter to unlit material 2024-09-07 17:53:41 +08:00
Nick Fisher 6ec84b6249 fix: add Fence to capture() and set stencil buffer by default 2024-09-06 13:03:51 +08:00
Nick Fisher 29b6a48816 test: add test cube.glb 2024-09-06 12:44:54 +08:00
Nick Fisher 00755fd417 chore: remove old materials Makefile 2024-09-06 12:44:40 +08:00
Nick Fisher 9c5156e41a feat: add flag for keepData for gltf instancing, add highlightScene, add stencilHighlight method 2024-09-06 12:36:16 +08:00
Nick Fisher 226c45ee2e chore: minor widget fixes 2024-09-05 22:22:25 +08:00
Nick Fisher e04390b2fe feat: add grid material 2024-09-05 22:21:19 +08:00
Nick Fisher 9a87eb4d9b feat: allow passing null options to ThermionWidget 2024-09-05 22:21:09 +08:00
Nick Fisher 2284d9d081 feat: grid uses own material 2024-09-05 22:20:27 +08:00
Nick Fisher cf61369a8d chore: clean up old commented code 2024-09-05 22:20:11 +08:00
Nick Fisher 4e14bd2396 fix: ignore pick results directly on axis 2024-09-05 22:19:54 +08:00
Nick Fisher 0798d5c071 feat: add grid material 2024-09-05 22:19:27 +08:00
Nick Fisher 80d5b1d23f feat: expose setLightDirection and setLightPosition 2024-09-05 22:18:54 +08:00
Nick Fisher 0bd87288d1 chore: update binding 2024-09-05 17:53:24 +08:00
Nick Fisher 51e06c2eb9 chore: (js) stub missing methods 2024-09-05 17:52:53 +08:00
Nick Fisher b29663923d chore: (wasm) add missing interop methods 2024-09-05 17:52:40 +08:00
Nick Fisher f57a323cda feat: (flutter) (web) if importCanvasAsWidget is false, render transparency 2024-09-05 17:52:19 +08:00
Nick Fisher 03ffe85113 chore: stub ThermionWidget methods 2024-09-05 17:51:36 +08:00
Nick Fisher 4edc8aa85b feat: (flutter) move DPR calculation to resizeTexture and add createViewerWithOptions method to ThermionFlutterFFI 2024-09-05 17:51:22 +08:00
Nick Fisher 04ecb4d56f fix: (flutter) pass ThermionFlutterOptions to ThermionWidget, use dpr for resizeTexture, delete unnecessary TransparencyPainter class 2024-09-05 17:49:02 +08:00
Nick Fisher 0ac0a92024 feat: add createViewerWithOptions to ThermionFlutterPlugin and mark createViewer as deprecated 2024-09-05 17:47:54 +08:00
Nick Fisher ae1e14ddb7 feat: add createViewerWithOptions to ThermionFlutterPlugin and mark createViewer as deprecated 2024-09-05 17:47:41 +08:00
Nick Fisher aa246ab63a feat: (flutter) (web) use options to determine whether to create canvas, and set fixed position + offset 2024-09-05 17:45:49 +08:00
Nick Fisher d4350d7d99 test: update viewport gizmo test 2024-09-05 17:44:18 +08:00
Nick Fisher f07fe6084a chore: (flutter) export platform interface from thermion_flutter package 2024-09-05 17:43:58 +08:00
Nick Fisher 4e29055a20 chore: stub new methods 2024-09-05 17:43:35 +08:00
Nick Fisher 6d0c06a853 doc: pixelRatio 2024-09-05 17:43:19 +08:00
Nick Fisher abe6e1fcb8 feat: add ThermionFlutterOptions classes, rename interface parameter for offsetTop and ensure pixelRatio is passed to resizeTexture 2024-09-05 17:43:04 +08:00
Nick Fisher 683105c4f7 fix: emscripten export visibility for add_light 2024-09-05 17:42:17 +08:00
Nick Fisher 6f2331582c chore: use float instead of float32_t in FilamentViewer 2024-09-05 17:41:55 +08:00
Nick Fisher f0f97e310c chore: add nested PickCallbackHandler to Gizmo 2024-09-05 17:41:24 +08:00
Nick Fisher 2331f2c31a chore: update Makefile to add missing headers to resgen files 2024-08-27 21:51:29 +08:00
Nick Fisher 704b7f6734 fix: (flutter/web) use window.devicePixelRatio for viewport 2024-08-27 21:51:09 +08:00
Nick Fisher 7ac7ae43ab fix: (wasm) use correct coords for pick, free memory correctly, keep pixelratio copy 2024-08-27 21:50:07 +08:00
Nick Fisher d52b23d6b5 fix: (flutter) desktop gesture detector changes for new Gizmo methods 2024-08-27 21:49:28 +08:00
Nick Fisher 8b17916cd9 chore: Dart Gizmo class cleanup 2024-08-27 21:49:04 +08:00
Nick Fisher 4a0f4e3ac8 feat: add setGizmoVisibility/pickGizmo methods to ThermionViewer 2024-08-27 21:48:27 +08:00
Nick Fisher 85116f43a2 feat: remove gizmo view references, exclude gizmo entities from picking, add createIbl 2024-08-27 21:47:56 +08:00
Nick Fisher 3ecb8920ea feat: createIbl 2024-08-27 21:47:02 +08:00
Nick Fisher 8923d97129 chore: init SceneManager pointers to nullptr 2024-08-27 21:46:47 +08:00
Nick Fisher 375e1cc887 fix: add more nan checks for gizmo manipulation 2024-08-27 21:46:21 +08:00
Nick Fisher 78dcbc8bb9 feat: expose API methods for create_ibl, pick/set gizmo visibility 2024-08-27 21:45:49 +08:00
Nick Fisher a3f7b98bf7 feat: create transparent overlay for gizmo for easier picking 2024-08-27 21:45:19 +08:00
Nick Fisher 12b61e8767 feat: rescale gizmo based on distance from camera 2024-08-27 16:54:40 +08:00
Nick Fisher 0e3b014c2c feat: rescale gizmo based on distance from camera 2024-08-27 16:50:54 +08:00
Nick Fisher 10db8c39f3 fix: add check for nan NDC coordinates for viewport translation 2024-08-25 21:54:08 +08:00
Nick Fisher 371bcb3706 fix stub methods 2024-08-24 16:28:12 +08:00
Nick Fisher 714c575409 add implementations to JS bridge/shim classes 2024-08-24 16:26:05 +08:00
Nick Fisher c0941e3b7f add missing methods to wasm viewer 2024-08-24 16:25:37 +08:00
Nick Fisher 026acb7467 feat: highlight gizmo on hover 2024-08-24 16:25:17 +08:00
Nick Fisher 3c05cc6a43 add implementations to FFI viewer 2024-08-24 16:24:59 +08:00
Nick Fisher f1a2926bdf fix!: (flutter) pass pixelRatio to createTexture 2024-08-24 16:24:06 +08:00
Nick Fisher 88e8a138ac (flutter) (web) initialize viewer to 1x1 then resize on createTexture 2024-08-24 16:23:54 +08:00
Nick Fisher 53d0301828 feat!: (flutter) (web) upgrade package:web dep to 1.0.0 2024-08-24 16:23:00 +08:00
Nick Fisher b10fec1963 fix!: (flutter) pass pixelRatio to createTexture 2024-08-24 16:22:31 +08:00
Nick Fisher 08e1eb7778 feat: expose setLayerEnabled, viewportDimensions and getCameraFov on ThermionView 2024-08-24 16:22:12 +08:00
Nick Fisher d6713c090c stub out new methods 2024-08-24 16:21:35 +08:00
Nick Fisher 497ecbf881 fix!: (flutter) pass pixelRatio to createTexture 2024-08-24 16:20:06 +08:00
Nick Fisher 6f7d03737e fix!: (flutter) pass pixelRatio to createTexture 2024-08-24 16:19:50 +08:00
Nick Fisher ad60c6bbe1 chore: update bindings 2024-08-24 16:19:07 +08:00
Nick Fisher 92fdda722b chore: add viewport test 2024-08-24 16:18:53 +08:00
Nick Fisher 3cc876f972 feat: layers, grid 2024-08-24 16:18:23 +08:00
Nick Fisher 7d1e706045 feat: layers, grid 2024-08-24 16:18:12 +08:00
Nick Fisher 11756fcedd feat: ignore grid overlay and gizmo center when picking, implement highlighting 2024-08-24 16:17:34 +08:00
Nick Fisher 2e1f2cd56d feat: SceneManager updates (setLayer, add grid, queueRelativePositionUpdateWorld 2024-08-24 16:02:54 +08:00
Nick Fisher c08611b2c3 feat: expose set_layer_enabled, get_camera_fov and queue_relative_position_updateg_world_axis to ThermionDartApi.h 2024-08-24 16:02:06 +08:00
Nick Fisher f87f89427d feat: add getCameraFov to FilamentViewer 2024-08-24 16:01:03 +08:00
Nick Fisher c3319ebbf3 feat: add new grid overlay files to web CmakeLists 2024-08-24 16:00:15 +08:00
Nick Fisher f7b765c5d0 chore: rebuild materials 2024-08-24 15:59:55 +08:00
Nick Fisher 9512b74008 fix: update material output path in Makefile 2024-08-24 15:59:36 +08:00
Nick Fisher 5a3517f953 add grid overlay 2024-08-24 15:59:04 +08:00
Nick Fisher 731c4981c9 use inactive/active color gizmo 2024-08-24 15:58:49 +08:00
Nick Fisher 8f20a8a859 chore: don't use shader to overlay gizmo 2024-08-24 15:21:36 +08:00
Nick Fisher 7693a0fe14 feat: re-implement (native) Gizmo class, expose preserveScaling parameter for setParent, add methods for getting viewport bounding box from renderable entity 2024-08-22 18:04:06 +08:00
Nick Fisher 98c3676fdf fix: (web) add emscripten guards for flushAndWait call when swapchain destroyed 2024-08-21 17:18:37 +08:00
Nick Fisher d7664a9746 feat!: (web) (flutter) create canvas when createViewer is called (no longer need to manually add canvas element to web HTML) 2024-08-21 17:17:58 +08:00
Nick Fisher d868fd6970 feat: add capture() function and expose viewportDimensions on ThermionViewer (allows easier saving of captured images to PNG) 2024-08-21 14:33:48 +08:00
Nick Fisher 300396b97e feat: (web) allow table growth in emscripten module for passing C-style callback function pointers 2024-08-21 14:30:17 +08:00
Nick Fisher 1d8faa70a1 feat: (web) add capture() method and missing camera navigation controls 2024-08-21 14:29:40 +08:00
Nick Fisher 1051b1bb0e feat!: resize canvas on web 2024-08-17 11:43:43 +08:00
Nick Fisher c367824041 feat!: update web/http dependencies 2024-08-17 11:43:03 +08:00
Nick Fisher 81cedf0d43 feat: download WASM module directly on web (no need to embed in index.html any more) and expose updateViewportAndCameraProjection 2024-08-17 11:42:25 +08:00
Nick Fisher 16c6203b97 feat: add startOffset parameter to gltf playAnimation 2024-07-29 16:13:45 +08:00
Nick Fisher 3e1d785f58 Merge pull request #65 from nmfisher/develop
Documentation
2024-07-23 09:41:23 +08:00
Nick Fisher b7c0eeb7b4 chore(release): publish packages
- thermion_dart@0.1.3
 - thermion_flutter_ffi@0.1.0+12
 - thermion_flutter_web@0.0.3
 - thermion_flutter_platform_interface@0.1.0+11
 - thermion_flutter@0.1.1+13
2024-07-23 09:40:05 +08:00
Nick Fisher fd31b4dcad docs: rename examples to showcase 2024-07-23 09:38:26 +08:00
Nick Fisher 41bf9ededa feat: add clearMorphAnimationData function 2024-07-23 09:38:26 +08:00
Hannes Hultergård d745712650 Add example files that can be parsed by pub.dev 2024-07-23 09:38:26 +08:00
Nick Fisher 1df732be7c chore(release): publish packages
- thermion_flutter_ffi@0.1.0+11
 - thermion_flutter@0.1.1+12
2024-07-23 09:38:26 +08:00
Nick Fisher 8b413eca52 fix: add logging dependency 2024-07-23 09:38:25 +08:00
Nick Fisher 3597077d39 chore(release): publish packages
- thermion_dart@0.1.2
 - thermion_flutter_ffi@0.1.0+10
 - thermion_flutter_web@0.0.2
 - thermion_flutter@0.1.1+11
 - thermion_flutter_platform_interface@0.1.0+10
2024-07-23 09:38:25 +08:00
Nick Fisher 7704a06601 fix: manually remove leading slash for compiler path on Windows when building for Android 2024-07-23 09:38:25 +08:00
Paul Ampadu 7b3ad027bf Update quickstart.mdx 2024-07-23 09:38:25 +08:00
Nick Fisher cde3af08aa fix: web/JS bool checks need to compare to int 2024-07-23 09:38:25 +08:00
Nick Fisher 7418fb867d feat: allow passing assetPathPrefix to ThermionViewerWasm to account for Flutter build asset paths 2024-07-23 09:38:25 +08:00
Nick Fisher ce71e09f65 fix: shadow JS<->WASM bridge methods 2024-07-23 09:38:25 +08:00
Nick Fisher 7a362411b1 Merge pull request #56 from payl-ampa/patch-2
docs: correct link to windows page in quickstart page
2024-07-05 10:26:21 +10:00
Paul Ampadu e95dfe4671 Update quickstart.mdx 2024-07-04 10:59:27 -07:00
Nick Fisher e7b79bb6b9 fix: web/JS bool checks need to compare to int 2024-07-04 21:49:13 +08:00
Nick Fisher 59bc309f5b feat: allow passing assetPathPrefix to ThermionViewerWasm to account for Flutter build asset paths 2024-07-04 16:29:56 +08:00
Nick Fisher d2fb40f317 fix: shadow JS<->WASM bridge methods 2024-07-04 16:29:08 +08:00
Nick Fisher 5dec13f00b chore(release): publish packages
- thermion_dart@0.1.1+5
 - thermion_flutter_web@0.0.1+9
 - thermion_flutter@0.1.1+10
 - thermion_flutter_platform_interface@0.1.0+9
 - thermion_flutter_ffi@0.1.0+9
2024-07-04 14:44:04 +08:00
Nick Fisher 7464c05483 Merge pull request #55 from nmfisher/develop
feat: shadows, web, docs, image material
2024-07-04 16:42:25 +10:00
Nick Fisher 7b97b2e6c3 save fetched resources to IndexedDB on web 2024-07-04 14:19:37 +08:00
Nick Fisher 168f46cf56 add shadow methods to wasm/js viewers 2024-07-04 14:19:04 +08:00
Nick Fisher 5622b0ce9f chore(release): publish packages
- thermion_dart@0.1.1+4
 - thermion_flutter_web@0.0.1+8
 - thermion_flutter@0.1.1+9
 - thermion_flutter_platform_interface@0.1.0+8
 - thermion_flutter_ffi@0.1.0+8
2024-07-02 16:18:17 +08:00
Nick Fisher c7a0b2f5cc fix: defer creating image entity/material/etc until actually requested
feat: expose shadow options
2024-07-02 16:17:36 +08:00
Nick Fisher 7546b2a6c5 Merge pull request #51 from payl-ampa/patch-1
Update quickstart.mdx - Simple link fix
2024-06-30 16:15:39 +10:00
Paul Ampadu e363c82f2d Update quickstart.mdx
Simple link fix
2024-06-29 00:13:59 -07:00
Nick Fisher b9643dbd94 Merge pull request #49 from nmfisher/develop
docs: Update docs
2024-06-28 00:03:18 +10:00
Nick Fisher 2664e08eb3 update README 2024-06-27 21:57:23 +08:00
Nick Fisher 733ba7d439 docs: add discord link 2024-06-27 21:52:34 +08:00
Nick Fisher 2255be3a86 Merge pull request #48 from nmfisher/develop
docs: update docs
2024-06-27 23:47:10 +10:00
Nick Fisher 03f8e2e353 docs: update docs 2024-06-27 21:46:06 +08:00
Nick Fisher be1bf3f3ca Merge pull request #47 from nmfisher/develop
docs: update docs with sidebar links
2024-06-27 23:36:22 +10:00
Nick Fisher 5f1334660e docs: update docs with sidebar links 2024-06-27 21:35:44 +08:00
Nick Fisher ec381f43ef Merge pull request #46 from nmfisher/develop
Documentation
2024-06-27 23:16:10 +10:00
Nick Fisher eba843535b docs: update quickstart 2024-06-27 21:15:13 +08:00
Nick Fisher 4fa286bd60 docs: update links 2024-06-27 21:14:23 +08:00
Nick Fisher 7293b0f8dd Merge pull request #45 from nmfisher/develop
Documentation
2024-06-27 23:13:20 +10:00
Nick Fisher 0279ee1985 doc: update head README 2024-06-27 21:12:16 +08:00
Nick Fisher 83053c60f9 Merge pull request #44 from nmfisher/develop
Merge develop
2024-06-27 23:10:51 +10:00
Nick Fisher ad28e5484c chore(release): publish packages
- thermion_dart@0.1.1+3
 - thermion_flutter@0.1.1+8
 - thermion_flutter_web@0.0.1+7
 - thermion_flutter_platform_interface@0.1.0+7
 - thermion_flutter_ffi@0.1.0+7
2024-06-27 21:06:46 +08:00
Nick Fisher b91d629b90 docs: update homepage links and minor documentation updates 2024-06-27 21:05:44 +08:00
Nick Fisher 96df3a0f35 chore: remove binary filamat files from repo 2024-06-26 15:50:22 +10:00
Nick Fisher de8fb5e2d0 docs: remove old GETTING_STARTED and update quickstart with new repo link 2024-06-26 15:49:11 +10:00
Nick Fisher 51d79c7626 fix: bump ffigen dependency version & regenerate bindings (and revert to ffi.Int rather than ffi.Int32) 2024-06-26 12:46:56 +08:00
Nick Fisher f7c22d2480 docs: update quickstart 2024-06-26 12:46:56 +08:00
Nick Fisher b117a4a19c chore: move examples to separate repository 2024-06-26 12:46:56 +08:00
Nick Fisher 4955837518 chore(release): publish packages
- thermion_dart@0.1.1+2
 - thermion_flutter@0.1.1+7
 - thermion_flutter_ffi@0.1.0+6
 - thermion_flutter_platform_interface@0.1.0+6
 - thermion_flutter_web@0.0.1+6
2024-06-26 00:12:32 +08:00
Nick Fisher 0e9cf76592 chore(release): publish packages
- thermion_dart@0.1.1-dev.0+2
 - thermion_flutter@0.1.1-dev.0+7
 - thermion_flutter_platform_interface@0.1.0-dev.0+6
 - thermion_flutter_web@0.0.1-dev.0+6
 - thermion_flutter_ffi@0.1.0-dev.0+6
2024-06-26 00:10:56 +08:00
Nick Fisher 368a341b76 docs: update custom native_toolchain ref for Windows 2024-06-26 01:59:06 +10:00
Nick Fisher 5cc41a9115 docs: update 2024-06-26 01:58:35 +10:00
Nick Fisher 368ce83380 rename thermion_filament namespace to thermion_flutter for Windows 2024-06-26 01:51:31 +10:00
Nick Fisher 683b79c9a0 fix: add ResourceBuffer header directly to Windows build so I don't have to fiddle around getting the CMake path right 2024-06-26 01:50:53 +10:00
Nick Fisher 81be5e25f7 fix: revert to std::thread (pthreads not easily available on Windows) 2024-06-26 01:50:22 +10:00
Nick Fisher e8e1684694 fix: on Windows, pass static libs via -l rather than custom linkWith property so build.dart stays compatible between published & custom versions 2024-06-26 01:49:37 +10:00
Nick Fisher d13ecde7b6 update Windows docs 2024-06-26 01:48:08 +10:00
Nick Fisher 08c3af405e Merge pull request #43 from nmfisher/develop
Develop
2024-06-25 21:16:31 +10:00
Nick Fisher 0571f3e653 docs: add Android & Windows pages 2024-06-25 19:04:18 +08:00
Nick Fisher f351512a78 Merge pull request #42 from Hannnes1/license
Add root LICENSE file
2024-06-25 10:48:00 +10:00
Hannes Hultergård 315b898d7c Add root LICENSE file 2024-06-24 08:28:42 +02:00
Nick Fisher c635bd3813 chore(release): publish packages
- thermion_dart@0.1.1+1
 - thermion_flutter@0.1.1+6
 - thermion_flutter_web@0.0.1+5
 - thermion_flutter_platform_interface@0.1.0+5
 - thermion_flutter_ffi@0.1.0+5
2024-06-22 10:29:41 +08:00
Nick Fisher b4f9a5c2af docs: update with links to playground 2024-06-22 10:29:08 +08:00
Nick Fisher 0222ba2d6c chore(release): publish packages
- thermion_dart@0.1.1
2024-06-21 17:18:43 +08:00
902 changed files with 210142 additions and 160436 deletions
-395
View File
@@ -1,395 +0,0 @@
thermion_dart/native/lib/macos/debug/libbackendtest_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libfilabridge.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libgltfio_core.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libibl-lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libcamutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libgeometry_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libbackend.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libuberarchive.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libbasis_transcoder.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libgeometry.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libmikktspace.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libzstd.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libcivetweb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libsdl2.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libmeshoptimizer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libmathio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libbasis_transcoder.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libfilament-iblprefilter.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libmatdbg_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libspirv-cross-msl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libtinyexr.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libzstd.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libSPIRV-Tools.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libgeometry.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libimageio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libOGLCompiler.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libSPIRV-Tools-diff.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libfilamat_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libfilameshio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libmathio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libassimp.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libmatlang.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libibl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libmikktspace.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libmatdbg_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/swift/ThermionDartTexture.h filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libfilamat_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libfilament.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libibl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libstb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libuberzlib.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libbasis_encoder.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libimgui.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libdracodec.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libimageio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libfilament.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libstb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libbackend_test.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libgetopt.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libgtest.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libfilabridge.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libmatdbg_resources.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libuberarchive.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libfilaflat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libSPIRV.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libpng.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libvkshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libimage.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libmatdbg_resources.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libsuzanne-resources.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libfilamat_lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libgeometry_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libsmol-v.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libmath.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libgeometry.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libmeshoptimizer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libpng16.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libbenchmark_main.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libbluegl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libuberzlib.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/swift/build.sh filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libdracodec.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libibl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libktxreader.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libbluegl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libfilaflat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libpng.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libbluevk.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libfilaflat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libfilamat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libglslang.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libcivetweb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libktxreader.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libbenchmark.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libgltf-demo-resources.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libgltfio_core.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libSPIRV-Tools-lint.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libdracodec.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libfilagui.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libmikktspace.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libsample-resources.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libOSDependent.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libspirv-cross-glsl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libgltfio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libimage.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libpng.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libgltfio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libmatdbg.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libspirv-cross-core.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libstb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libfilamat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libfilamat_lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libfilamat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libviewer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libvkshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libcamutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libbackend.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libfilagui.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libmath.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libviewer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/swift/libdartfilamenttexture.dylib filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libfilament-iblprefilter.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libuberzlib.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libviewer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libfilamat_lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libfilameshio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libcivetweb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libbasis_transcoder.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libSPIRV-Tools-link.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libvkshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libz.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libbluevk.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libtinyexr.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libzstd.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libcamutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libfilabridge.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libmatdbg.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libimage.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libsmol-v.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libgltfio_core.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libsmol-v.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libfilament-iblprefilter.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libfilament.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libmeshoptimizer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libbackend.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libibl-lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/libktxreader.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libfilameshio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/swift filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libtinyexr.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libSPIRV-Tools-reduce.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/debug/libuberarchive.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libibl-lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/ios/libimageio.a filter=lfs diff=lfs merge=lfs -text
materials/Makefile filter=lfs diff=lfs merge=lfs -text
materials/gizmo.filamat filter=lfs diff=lfs merge=lfs -text
materials/gizmo.mat filter=lfs diff=lfs merge=lfs -text
materials/image.filamat filter=lfs diff=lfs merge=lfs -text
materials/image.mat filter=lfs diff=lfs merge=lfs -text
materials/unlit_fade.mat filter=lfs diff=lfs merge=lfs -text
materials/unlit_opaque.mat filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libktxreader.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libcamutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libuberzlib.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libdracodec.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libbackend.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libibl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libmikktspace.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libzstd.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libzstd.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libfilament.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libmeshoptimizer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libvkshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libbluevk.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libgeometry.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libgltfio_core.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libstb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libgltfio_core.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libimage.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libvkshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64 filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libfilameshio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libcivetweb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libfilabridge.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libuberzlib.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libfilamat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libuberarchive.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libbackend.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libimage.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libsmol-v.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libbasis_transcoder.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libdracodec.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libfilament.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libfilament-iblprefilter.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libfilamat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libibl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libvkshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libfilaflat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libibl-lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libmeshoptimizer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libsmol-v.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libfilaflat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libfilaflat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libzstd.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libbackend.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libdracodec.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libcamutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libfilament.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libuberzlib.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libbluevk.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libcamutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libsmol-v.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libcivetweb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libktxreader.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libbasis_transcoder.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libgltfio_core.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libfilaflat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libuberarchive.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libfilameshio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libbluevk.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libfilabridge.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libgltfio_core.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libibl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libmikktspace.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libzstd.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libfilameshio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libfilament-iblprefilter.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libstb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libfilament-iblprefilter.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libimage.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libfilament.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libgeometry.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libdracodec.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libbasis_transcoder.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libgeometry.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libuberarchive.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libbluevk.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libfilabridge.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libuberzlib.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libimage.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libviewer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libibl-lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86 filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libibl-lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libuberarchive.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libktxreader.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libfilament-iblprefilter.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libfilameshio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libstb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/arm64-v8a/libgeometry.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libviewer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libktxreader.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libmeshoptimizer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libibl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libmeshoptimizer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libfilamat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libibl-lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libvkshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libcamutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libcivetweb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libsmol-v.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libfilabridge.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libmikktspace.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libmikktspace.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libbackend.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libfilamat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libviewer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/armeabi-v7a/libviewer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libcivetweb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86_64/libshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libbasis_transcoder.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/android/x86/libstb.a filter=lfs diff=lfs merge=lfs -text
thermion_flutter_federated/thermion_flutter/example/web/thermion_dart.wasm filter=lfs diff=lfs merge=lfs -text
thermion_flutter_federated/thermion_flutter/example/web/main.unopt.wasm filter=lfs diff=lfs merge=lfs -text
thermion_flutter_federated/thermion_flutter/example/web/main.wasm filter=lfs diff=lfs merge=lfs -text
thermion_flutter_federated/thermion_flutter/example/web/thermion_dart.js filter=lfs diff=lfs merge=lfs -text
thermion_flutter_federated/thermion_flutter/example/web/thermion_dart.worker.js filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libmatdbg_resources.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libuberarchive.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libbasis_transcoder.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libcivetweb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libgltfio_core.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libimage.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libviewer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libvkshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libfilagui.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libfilamat_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libshaders.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libtinyexr.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libmeshoptimizer.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libcamutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libfilamat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libibl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libmikktspace.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libuberzlib.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libutils.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libzstd.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libfilaflat.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libfilamat_lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libgltfio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libimageio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libgeometry_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libbluevk.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libdracodec.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libfilabridge.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libfilameshio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libktxreader.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libmatdbg.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libmathio.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libsmol-v.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libbackend.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libbluegl.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libfilament.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libgeometry.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libstb.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libpng.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libfilament-iblprefilter.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libibl-lite.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libmatdbg_combined.a filter=lfs diff=lfs merge=lfs -text
thermion_dart/native/lib/macos/release/libmath.a filter=lfs diff=lfs merge=lfs -text
examples/assets/default_env/default_env_skybox.ktx filter=lfs diff=lfs merge=lfs -text
examples/assets/shapes/shapes.gltf filter=lfs diff=lfs merge=lfs -text
examples/assets/3.glb filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/Boden_baseColor.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet.bin filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet.gltf filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_occlusionRoughnessMetallic1.png filter=lfs diff=lfs merge=lfs -text
examples/assets/default_env filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/Boden_metallicRoughness.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_baseColor3.png filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_occlusionRoughnessMetallic4.png filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/README.md filter=lfs diff=lfs merge=lfs -text
examples/assets/default_env/default_env_ibl.ktx filter=lfs diff=lfs merge=lfs -text
examples/assets/shapes/shapes.blend filter=lfs diff=lfs merge=lfs -text
examples/assets/shapes/shapes.glb filter=lfs diff=lfs merge=lfs -text
examples/assets/2.glb filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_normal.png filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_normal1.png filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_occlusionRoughnessMetallic3.png filter=lfs diff=lfs merge=lfs -text
examples/assets/background.ktx filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/scene.bin filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_baseColor4.png filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_normal4.png filter=lfs diff=lfs merge=lfs -text
examples/assets/shapes/shapes.blend1 filter=lfs diff=lfs merge=lfs -text
examples/assets/solidcolor.mat filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/body_baseColor.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/body_emissive.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_occlusionRoughnessMetallic.png filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_occlusionRoughnessMetallic2.png filter=lfs diff=lfs merge=lfs -text
examples/assets/solidcolor.filamat filter=lfs diff=lfs merge=lfs -text
examples/assets/1.glb filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/scene.gltf filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_normal2.png filter=lfs diff=lfs merge=lfs -text
examples/assets/shapes/texture_test.png filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_normal3.png filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/Boden_normal.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/body_normal.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/material_metallicRoughness.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_baseColor.png filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_baseColor2.png filter=lfs diff=lfs merge=lfs -text
examples/assets/shapes filter=lfs diff=lfs merge=lfs -text
examples/assets/shapes/shapes.bin filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/body_metallicRoughness.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/material_baseColor.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/BusterDrone/textures/material_normal.jpg filter=lfs diff=lfs merge=lfs -text
examples/assets/FlightHelmet/FlightHelmet_baseColor1.png filter=lfs diff=lfs merge=lfs -text
examples/assets/background.png filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/macos/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/assets/shapes/shapes.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/app/intermediates/assets/debug/flutter_assets/assets/2.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/app/intermediates/assets/debug/flutter_assets/assets/3.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/macos/Build/Products/Debug/example.app/Contents/Frameworks/App.framework/Versions/A/Resources/flutter_assets/assets/shapes/shapes.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/app/intermediates/assets/debug/flutter_assets/assets/1.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/app/intermediates/flutter/debug/flutter_assets/assets/shapes/shapes.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/macos/Build/Products/Debug/example.app/Contents/Frameworks/App.framework/Versions/A/Resources/flutter_assets/assets/1.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/macos/Build/Products/Debug/example.app/Contents/Frameworks/App.framework/Versions/A/Resources/flutter_assets/assets/3.glb filter=lfs diff=lfs merge=lfs -text
thermion_dart/test/assets/shapes.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/app/intermediates/flutter/debug/flutter_assets/assets/1.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/macos/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/assets/1.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/app/intermediates/flutter/debug/flutter_assets/assets/3.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/macos/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/assets/2.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/macos/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/assets/3.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/macos/Build/Products/Debug/example.app/Contents/Frameworks/App.framework/Versions/A/Resources/flutter_assets/assets/2.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/app/intermediates/assets/debug/flutter_assets/assets/shapes/shapes.glb filter=lfs diff=lfs merge=lfs -text
examples/flutter/example/build/app/intermediates/flutter/debug/flutter_assets/assets/2.glb filter=lfs diff=lfs merge=lfs -text
+82
View File
@@ -0,0 +1,82 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Dart
on:
push:
branches: [ "develop" ]
pull_request:
branches: [ "develop" ]
jobs:
thermion_dart:
name: thermion_dart
runs-on: self-hosted
defaults:
run:
working-directory: thermion_dart # Adjust this path
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: flutter pub get # even though this is a Dart package, it has as dev_dependency on objective_c for testing which for some reason has a Flutter dependency
# Uncomment this step to verify the use of 'dart format' on each commit.
# - name: Verify formatting
# run: dart format --output=none --set-exit-if-changed .
#- name: Analyze project source
# run: dart analyze
- name: Build and Test
shell: cmd
run: dart --enable-experiment=native-assets test
# Upload logs on failure
- name: Upload logs
if: failure() || steps.build.outcome == 'failure'
uses: actions/upload-artifact@v4
with:
name: build-logs
path: |
D:\a\thermion\thermion\thermion_dart\.dart_tool\thermion_dart\log\build.log
# /Users/runner/work/thermion/thermion/thermion_dart//.dart_tool/thermion_dart/log/build.log
retention-days: 5
# Capture crash dumps if they exist
- name: Collect crash dumps
if: failure()
uses: actions/upload-artifact@v3
with:
name: crash-dumps
path: |
${{ runner.temp }}/*.dmp
${{ env.LOCALAPPDATA }}/Temp/*.dmp
${{ env.LOCALAPPDATA }}/CrashDumps/*.dmp
# thermion_flutter:
# name: thermion_flutter
# runs-on: macos-13
# defaults:
# run:
# working-directory: thermion_flutter/thermion_flutter # Adjust this path
# steps:
# - uses: actions/checkout@v4
# - uses: dart-lang/setup-dart@9a04e6d73cca37bd455e0608d7e5092f881fd603
# - name: Install dependencies
# run: dart pub get
# # Uncomment this step to verify the use of 'dart format' on each commit.
# # - name: Verify formatting
# # run: dart format --output=none --set-exit-if-changed .
# - name: Analyze project source
# run: dart analyze
# - name: Run tests
# run: dart --enable-experiment=native-assets test
+1619
View File
File diff suppressed because it is too large Load Diff
-38
View File
@@ -1,38 +0,0 @@
# Thermion
Thermion is a package for creating 3D applications with Dart and/or Flutter.
## Overview
### Packages 
The two most relevant Thermion packages are:- [thermion_dart], which contains all the code needed to create a viewer, - [thermion_flutter], which is a Flutter-only package that contains all the logic necessary to create/embed a rendering surface inside a Flutter app. 
By decoupling the Flutter-specific components from the Dart-only components, Thermion can be used for rendering in both Flutter and non-Flutter applications. As far as the latter is concerned, Thermion ships with examples for  Javascript/WASM/HTML, and for CLI/headless mode on MacOS. 
### pubspec.yaml
If you are creating a Flutter application, add [thermion_flutter] as a dependency to your `pubspec.yaml`.
```$ cd /path/to/your/flutter/project$ flutter pub add thermion_flutter```
### ThermionFlutterPlugin
Create an instance of `ThermionFlutterPlugin` in your app.
```dart
class _MyAppState extends State<MyApp> {
  late ThermionFlutterPlugin _thermionFlutterPlugin;  late Future<ThermionViewer> _thermionViewer;
  void initState() {    _thermionFlutterPlugin = ThermionFlutterPlugin();    _thermionViewer = _thermionFlutterPlugin.createViewer();  }}```
`ThermionFlutterPlugin` is a singleton, and mostly just handles creating a 3D rendering surface that can be embedded in a Flutter widget hierarchy.  [ThermionViewer] is the interface for actually interacting with the scene (loading assets, manipulating the camera, and so on). Call `createViewer` on `ThermionFlutterPlugin` to obtain a reference to `ThermionViewer` (which is also a singleton).
Note: `ThermionFlutterPlugin` and `ThermionViewer` were designed as separate classes so we can use `ThermionViewer` in non-Flutter apps.
### ThermionWidget
On most platforms[0], [ThermionWidget] is the widget where your rendered content (i.e. your viewport) will appear. This can be any size; the 3D viewport will be scaled to fit the dimensions on this widget. On most platforms, a [ThermionWidget] can be positioned above or below any other widget in the hierarchy and the Z-order will be preserved.
```class _MyAppState extends State<MyApp> {
  late ThermionFlutterPlugin _thermionFlutterPlugin;  late Future<ThermionViewer> _thermionViewer;
  void initState() {    _thermionFlutterPlugin = ThermionFlutterPlugin();    _thermionViewer = _thermionFlutterPlugin.createViewer();  }    Widget build(BuildContext context) {       return Stack(children:[      Positioned.fill(        child:ThermionWidget(          plugin:_thermionFlutterPlugin        )      )    ]);  }}```
[0] Currently, the rendering surface on Windows and Web will always appear at the bottom of the application. You still need a ThermionWidget, but this only keeps track of the dimensions of your viewport and punches a transparent hole in the hierarchy; the actual rendering surface is attached beneath the Flutter window.
`ThermionWidget` will not display the rendering surface (even an empty one) until the call to `createViewer` has been completed.
- by default a Container will be rendered with solid red. If you want to change this, pass a widget as the initial paramer to the ThermionWidget constructor.on the second frame, ThermionWidget will pass its dimensions/pixel ratio to the FilamentController
 You can then call createViewer to create:the rendering surface (on most platforms, a backing texture that will be registered with Flutter for use in a Texture widget)a rendering threada ThermionViewerFFI and an AssetManager, which will allow you to load assets/cameras/lighting/etc via the FilamentControllerafter an indeterminate number of frames, FilamentController will notify ThermionWidget when a rendering surface is available the viewportThermionWidget will replace the default initial Widget with the viewport (which will initially be solid black or white, depending on your platform).IMPORTANT: there will be a delay between adding a ThermionWidget, calling createViewer and the actual rendering viewport becoming available. This is why we fill ThermionWidget with red - to make it abundantly clear that you need to handle this asynchronous delay appropriately. Once createViewer has completed, the viewport is available for rendering.
Currently, the initial widget will also be displayed whenever the viewport is resized (including changing orientation on mobile and drag-to-resize on desktop). You probably want to change this from the default red.
Congratulations! You now have a scene. It's completely empty, so you probably want to add something visible.
+201
View File
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2024 Nick Fisher
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+12 -7
View File
@@ -12,6 +12,7 @@ flutter-example-web: dart-web-clean dart-web
flutter-example-macos:
cd thermion_flutter_federated/thermion_flutter/example/web && flutter run -d macos
swift-bindings:
swiftc -c thermion_flutter/thermion_flutter/macos/Classes/ThermionTexture.swift -module-name swift_module -emit-objc-header-path thermion_dart/native/include/generated/ThermionTextureSwiftObjCAPI.h -emit-library -o thermion_dart/test/libThermionTextureSwift.dylib
cd thermion_dart/ && dart --enable-experiment=native-assets run ffigen --config ffigen/swift.yaml
bindings:
cd thermion_dart/ && dart --enable-experiment=native-assets run ffigen --config ffigen/native.yaml
@@ -21,12 +22,16 @@ bindings:
# eg: FILAMENT_PATH=/path/to/filament/out/release/bin make materials
#
materials: FORCE
ifndef FILAMENT_PATH
@echo "FILAMENT_PATH is not set"
else
@echo "Using Filament build from ${FILAMENT_PATH}"
${FILAMENT_PATH}/matc -a opengl -a metal -o materials/image.filamat materials/image.mat
$(FILAMENT_PATH)/resgen -c -p image -x ios/include/material/ materials/image.filamat
$(FILAMENT_PATH)/matc -a opengl -a metal -o materials/gizmo.filamat materials/gizmo.mat
$(FILAMENT_PATH)/resgen -c -p gizmo -x ios/include/material/ materials/gizmo.filamat
#rm materials/*.filamat
@for material in unlit image unlit_fixed_size grid; do \
${FILAMENT_PATH}/matc -a opengl -a metal -a vulkan -o materials/$$material.filamat materials/$$material.mat; \
$(FILAMENT_PATH)/resgen -c -p $$material -x thermion_dart/native/include/material/ materials/$$material.filamat; \
echo '#include "'$$material'.h"' | cat - thermion_dart/native/include/material/$$material.c > thermion_dart/native/include/material/$$material.c.new; \
mv thermion_dart/native/include/material/$$material.c.new thermion_dart/native/include/material/$$material.c; \
done
endif
FORCE: ;
FORCE: ;
+63 -5
View File
@@ -1,13 +1,14 @@
![Thermion Logo](docs/logo.png)
<p align="center">
<a href="https://docs.page/nmfisher/thermion/quickstart">Quickstart (Flutter)</a> •
<a href="https://docs.page/nmfisher/thermion">Documentation</a> •
<a href="https://docs.page/nmfisher/thermion/examples">Showcase</a> •
<a href="https://thermion.dev/quickstart">Quickstart (Flutter)</a> •
<a href="https://thermion.dev/">Documentation</a> •
<a href="https://thermion.dev/showcase">Showcase</a> •
<a href="https://dartpad.thermion.dev/">Playground</a> •
<a href="https://discord.gg/h2VdDK3EAQ">Discord</a>
</p>
## Cross-platform 3D engine for Dart and Flutter.
## Cross-platform 3D toolkit for Dart and Flutter.
<a href="https://pub.dev/packages/thermion_dart"><img src="https://img.shields.io/pub/v/thermion_dart?label=pub.dev&labelColor=333940&logo=dart&color=00589B" alt="pub"></a>
<a href="https://github.com/nmfisher/thermion"><img src="https://img.shields.io/github/stars/nmfisher/flutter_filament?style=flat&label=stars&labelColor=333940&color=8957e5&logo=github" alt="github"></a>
@@ -21,9 +22,66 @@
- camera/entity manipulation with mouse (desktop) and gestures (mobile)
- skinning + morph animations
### Quickstart (Flutter)
From the command line:
```bash
flutter channel master
flutter upgrade
flutter config --enable-native-assets
```
In your Flutter app:
```dart
_thermionViewer = await ThermionFlutterPlugin.createViewer();
// Geometry and models are represented as "entities". Here, we load a glTF
// file containing a plain cube.
// By default, all paths are treated as asset paths. To load from a file
// instead, use file:// URIs.
var entity =
await _thermionViewer!.loadGlb("assets/cube.glb", keepData: true);
// Thermion uses a right-handed coordinate system where +Y is up and -Z is
// "into" the screen.
// By default, the camera is located at (0,0,0) looking at (0,0,-1); this
// would place it directly inside the cube we just loaded.
//
// Let's move the camera to (0,0,10) to ensure the cube is visible in the
// viewport.
await _thermionViewer!.setCameraPosition(0, 0, 10);
// Without a light source, your scene will be totally black. Let's load a skybox
// (a cubemap image that is rendered behind everything else in the scene)
// and an image-based indirect light that has been precomputed from the same
// skybox.
await _thermionViewer!.loadSkybox("assets/default_env_skybox.ktx");
await _thermionViewer!.loadIbl("assets/default_env_ibl.ktx");
// Finally, you need to explicitly enable rendering. Setting rendering to
// false is designed to allow you to pause rendering to conserve battery life
await _thermionViewer!.setRendering(true);
```
and then in your widget tree:
```dart
@override
Widget build(BuildContext context) {
return Stack(children: [
if (_thermionViewer != null)
Positioned.fill(
child: ThermionWidget(
viewer: _thermionViewer!,
)),
]);
}
```
### Sponsors, Contributors & Acknowledgments
Thermion uses the [Filament](https://github.com/google/filament) physically based rendering package under the hood.
Thermion uses the [Filament](https://github.com/google/filament) Physically Based Rendering engine under the hood.
Special thanks to [odd-io](https://github.com/odd-io/) for sponsoring work on supporting Windows, raycasting, testing and documentation.
+10 -2
View File
@@ -7,10 +7,18 @@
"Getting Started",
[
["Overview", "/"],
["Quick Start", "/quickstart"]
["Quick Start", "/quickstart"],
["Camera Manipulation", "/camera_manipulation"]
]
],
["Misc.", [["Contributing", "/contributing"]]]
["Misc.", [
["Playground", "https://dartpad.thermion.dev"],
["Showcase", "/showcase"],
["Windows", "/windows"],
["Android", "/android"],
["Contributing", "/contributing"],
["Discord", "https://discord.gg/h2VdDK3EAQ"]
]]
]
}
+14
View File
@@ -1,5 +1,19 @@
## Android
### Min SDK version
Thermion requires Android SDK version 22, so change your `app/android/build.gradle` to match this version or higher
```groovy
defaultConfig {
...
minSdk = 22
...
}
```
### Shrink/Minify Resources
In release mode, you must add the following to your `app/build.gradle`:
```
-1
View File
@@ -1 +0,0 @@
# Another Page
+63
View File
@@ -0,0 +1,63 @@
## Camera Manipulation (Flutter)
> You can find the entire project below in the [flutter/quickstart](https://github.com/nmfisher/thermion/examples/flutter/camera_manipulation) folder.
A `ThermionListenerWidget` is one option for manipulating the camera with an input device (e.g. mouse or touchscreen gestures).
This will generally wrap a `ThermionWidget`, meaning the entire viewport will act as a receiver for gesture events.
> You can position this independently (for example, stacked vertically beneath the viewport), but this will not translate picking queries correctly.
```
@override
Widget build(BuildContext context) {
return Stack(children: [
if (_thermionViewer != null)
Positioned.fill(
child: ThermionListenerWidget(
inputHandler:
DelegateInputHandler.fixedOrbit(_thermionViewer!)
..setActionForType(InputType.MMB_HOLD_AND_MOVE, InputAction.ROTATE)
..setActionForType(InputType.SCALE1, InputAction.ROTATE)
..setActionForType(InputType.SCALE2, InputAction.ZOOM)
..setActionForType(InputType.SCROLLWHEEL, InputAction.ZOOM),
child: ThermionWidget(
viewer: _thermionViewer!,
))),
]);
```
`ThermionListenerWidget` is a very simple widget; it simply forwards pointer, gesture and keyboard events to the provided [InputHandler], which must decide how to interpret those events.
For example, one [InputHandler] implementation might interpret mouse pointer movement as "rotate the camera", whereas a separate implementation might interpret it as "translate this specific entity".
Thermion provides two default InputHandler implementations for manipulating the camera: [DelegateInputHandler.fixedOrbit] and [DelegateInputHandler.flight].
[DelegateInputHandler.fixedOrbit] will rotate the camera in a fixed orbit around a target point (the origin, by default), and also allow zooming in/out (subject to a minimum distance, which is configurable).
By default, [DelegateInputHandler.fixedOrbit] will:
- rotate the camera when the middle mouse button is held and the pointer is moved (on desktop), and when a single swipe left/right/up/down is detected (on mobile)
- zoom the camera when the scroll wheel is scrolled up/down (on desktop), and when a pinch gesture is detected (on mobile)
You can change the action for a specific input type by calling `setActionForType`; for example, if you wanted to rotate the camera by moving the mouse pointer while holding the left mouse button, you would call:
```
setActionForType(InputType.LMB_HOLD_AND_MOVE, InputAction.ROTATE)
```
See the [InputType] and [InputAction] enums for available input types and actions.
[DelegateInputHandler.flight] will translate keyboard and mouse/touchscreen gestures to free flight camera manipulation.
By default:
- holding the middle mouse button will control the pitch/roll/yaw of the camera
- holding the left mouse button will pan the camera left/right/up/down
- the middle mouse button will zoom/dolly the camera in/out
- the WASD keys will pan the camera left/right/up/down and dolly the camera forward/backward
If these don't exactly fit your use case, you can create your own [InputHandler] implementation. If you think it would be useful to other users, please feel free to submit a PR for your implementation to be included in the base Thermion package.
+5 -1
View File
@@ -1,6 +1,10 @@
## Contributing
Thermion is an open source project and we welcome all contributions from every level of experience.
Thermion is an open source project and all contributions are welcome, no matter the level of experience.
Please [join us on Discord](https://discord.gg/h2VdDK3EAQ) if you'd like some guidance or just want to chat.
Note that the Thermion project uses [Melos](https://melos.invertase.dev/) to manage the repository.
This lets us auto-generate changelogs & versioning from commit messages, so if you wish to submit a PR, please use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/).
-8
View File
@@ -1,8 +0,0 @@
# Examples
Thermion is a package for creating 3D applications with Dart and/or Flutter.
## Polyvox
iOS app
## Nick Fisher (Personal Website)
Binary file not shown.

After

Width:  |  Height:  |  Size: 489 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 936 KiB

+37 -2
View File
@@ -4,6 +4,10 @@ Thermion is a framework for creating cross-platform 3D applications with Dart an
## Overview
Below is a general overview of how the Thermion packages are structured to ensure a clean separation between the general Dart components, and the Flutter specific components.
If you want a more detailed explanation of how to start rendering 3D content inside a Flutter app, [click here to view the quickstart page](/quickstart).
### Package structure 
Thermion is divided into two packages:
@@ -18,8 +22,39 @@ For example, Thermion ships with examples for rendering with Dart only (no Flutt
### ThermionViewer (`thermion_dart`)
// TODO
The ThermionViewer class provides an API for creating and interacting with 3D scenes powered by the Filament rendering engine.
It allows loading 3D models in glTF format, adding lights and a skybox, manipulating the camera, animating objects, and more.
Key functionalities include:
- Scene Management: Load and manipulate entities, lights, skyboxes, and background elements within a 3D scene.
- Rendering Control: Manage rendering loop, frame rate, and post-processing effects like tone mapping and bloom.
- Camera Control: Position and orient the camera, adjust focal length, and control exposure settings.
- Animation: Play, pause, and manipulate skeletal and morph target animations.
- Entity Manipulation: Transform entities (position, rotation, scale), set material properties, and manage parent-child relationships.
- Collision Detection (experimental): Add collision components to entities and test for collisions within the scene.
- Input Handling: Interact with the scene using touch gestures for panning, rotating, and zooming.
- Developers use the ThermionViewer class to build and control the behavior of their 3D applications.
### ThermionFlutterPlugin
The ThermionFlutterPlugin class handles the platform-specific initialization required to embed a Filament rendering surface within a Flutter Widget.
This includes creating a texture and managing the application lifecycle to pause rendering when the app is inactive.
You will generally only need to interact with `ThermionFlutterPlugin` directly to create or dispose of a ThermionViewer.
### ThermionWidget (`thermion_flutter`)
// TODO
`ThermionWidget` is a Flutter widget that displays the 3D content rendered by a ThermionViewer.
It handles creating and managing the underlying platform-specific texture that Filament renders to, and provides a way to embed this texture within the Flutter widget tree.
Key features of ThermionWidget include:
- Texture Management: It creates, resizes, and destroys the ThermionFlutterTexture used to display the rendered content from the ThermionViewer.
- Platform Adaption: It handles platform-specific differences, such as texture coordinate systems, to ensure consistent rendering across different platforms.
- Initialization Handling: Displays a placeholder (configurable via the initial property) while the Filament texture is being initialized, providing a smoother user experience.
- Seamless Integration: Integrates seamlessly within the Flutter widget tree, allowing developers to combine 2D and 3D content easily.
- Resize Handling: It listens for resize events and automatically resizes the underlying texture to match, ensuring the 3D content scales correctly.
+18 -11
View File
@@ -1,11 +1,12 @@
## Quickstart (Flutter)
> You can find the entire project below in the [examples/flutter/quickstart](examples/flutter/quickstart) folder of the repository.
> You can find the entire project below in the [flutter/quickstart](https://github.com/nmfisher/thermion_examples/tree/master/flutter/quickstart) folder of the `thermion_examples` repository.
1. Switch to Flutter master channel, create a new project, then add `thermion_flutter` as a dependency
1. Switch to Flutter master channel, upgrade Flutter, create a new project, then add `thermion_flutter` as a dependency
```bash
$ flutter channel master
$ flutter upgrade
$ flutter config --enable-native-assets
$ flutter create thermion_sample_project && cd thermion_sample_project
$ flutter pub add thermion_flutter
@@ -13,7 +14,7 @@ $ flutter pub add thermion_flutter
2. If running on iOS or MacOS, change the minimum deployment target to OSX 13
<Accordion title="Click to iOS/MacOS instructions">
<Accordion title="Click to open iOS/MacOS instructions">
Make sure the `platform` entry refers to `13.0` in your Podfile.
@@ -70,18 +71,21 @@ class _MyAppState extends State<MyApp> {
class _MyAppState extends State<MyApp> {
late ThermionFlutterPlugin _thermionFlutterPlugin; 
late Future<ThermionViewer> _thermionViewer;
ThermionViewer? _thermionViewer;
void initState() {   
_thermionFlutterPlugin = ThermionFlutterPlugin();
_thermionViewer = _thermionFlutterPlugin.initialize();
_thermionFlutterPlugin.createViewer().then((viewer) {
setState(() {
_thermionViewer = viewer;
});
});
}   
Widget build(BuildContext context) {
return Stack(children:[
if(_thermionViewer != null)
    Positioned.fill(
child:ThermionWidget(
plugin:_thermionFlutterPlugin
plugin:_thermionViewer!
        ) 
    )
    ]); 
@@ -104,11 +108,12 @@ class _MyAppState extends State<MyApp> {
Widget build(BuildContext context) {
return Stack(children:[
    if(_thermionViewer != null)
    Positioned.fill(
child:ThermionWidget(
plugin:_thermionFlutterPlugin
plugin:_thermionViewer!
        ) 
    ),
    ),
if (!_loaded)
Center(
child: ElevatedButton(
@@ -204,6 +209,8 @@ The cube still won't be visible until we add a light to the scene and tell Therm
$ flutter run -d macos
```
> You may experience a noticeable delay the very first time you run the project. Don't panic, it's not frozen! This is due to the build system downloading the prebuilt Filament binaries from Cloudflare, which can take some time (particularly on Windows). These binaries will be cached after first download, so subsequent runs will be much faster (though every time you run flutter clean, the binaries will be re-downloaded).
![Screenshot of Thermion Quickstart project](images/thermion_sample_project.png)
Your first Thermion project is complete!
Your first Thermion project is complete!
+23
View File
@@ -0,0 +1,23 @@
## Showcase
## DartPad Playground
A custom DartPad that lets you experiment with Thermion from your browser (currently, only Chrome is supported).
[![Screenshot of Thermion Dartpad](images/dartpad.thermion.dev_.png)](https://dartpad.thermion.dev)
## mixreel (Flutter/Web)
Create 3D worlds and translate to AI video.
[![Screenshot of the mixreeel app](images/ixlabs.app_app.png)](https://mixreel.ai)
## Nick Fisher
My personal website, where I create an interactive clone of myself with Avaturn & Cartesia (no Flutter, made with Thermion and the [Jaspr Dart UI framework](https://github.com/schultek/jaspr)).
[![Screenshot of Nick Fisher's personal website](images/nick-fisher.com.png)](https://nick-fisher.com)
+1 -13
View File
@@ -1,18 +1,6 @@
## Windows
## pubspec.yaml
On Windows, you will need to add a custom version of `native_toolchain_c` to your `dependency_overrides`. This is currently needed to link static libraries when building a DLL.
```
native_toolchain_c:
git:
url: git@github.com:nmfisher/native.git
path: pkgs/native_toolchain_c
ref: 99020084c4687be4c58c7115a167088c0441d1de
```
This will eventually be fixed upstream in the `native_toolchain_c` package, so this should be a short-term/temporary issue only.
If you're not a Thermion developer, you can ignore this.
## ANGLE build (not currently working)
To support embedding GPU textures in Flutter (rather than copying to a CPU pixel buffer on every frame), we need to build a slightly customized version of Filament that uses GLES on Windows (rather than the default, which uses OpenGL).
+5
View File
@@ -0,0 +1,5 @@
# Thermion Examples
This repository contains example Dart and Flutter projects for the Thermion rendering toolkit.
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4a1d72d69da8b933bde5453ef2000612b561f8ddfa536a7ad89288ef11eb876d
size 1624
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fe0151ced8fd8609f9692f3d62dbd30890dada97cb6995572e37c7e7b4440d86
size 21304
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0f8b793f6513cf83f80ce9c63c7b51d329908b1991f17ca642911634b15b32de
size 34172
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 531 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 856 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 500 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 614 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.
+755 -3
View File
@@ -1,3 +1,755 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7b05a4cf63ea1c614a9385cdb902c62bad324eccbb87a6c9e3370da2b6f36f2d
size 14565
{
"accessors": [
{
"componentType": 5123,
"count": 24408,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 8468,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 8468,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 8468,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 8468,
"type": "VEC3",
"max": [
0.131662,
0.137638986,
0.10078799
],
"min": [
-0.131333,
-0.028128,
-0.137763992
]
},
{
"componentType": 5123,
"count": 65688,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 12552,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 12552,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 12552,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 12552,
"type": "VEC3",
"max": [
0.11722149,
0.196387976,
0.132422984
],
"min": [
-0.11722149,
-0.196387976,
-0.132422984
]
},
{
"componentType": 5123,
"count": 2208,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 436,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 436,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 436,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 436,
"type": "VEC3",
"max": [
0.09527509,
0.114654,
-0.08429489
],
"min": [
-0.0952748954,
0.0551489964,
-0.14295499
]
},
{
"componentType": 5123,
"count": 60288,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 17186,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 17186,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 17186,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 17186,
"type": "VEC3",
"max": [
0.1572095,
0.2716865,
0.162181988
],
"min": [
-0.1572095,
-0.2716865,
-0.162181988
]
},
{
"componentType": 5123,
"count": 131574,
"type": "SCALAR"
},
{
"componentType": 5126,
"count": 24148,
"type": "VEC2"
},
{
"componentType": 5126,
"count": 24148,
"type": "VEC3"
},
{
"componentType": 5126,
"count": 24148,
"type": "VEC4"
},
{
"componentType": 5126,
"count": 24148,
"type": "VEC3",
"max": [
0.1504075,
0.328366965,
0.173673
],
"min": [
-0.1504075,
-0.328366965,
-0.173673
]
}
],
"asset": {
"generator": "glTF Tools for Unity",
"version": "2.0"
},
"bufferViews": [
{
"buffer": 0,
"byteOffset": 0,
"byteLength": 59806
},
{
"buffer": 0,
"byteOffset": 59808,
"byteLength": 99674
},
{
"buffer": 0,
"byteOffset": 159484,
"byteLength": 4875
},
{
"buffer": 0,
"byteOffset": 164360,
"byteLength": 133545
},
{
"buffer": 0,
"byteOffset": 297908,
"byteLength": 203914
}
],
"buffers": [
{
"name": "FlightHelmet",
"byteLength": 501824,
"uri": "FlightHelmet.bin"
}
],
"images": [
{
"name": "FlightHelmet_baseColor",
"uri": "FlightHelmet_baseColor.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic",
"uri": "FlightHelmet_occlusionRoughnessMetallic.png"
},
{
"name": "FlightHelmet_normal",
"uri": "FlightHelmet_normal.png"
},
{
"name": "FlightHelmet_baseColor1",
"uri": "FlightHelmet_baseColor1.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic1",
"uri": "FlightHelmet_occlusionRoughnessMetallic1.png"
},
{
"name": "FlightHelmet_normal1",
"uri": "FlightHelmet_normal1.png"
},
{
"name": "FlightHelmet_baseColor2",
"uri": "FlightHelmet_baseColor2.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic2",
"uri": "FlightHelmet_occlusionRoughnessMetallic2.png"
},
{
"name": "FlightHelmet_normal2",
"uri": "FlightHelmet_normal2.png"
},
{
"name": "FlightHelmet_baseColor3",
"uri": "FlightHelmet_baseColor3.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic3",
"uri": "FlightHelmet_occlusionRoughnessMetallic3.png"
},
{
"name": "FlightHelmet_normal3",
"uri": "FlightHelmet_normal3.png"
},
{
"name": "FlightHelmet_baseColor4",
"uri": "FlightHelmet_baseColor4.png"
},
{
"name": "FlightHelmet_occlusionRoughnessMetallic4",
"uri": "FlightHelmet_occlusionRoughnessMetallic4.png"
},
{
"name": "FlightHelmet_normal4",
"uri": "FlightHelmet_normal4.png"
}
],
"meshes": [
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 1,
"NORMAL": 2,
"TANGENT": 3,
"POSITION": 4
},
"indices": 0,
"material": 0,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 0,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "GlassPlastic_low"
},
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 6,
"NORMAL": 7,
"TANGENT": 8,
"POSITION": 9
},
"indices": 5,
"material": 1,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 1,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "LeatherParts_low"
},
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 11,
"NORMAL": 12,
"TANGENT": 13,
"POSITION": 14
},
"indices": 10,
"material": 2,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 2,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "Lenses_low"
},
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 16,
"NORMAL": 17,
"TANGENT": 18,
"POSITION": 19
},
"indices": 15,
"material": 3,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 3,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "MetalParts_low"
},
{
"primitives": [
{
"attributes": {
"TEXCOORD_0": 21,
"NORMAL": 22,
"TANGENT": 23,
"POSITION": 24
},
"indices": 20,
"material": 4,
"mode": 4,
"extensions": {
"KHR_draco_mesh_compression": {
"bufferView": 4,
"attributes": {
"TEXCOORD_0": 0,
"NORMAL": 1,
"TANGENT": 2,
"POSITION": 3
}
}
}
}
],
"name": "RubberWood_low"
}
],
"materials": [
{
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 0,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 1,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 2,
"texCoord": 0
},
"occlusionTexture": {
"index": 1,
"texCoord": 0
},
"name": "GlassPlasticMat",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE",
"doubleSided": false
},
{
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 3,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 4,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 5,
"texCoord": 0
},
"occlusionTexture": {
"index": 4,
"texCoord": 0
},
"name": "LeatherPartsMat",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE",
"doubleSided": false
},
{
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 6,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 7,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 8,
"texCoord": 0
},
"occlusionTexture": {
"index": 7,
"texCoord": 0
},
"alphaMode": "BLEND",
"name": "LensesMat",
"emissiveFactor": [
0,
0,
0
],
"doubleSided": false
},
{
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 9,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 10,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 11,
"texCoord": 0
},
"occlusionTexture": {
"index": 10,
"texCoord": 0
},
"name": "MetalPartsMat",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE",
"doubleSided": false
},
{
"doubleSided": true,
"pbrMetallicRoughness": {
"baseColorTexture": {
"index": 12,
"texCoord": 0
},
"metallicRoughnessTexture": {
"index": 13,
"texCoord": 0
},
"baseColorFactor": [
1,
1,
1,
1
],
"metallicFactor": 1,
"roughnessFactor": 1
},
"normalTexture": {
"index": 14,
"texCoord": 0
},
"occlusionTexture": {
"index": 13,
"texCoord": 0
},
"name": "RubberWoodMat",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE"
}
],
"nodes": [
{
"mesh": 0,
"name": "GlassPlastic_low"
},
{
"mesh": 1,
"translation": [
0.000434499962,
0.032592997,
0.011676996
],
"name": "LeatherParts_low",
"rotation": [
0,
0,
0,
1
],
"scale": [
1,
1,
1
]
},
{
"mesh": 2,
"name": "Lenses_low"
},
{
"mesh": 3,
"translation": [
0.0331545,
-0.1488645,
-0.0242879968
],
"name": "MetalParts_low",
"rotation": [
0,
0,
0,
1
],
"scale": [
1,
1,
1
]
},
{
"mesh": 4,
"translation": [
-0.00190849893,
-0.111985,
-0.013313001
],
"name": "RubberWood_low",
"rotation": [
0,
0,
0,
1
],
"scale": [
1,
1,
1
]
},
{
"children": [
0,
1,
2,
3,
4
],
"rotation": [
0,
1,
0,
0
],
"name": "FlightHelmet",
"translation": [
0,
0,
0
],
"scale": [
1,
1,
1
]
}
],
"scene": 0,
"scenes": [
{
"nodes": [
5
]
}
],
"textures": [
{
"source": 0
},
{
"source": 1
},
{
"source": 2
},
{
"source": 3
},
{
"source": 4
},
{
"source": 5
},
{
"source": 6
},
{
"source": 7
},
{
"source": 8
},
{
"source": 9
},
{
"source": 10
},
{
"source": 11
},
{
"source": 12
},
{
"source": 13
},
{
"source": 14
}
],
"extensionsRequired": [
"KHR_draco_mesh_compression"
],
"extensionsUsed": [
"KHR_draco_mesh_compression"
]
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 5.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 806 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 5.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 5.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 737 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 B

After

Width:  |  Height:  |  Size: 4.3 MiB

+16 -3
View File
@@ -1,3 +1,16 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0bc81c711f74fdfd2ef56e34d747383444a3ab6a1ee52fe62cb5838e59b0be56
size 545
# Flight Helmet
## Screenshot
![screenshot](screenshot/screenshot.jpg)
## License Information
Donated by Microsoft for glTF testing
[![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/)
To the extent possible under law, Microsoft has waived all copyright and related or neighboring rights to this asset.
Draco compression was done via Cesium tools on 27-03-2020 as follows.
gltf-pipeline -i FlightHelmet.gltf -o FlightHelmet.gltf -d -s --keep-unused-elements
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B

After

Width:  |  Height:  |  Size: 572 KiB

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0245800fa846c2a3c15cb1d2aa6ded86fcf8355e568907dcd50e073c589f85d6
size 2095464
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:40379fcd881ca3729b0fa057f66b8fedbd8ab92b8e407bc3a4fd17c1a2b6e75e
size 1572932
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5821c53850d84c5b2d0b39ad28e6cde94d8fc7e1bbb97d5d898c40733e2d4e99
size 107424
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d9134594e40a4bad7601d0396bb5f2a7600656bda5d815b3cb2e855ba6c6c5e4
size 1263808
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ab0cada556723be0d138d7b1cadb5e315a273524db0468e0c4255d8d2b0c1c2d
size 1222992
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6c58d82602dc9b4dabb63f378fecd7ecb9eaf6f5da5746552ec42dde4ec211d7
size 121104
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0c1d3eac0151a58c3f36bea0f636691559612fd2d5ce21bb3551d43e86043e26
size 36741
-3
View File
@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b58c687c2687f5b3b576e4f5672981fde5657519f51dd331e6e671634c77640f
size 29920
Binary file not shown.
+14 -3
View File
@@ -1,3 +1,14 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2033d3f7f8e0af983d8ab237737b45db2ed476b9283c6b0fda6a6954e1a72dea
size 294
material {
name : SolidColor,
shadingModel : unlit,
culling : none,
featureLevel : 1,
vertexDomain: object
}
fragment {
void material(inout MaterialInputs material) {
prepareMaterial(material);
material.baseColor = vec4(0.1f, 0.5f, 0.9f, 1.0f);
}
}
-2
View File
@@ -1,2 +0,0 @@
A sample command-line application with an entrypoint in `bin/`, library code
in `lib/`, and example unit test in `test/`.
-1
View File
@@ -1 +0,0 @@
../../../assets
@@ -1,46 +0,0 @@
import 'dart:io';
import 'package:thermion_dart/thermion_dart/compatibility/compatibility.dart';
import 'package:thermion_dart/thermion_dart/swift/swift_bindings.g.dart';
import 'package:thermion_dart/thermion_dart/compatibility/compatibility.dart';
import 'package:thermion_dart/thermion_dart/utils/dart_resources.dart';
import 'package:ffi/ffi.dart';
import 'package:thermion_dart/thermion_dart.dart';
void main() async {
var scriptDir = File(Platform.script.toFilePath()).parent.path;
final lib = ThermionDartTexture1(
DynamicLibrary.open("$scriptDir/libthermion_swift.dylib"));
final object = ThermionDartTexture.new1(lib);
object.initWithWidth_height_(500, 500);
final resourceLoader = calloc<ResourceLoaderWrapper>(1);
var loadToOut = NativeCallable<
Void Function(Pointer<Char>,
Pointer<ResourceBuffer>)>.listener(DartResourceLoader.loadResource);
resourceLoader.ref.loadToOut = loadToOut.nativeFunction;
var freeResource = NativeCallable<Void Function(ResourceBuffer)>.listener(
DartResourceLoader.freeResource);
resourceLoader.ref.freeResource = freeResource.nativeFunction;
var viewer = ThermionViewerFFI(resourceLoader: resourceLoader.cast<Void>());
await viewer.initialized;
await viewer.createSwapChain(500, 500);
await viewer.createRenderTarget(500, 500, object.metalTextureAddress);
await viewer.updateViewportAndCameraProjection(500, 500);
var outDir = Directory("$scriptDir/output");
if (outDir.existsSync()) {
outDir.deleteSync(recursive: true);
}
outDir.createSync();
await viewer.setRecordingOutputDirectory(outDir.path);
await viewer.setRecording(true);
await viewer.loadSkybox(
"file:///$scriptDir/assets/default_env/default_env_skybox.ktx");
await Future.delayed(Duration(milliseconds: 16));
await viewer.render();
await viewer.dispose();
}
@@ -1 +0,0 @@
../../../../thermion_dart/native/lib/macos/swift/libthermion_swift.dylib
Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

-18
View File
@@ -1,18 +0,0 @@
name: example_cli
description: A sample command-line application.
version: 1.0.0
# repository: https://github.com/my_org/my_repo
environment:
sdk: ^3.3.0
# Add regular dependencies here.
dependencies:
thermion_dart:
path: ../../../thermion_dart
ffi:
dev_dependencies:
ffigen: ^11.0.0
lints: ^3.0.0
test: ^1.24.0
@@ -1,8 +0,0 @@
import 'package:example_cli/example_cli.dart';
import 'package:test/test.dart';
void main() {
test('calculate', () {
expect(calculate(), 42);
});
}
-3
View File
@@ -1,3 +0,0 @@
# https://dart.dev/guides/libraries/private-files
# Created by `dart pub`
.dart_tool/
-3
View File
@@ -1,3 +0,0 @@
## 1.0.0
- Initial version.
-2
View File
@@ -1,2 +0,0 @@
A sample command-line application with an entrypoint in `bin/`, library code
in `lib/`, and example unit test in `test/`.
@@ -1,30 +0,0 @@
# This file configures the static analysis results for your project (errors,
# warnings, and lints).
#
# This enables the 'recommended' set of lints from `package:lints`.
# This set helps identify many issues that may lead to problems when running
# or consuming Dart code, and enforces writing Dart using a single, idiomatic
# style and format.
#
# If you want a smaller set of lints you can change this to specify
# 'package:lints/core.yaml'. These are just the most critical lints
# (the recommended set includes the core lints).
# The core lints are also what is used by pub.dev for scoring packages.
include: package:lints/recommended.yaml
# Uncomment the following section to specify additional rules.
# linter:
# rules:
# - camel_case_types
# analyzer:
# exclude:
# - path/to/excluded/files/**
# For more information about the core and recommended set of lints, see
# https://dart.dev/go/core-lints
# For additional information about configuring this file, see
# https://dart.dev/guides/language/analysis-options
-4
View File
@@ -1,4 +0,0 @@
example_cli.mjs
example_cli.wasm
example_cli.unopt.wasm
node_modules/**/*
-98
View File
@@ -1,98 +0,0 @@
MAIN
initializing
gto uberarchive ptr
create void ptr callback
resolve
try
done, returning
created
got promise [object Promise]
got fn ptr address 2720
Calling create_filament_viewer_ffi
Call complete
Created viewer, waiting for initialization
Creating WebGL context.
Created WebGL context 2.0
Made WebGL context current
FEngine (32 bits) created at 0x1937d0 (threading is disabled)
[stack-gl], [ANGLE], [OpenGL ES 3.0 (WebGL 1.0 stack-gl 8.0.2)], [OpenGL ES GLSL ES 1.00 (WebGL GLSL ES 1.0 stack-gl)]
Feature level: 1
Active workarounds:
Backend feature level: 1
FEngine feature level: 1
Set frame interval to 16.666666
Setting tone mapping to ACES
Bloom is disabled on WebGL builds as it causes instability with certain drivers. setBloom will be ignored
View created
Camera aperture 16.000000 shutter 0.008000 sensitivity 100.000000
Created ubershader provider.
Added imageEntity 6
Got void ptr callback
Set viewer to true
Created viewer 1652064
Initialied
Loading GLB from buffer of length 116948
Loaded glb
Entities : [10, 11, 12]
entityName : Cone
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
morph targets : [Key 1, Key 2, Key 3, Key 4, Key 5, Key 6, Key 7, Key 8]
entityName : Cube
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
morph targets : [Key 1, Key 2]
entityName : Cylinder
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
Getting morpht arget names
No insdtance
Using asset instance
morph targets : [Key 1, Key 2, Key 3, Key 4]
@@ -1,33 +0,0 @@
import 'package:thermion_dart/thermion_dart/compatibility/compatibility.dart';
import 'package:thermion_dart/thermion_dart.dart';
import 'package:animation_tools_dart/animation_tools_dart.dart';
void main(List<String> args) async {
final resourceLoader = thermion_dart_web_get_resource_loader_wrapper();
var viewer = ThermionViewerFFI(resourceLoader: resourceLoader.cast<Void>());
viewer.initialized.then((_) async {
var entity = await viewer.loadGlb(
"/Users/nickfisher/Documents/polyvox/apps/packages/thermion_flutter/thermion_flutter_federated/thermion_flutter/example/assets/shapes/shapes.glb");
var entities = await viewer.getChildEntities(entity, true);
for (final childEntity in entities) {
final childName = await viewer.getNameForEntity(childEntity);
var morphTargetNames =
await viewer.getMorphTargetNames(entity, childEntity!);
if (morphTargetNames.isNotEmpty) {
await viewer.setMorphTargetWeights(
childEntity, List<double>.filled(morphTargetNames.length, 1.0));
}
var animationData = MorphAnimationData(
List.generate(
10, (_) => List<double>.filled(morphTargetNames.length, 1.0)),
morphTargetNames);
await viewer.setMorphAnimationData(entity, animationData,
targetMeshNames: [childName!]);
}
});
while (true) {
await Future.delayed(Duration(seconds: 1));
}
}
-123
View File
@@ -1,123 +0,0 @@
const fs = require('node:fs');
const thermion_dart = require("./thermion_dart.js")
const GLctx = require('gl')(100, 100, { preserveDrawingBuffer: true })
// queueMicrotask = (func) => {
// func();
// }
// read('thermion_dart.wasm', 'binary')
// const exports = {};
// const module = {};
const wasmBuffer = fs.readFileSync('thermion_dart.wasm');
var dartFilamentModulePromise = WebAssembly.compile(wasmBuffer);
let globalDf;
thermion_dart({
dartFilamentResolveCallback: (cb, data) => {
const fn = globalDf.wasmTable.get(cb);
if(data) {
fn(data);
} else {
fn();
}
},
ctx:GLctx}).then((df) => {
globalDf = df;
createVoidCallback = () => {
let res; //placeholder for resolver callback, outside of promise
const promise = new Promise((resolve, reject) => {
res = resolve;
});
try {
const callback = () => {
try {
res({});
} catch(err) {
console.log(err);
}
}
const fnPtr = df.addFunction(callback, 'v');
return [promise, fnPtr];
} catch(err) {
console.log(err);
return null;
}
}
createIntCallback = () => {
let res;
const promise = new Promise((resolve, reject) => {
res = resolve;
});
try {
const callback = (val) => {
try {
res(val);
} catch(err) {
console.log(err);
}
}
const fnPtr = df.addFunction(callback, 'vi');
return [promise, fnPtr];
} catch(err) {
console.log(err);
return null;
}
}
createVoidPointerCallback = () => {
console.log("create void ptr callback");
let res; //placeholder for resolver callback, outside of promise
const promise = new Promise((resolve, reject) => {
console.log("resolve");
res = resolve;
});
try {
console.log("try");
const callback = (voidPtr) => {
try {
res(voidPtr);
} catch(err) {
console.log(err);
}
}
const fnPtr = df.addFunction(callback, 'vi');
console.log("done, returning");
return [promise, fnPtr];
} catch(err) {
console.log(err);
return null;
}
}
createBoolCallback = () => {
let res; //placeholder for resolver callback, outside of promise
const promise = new Promise((resolve, reject) => {
res = resolve;
});
try {
const callback = (val) => {
try {
res(val);
} catch(err) {
console.log(err);
}
}
const fnPtr = df.addFunction(callback, 'vi');
return [promise, fnPtr];
} catch(err) {
console.log(err);
return null;
}
}
import('./example_cli.mjs').then((dart2wasm_runtime) => {
var dartModulePromise = WebAssembly.compile(fs.readFileSync('./example_cli.wasm'));
const imports = {"thermion_dart": df, "ctx": GLctx};
dart2wasm_runtime.instantiate(dartModulePromise, imports).then((moduleInstance) => {
dart2wasm_runtime.invoke(moduleInstance);
});
});
});
// // dartModulePromise.then((dartModule) => { console.log(dartModule.exports); dart2wasm_runtime.invoke(dartModule, imports);}); });
File diff suppressed because it is too large Load Diff
-5
View File
@@ -1,5 +0,0 @@
{
"dependencies": {
"gl": "^8.0.2"
}
}
@@ -1 +0,0 @@
../../../native/web/build/build/out/dart_filament.js
@@ -1 +0,0 @@
../../../native/web/build/build/out/dart_filament.wasm
@@ -1 +0,0 @@
../../../native/web/build/build/out/dart_filament.worker.js
-18
View File
@@ -1,18 +0,0 @@
name: example_cli
description: A sample command-line application.
version: 1.0.0
# repository: https://github.com/my_org/my_repo
environment:
sdk: ^3.3.0
# Add regular dependencies here.
dependencies:
thermion_dart:
path: ../../
ffi:
dev_dependencies:
ffigen: ^11.0.0
lints: ^3.0.0
test: ^1.24.0
@@ -1,8 +0,0 @@
import 'package:example_cli/example_cli.dart';
import 'package:test/test.dart';
void main() {
test('calculate', () {
expect(calculate(), 42);
});
}
+7
View File
@@ -0,0 +1,7 @@
# Thermion Example - Dart/Windows-only (no Flutter)
A (Windows-only) command-line application that renders into a window without Flutter.
```
dart --enable-experiment=native-assets bin\cli_windows.dart
```
@@ -0,0 +1,67 @@
import 'dart:ffi';
import 'dart:io';
import 'dart:math';
import 'package:ffi/ffi.dart';
import 'package:thermion_dart/src/utils/src/dart_resources.dart';
import 'package:thermion_dart/src/viewer/src/ffi/src/thermion_viewer_ffi.dart';
import 'package:thermion_dart/src/viewer/src/ffi/src/thermion_dart.g.dart';
import 'package:thermion_dart/thermion_dart.dart';
import 'package:vector_math/vector_math_64.dart';
import 'package:cli_windows/thermion_window.g.dart';
void main(List<String> arguments) async {
var hwnd = create_thermion_window(500, 500, 0, 0);
update();
final resourceLoader = calloc<ResourceLoaderWrapper>(1);
var loadToOut = NativeCallable<
Void Function(Pointer<Char>,
Pointer<ResourceBuffer>)>.listener(DartResourceLoader.loadResource);
resourceLoader.ref.loadToOut = loadToOut.nativeFunction;
var freeResource = NativeCallable<Void Function(ResourceBuffer)>.listener(
DartResourceLoader.freeResource);
resourceLoader.ref.freeResource = freeResource.nativeFunction;
var viewer = ThermionViewerFFI(
resourceLoader: resourceLoader.cast<Void>());
await viewer.initialized;
var swapChain = await viewer.createHeadlessSwapChain(500,500);
var view = await viewer.getViewAt(0);
await view.updateViewport(500, 500);
var camera = await viewer.getMainCamera();
await camera.setLensProjection();
await view.setRenderable(true, swapChain);
await viewer.setBackgroundColor(1.0, 0.0, 0.0, 1.0);
var skyboxPath = File("..\\..\\assets\\default_env_skybox.ktx").absolute;
await viewer.loadSkybox("file://${skyboxPath.uri.toFilePath(windows: true)}");
final cube = await viewer.createGeometry(GeometryHelper.cube());
var stopwatch = Stopwatch();
stopwatch.start();
var last = 0;
await viewer.setCameraPosition(0, 0, 10);
while(true) {
var angle = (stopwatch.elapsedMilliseconds / 1000) * 2 * pi;
var rotation = Quaternion.axisAngle(Vector3(0,1,0), angle);
var position = Vector3(10 * sin(angle), 0, 10 * cos(angle));
var modelMatrix = Matrix4.compose(position, rotation, Vector3.all(1));
await viewer.setCameraModelMatrix4(modelMatrix);
await viewer.render();
update();
await Future.delayed(Duration(milliseconds: 17));
}
}
+35
View File
@@ -0,0 +1,35 @@
import 'dart:io';
import 'package:archive/archive.dart';
import 'package:logging/logging.dart';
import 'package:native_assets_cli/native_assets_cli.dart';
import 'package:native_toolchain_c/native_toolchain_c.dart';
import 'package:path/path.dart' as path;
void main(List<String> args) async {
final logger = Logger("")
..level = Level.ALL
..onRecord.listen((record) => print(
record.message + "\n"));
await build(args, (config, output) async {
final cbuilder = CBuilder.library(
name: "thermion_window",
language: Language.cpp,
assetName: 'thermion_window.dart',
sources: ['native/thermion_window.cpp'],
includes: ['native', '../../../thermion_dart/native/include'],
defines: {"UNICODE":"1"},
flags:[],
dartBuildFiles: ['hook/build.dart'],
);
await cbuilder.run(
buildConfig: config,
buildOutput: output,
logger: logger,
);
});
}
@@ -0,0 +1,19 @@
// AUTO GENERATED FILE, DO NOT EDIT.
//
// Generated by `package:ffigen`.
// ignore_for_file: type=lint
@ffi.DefaultAsset('package:cli_windows/thermion_window.dart')
library;
import 'dart:ffi' as ffi;
@ffi.Native<ffi.Int Function(ffi.Int, ffi.Int, ffi.Int, ffi.Int)>(isLeaf: true)
external int create_thermion_window(
int width,
int height,
int left,
int top,
);
@ffi.Native<ffi.Void Function()>(isLeaf: true)
external void update();
@@ -0,0 +1,390 @@
#pragma comment(lib, "dwmapi.lib")
#pragma comment(lib, "comctl32.lib")
#pragma comment(lib, "Shlwapi.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "Gdi32.lib")
#pragma comment(lib, "User32.lib")
#pragma comment(lib, "dxgi.lib")
#include <dxgi.h>
#include <cstdint>
#include <chrono>
#include <thread>
#include <algorithm>
#include <Windows.h>
#include <dwmapi.h>
#include <ShObjIdl.h>
#include <iostream>
#include <Windows.h>
#include "thermion_window.h"
namespace thermion {
void PrintDefaultGPU() {
IDXGIFactory* factory = nullptr;
CreateDXGIFactory(__uuidof(IDXGIFactory), (void**)&factory);
IDXGIAdapter* adapter = nullptr;
factory->EnumAdapters(0, &adapter); // 0 is the default adapter
DXGI_ADAPTER_DESC desc;
adapter->GetDesc(&desc);
std::wcout << L"GPU: " << desc.Description << std::endl;
adapter->Release();
factory->Release();
}
///
/// Instantiating a ThermionWindow creates a HWND that can be passed
/// to Filament to create a swapchain.
///
///
class ThermionWindow {
public:
ThermionWindow(
int width,
int height,
int left,
int top);
HWND GetHandle();
void Resize(int width, int height, int left, int top);
uint32_t _width = 0;
uint32_t _height = 0;
uint32_t _left = 0;
uint32_t _top = 0;
private:
HWND _windowHandle;
};
static ThermionWindow* _window;
static bool _running = false;
static std::thread _renderThread;
// Add these for timing and stats
static int _frameCount = 0;
static std::chrono::time_point<std::chrono::steady_clock> _lastFpsLog;
static void RenderLoop() {
_lastFpsLog = std::chrono::steady_clock::now();
auto lastFrame = std::chrono::steady_clock::now();
while (_running) {
auto now = std::chrono::steady_clock::now();
auto frameDuration = std::chrono::duration_cast<std::chrono::microseconds>(now - lastFrame).count();
// Force a redraw
InvalidateRect(_window->GetHandle(), NULL, FALSE);
// Process any pending messages
MSG msg;
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
if (msg.message == WM_QUIT) {
_running = false;
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// Wait for vsync
DwmFlush();
// Update timing stats
lastFrame = now;
_frameCount++;
// Log FPS every second
auto timeSinceLastLog = std::chrono::duration_cast<std::chrono::milliseconds>(now - _lastFpsLog).count();
if (timeSinceLastLog >= 1000) { // Every second
float fps = (_frameCount * 1000.0f) / timeSinceLastLog;
float avgFrameTime = timeSinceLastLog / (float)_frameCount;
std::cout << "FPS: " << fps << " Frame Time: " << avgFrameTime << "ms"
<< " Last Frame: " << frameDuration / 1000.0f << "ms" << std::endl;
_frameCount = 0;
_lastFpsLog = now;
}
}
}
extern "C" {
EMSCRIPTEN_KEEPALIVE intptr_t create_thermion_window(int width, int height, int left, int top) {
_window = new ThermionWindow(width, height, left, top);
// Start the render thread
_running = true;
_renderThread = std::thread(RenderLoop);
return (intptr_t)_window->GetHandle();
}
// Update function can now be simplified or removed since rendering happens in the thread
EMSCRIPTEN_KEEPALIVE void update() {
}
// Add a cleanup function
EMSCRIPTEN_KEEPALIVE void cleanup() {
_running = false;
if (_renderThread.joinable()) {
_renderThread.join();
}
if (_window) {
delete _window;
_window = nullptr;
}
}
}
static constexpr auto kClassName = L"THERMION_WINDOW";
static constexpr auto kWindowName = L"thermion_window";
static bool was_window_hidden_due_to_minimize_ = false;
static WPARAM last_wm_size_wparam_ = SIZE_RESTORED;
uint64_t last_thread_time_ = 0;
static constexpr auto kNativeViewPositionAndShowDelay = 300;
typedef enum _WINDOWCOMPOSITIONATTRIB {
WCA_UNDEFINED = 0,
WCA_NCRENDERING_ENABLED = 1,
WCA_NCRENDERING_POLICY = 2,
WCA_TRANSITIONS_FORCEDISABLED = 3,
WCA_ALLOW_NCPAINT = 4,
WCA_CAPTION_BUTTON_BOUNDS = 5,
WCA_NONCLIENT_RTL_LAYOUT = 6,
WCA_FORCE_ICONIC_REPRESENTATION = 7,
WCA_EXTENDED_FRAME_BOUNDS = 8,
WCA_HAS_ICONIC_BITMAP = 9,
WCA_THEME_ATTRIBUTES = 10,
WCA_NCRENDERING_EXILED = 11,
WCA_NCADORNMENTINFO = 12,
WCA_EXCLUDED_FROM_LIVEPREVIEW = 13,
WCA_VIDEO_OVERLAY_ACTIVE = 14,
WCA_FORCE_ACTIVEWINDOW_APPEARANCE = 15,
WCA_DISALLOW_PEEK = 16,
WCA_CLOAK = 17,
WCA_CLOAKED = 18,
WCA_ACCENT_POLICY = 19,
WCA_FREEZE_REPRESENTATION = 20,
WCA_EVER_UNCLOAKED = 21,
WCA_VISUAL_OWNER = 22,
WCA_HOLOGRAPHIC = 23,
WCA_EXCLUDED_FROM_DDA = 24,
WCA_PASSIVEUPDATEMODE = 25,
WCA_USEDARKMODECOLORS = 26,
WCA_LAST = 27
} WINDOWCOMPOSITIONATTRIB;
typedef struct _WINDOWCOMPOSITIONATTRIBDATA {
WINDOWCOMPOSITIONATTRIB Attrib;
PVOID pvData;
SIZE_T cbData;
} WINDOWCOMPOSITIONATTRIBDATA;
typedef enum _ACCENT_STATE {
ACCENT_DISABLED = 0,
ACCENT_ENABLE_GRADIENT = 1,
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
ACCENT_ENABLE_BLURBEHIND = 3,
ACCENT_ENABLE_ACRYLICBLURBEHIND = 4,
ACCENT_ENABLE_HOSTBACKDROP = 5,
ACCENT_INVALID_STATE = 6
} ACCENT_STATE;
typedef struct _ACCENT_POLICY {
ACCENT_STATE AccentState;
DWORD AccentFlags;
DWORD GradientColor;
DWORD AnimationId;
} ACCENT_POLICY;
typedef BOOL(WINAPI* _GetWindowCompositionAttribute)(
HWND, WINDOWCOMPOSITIONATTRIBDATA*);
typedef BOOL(WINAPI* _SetWindowCompositionAttribute)(
HWND, WINDOWCOMPOSITIONATTRIBDATA*);
static _SetWindowCompositionAttribute g_set_window_composition_attribute = NULL;
static bool g_set_window_composition_attribute_initialized = false;
typedef LONG NTSTATUS, *PNTSTATUS;
#define STATUS_SUCCESS (0x00000000)
typedef NTSTATUS(WINAPI* RtlGetVersionPtr)(PRTL_OSVERSIONINFOW);
RTL_OSVERSIONINFOW GetWindowsVersion() {
HMODULE hmodule = ::GetModuleHandleW(L"ntdll.dll");
if (hmodule) {
RtlGetVersionPtr rtl_get_version_ptr =
(RtlGetVersionPtr)::GetProcAddress(hmodule, "RtlGetVersion");
if (rtl_get_version_ptr != nullptr) {
RTL_OSVERSIONINFOW rovi = {0};
rovi.dwOSVersionInfoSize = sizeof(rovi);
if (STATUS_SUCCESS == rtl_get_version_ptr(&rovi)) {
return rovi;
}
}
}
RTL_OSVERSIONINFOW rovi = {0};
return rovi;
}
void SetWindowComposition(HWND window, int32_t accent_state,
int32_t gradient_color) {
// TODO: Look for a better available API.
if (GetWindowsVersion().dwBuildNumber >= 18362) {
if (!g_set_window_composition_attribute_initialized) {
auto user32 = ::GetModuleHandleA("user32.dll");
if (user32) {
g_set_window_composition_attribute =
reinterpret_cast<_SetWindowCompositionAttribute>(
::GetProcAddress(user32, "SetWindowCompositionAttribute"));
if (g_set_window_composition_attribute) {
g_set_window_composition_attribute_initialized = true;
}
}
}
ACCENT_POLICY accent = {static_cast<ACCENT_STATE>(accent_state), 2,
static_cast<DWORD>(gradient_color), 0};
WINDOWCOMPOSITIONATTRIBDATA data;
data.Attrib = WCA_ACCENT_POLICY;
data.pvData = &accent;
data.cbData = sizeof(accent);
g_set_window_composition_attribute(window, &data);
}
}
// Add tracking for drag state
static bool isDragging = false;
static POINT dragStart = {0, 0};
static POINT windowStart = {0, 0};
LRESULT CALLBACK FilamentWindowProc(HWND const window, UINT const message,
WPARAM const wparam,
LPARAM const lparam) noexcept {
switch (message) {
case WM_DESTROY: {
PostQuitMessage(0);
return 0;
}
case WM_NCHITTEST: {
POINT pt = { LOWORD(lparam), HIWORD(lparam) };
ScreenToClient(window, &pt);
return HTCAPTION;
}
case WM_MOUSEMOVE: {
TRACKMOUSEEVENT event;
event.cbSize = sizeof(event);
event.hwndTrack = window;
event.dwFlags = TME_HOVER;
event.dwHoverTime = 200;
auto user_data = ::GetWindowLongPtr(window, GWLP_USERDATA);
if (user_data) {
HWND flutterRootWindow = reinterpret_cast<HWND>(user_data);
LONG ex_style = ::GetWindowLong(flutterRootWindow, GWL_EXSTYLE);
ex_style &= ~(WS_EX_TRANSPARENT | WS_EX_LAYERED);
::SetWindowLong(flutterRootWindow, GWL_EXSTYLE, ex_style);
}
break;
}
case WM_ERASEBKGND: {
HDC hdc = (HDC)wparam;
RECT rect;
GetClientRect(window, &rect);
ThermionWindow* thermionWindow = reinterpret_cast<ThermionWindow*>(
GetWindowLongPtr(window, GWLP_USERDATA));
if (thermionWindow) {
HBRUSH brush = CreateSolidBrush(RGB(0, 0, 255));
FillRect(hdc, &rect, brush);
DeleteObject(brush);
}
return TRUE;
}
case WM_SIZE:
case WM_MOVE:
case WM_MOVING:
case WM_WINDOWPOSCHANGED: {
auto user_data = ::GetWindowLongPtr(window, GWLP_USERDATA);
if (user_data) {
HWND flutterRootWindow = reinterpret_cast<HWND>(user_data);
LONG ex_style = ::GetWindowLong(flutterRootWindow, GWL_EXSTYLE);
ex_style &= ~(WS_EX_TRANSPARENT | WS_EX_LAYERED);
::SetWindowLong(flutterRootWindow, GWL_EXSTYLE, ex_style);
}
break;
}
default:
return ::DefWindowProc(window, message, wparam, lparam);
}
return 0;
}
ThermionWindow::ThermionWindow(int width,
int height,
int left,
int top) : _width(width), _height(height), _left(left), _top(top) {
PrintDefaultGPU();
auto window_class = WNDCLASSEX{};
::SecureZeroMemory(&window_class, sizeof(window_class));
window_class.cbSize = sizeof(window_class);
window_class.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
window_class.lpfnWndProc = FilamentWindowProc;
window_class.hInstance = GetModuleHandle(nullptr);
window_class.lpszClassName = L"THERMION_WINDOW";
window_class.hCursor = ::LoadCursorW(nullptr, IDC_ARROW);
window_class.hbrBackground = ::CreateSolidBrush(RGB(0,255,0));
::RegisterClassExW(&window_class);
// Create a normal popup window without forcing it to be topmost
_windowHandle = ::CreateWindowW(
L"THERMION_WINDOW",
L"thermion_window",
WS_OVERLAPPEDWINDOW,
left, top, width, height,
nullptr, nullptr,
GetModuleHandle(nullptr),
nullptr
);
// Store the this pointer for use in window procedure
::SetWindowLongPtr(_windowHandle, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(this));
// Disable DWM animations
auto disable_window_transitions = TRUE;
DwmSetWindowAttribute(_windowHandle, DWMWA_TRANSITIONS_FORCEDISABLED,
&disable_window_transitions,
sizeof(disable_window_transitions));
::ShowWindow(_windowHandle, SW_SHOW);
UpdateWindow(_windowHandle);
}
void ThermionWindow::Resize(int width, int height, int left, int top) {
_width = width;
_height = height;
_left = left;
_top = top;
::SetWindowPos(_windowHandle, nullptr, left, top, width, height,
SWP_NOZORDER | SWP_NOACTIVATE);
}
HWND ThermionWindow::GetHandle() { return _windowHandle; }
} // namespace thermion
@@ -0,0 +1,14 @@
#pragma once
#ifdef IS_DLL
#define EMSCRIPTEN_KEEPALIVE __declspec(dllimport)
#else
#define EMSCRIPTEN_KEEPALIVE __declspec(dllexport)
#endif
extern "C" {
intptr_t create_thermion_window(int width, int height, int left, int top);
void update();
}
+42
View File
@@ -0,0 +1,42 @@
name: cli_windows
description: A sample command-line application with basic argument parsing.
version: 0.0.1
# repository: https://github.com/my_org/my_repo
environment:
sdk: ^3.6.0-326.0.dev
# Add regular dependencies here.
dependencies:
args: ^2.5.0
thermion_dart:
path: ../../../thermion_dart
ffi: ^2.1.3
vector_math: ^2.1.4
native_toolchain_c: ^0.4.2
native_assets_cli: ^0.6.1
dev_dependencies:
lints: ^5.0.0
test: ^1.24.0
ffigen: ^13.0.0
ffigen:
output: 'lib/thermion_window.g.dart'
headers:
entry-points:
- 'native/thermion_window.h'
include-directives:
- 'native/thermion_window.h'
ffi-native:
assetId: package:cli_windows/thermion_window.dart
ignore-source-errors: true
llvm-path:
- E:\clang+llvm-19.1.3-x86_64-pc-windows-msvc\bin
- E:\clang+llvm-19.1.3-x86_64-pc-windows-msvc\
- E:\clang+llvm-19.1.3-x86_64-pc-windows-msvc\lib
functions:
leaf:
include:
- '.*'

Some files were not shown because too many files have changed in this diff Show More