Commit Graph
100 Commits
Author SHA1 Message Date
Nick Fisher 6b36d67ed7 feat: add gizmo.glb to assets/resources 2025-01-07 08:25:48 +08:00
Nick Fisher 5564be9ce9 feat: add TRACE macro 2025-01-07 08:25:48 +08:00
Nick Fisher 9f676f42b9 remove old HighlightOverlay class 2025-01-07 08:25:48 +08:00
Nick Fisher 981fd63963 update overlay tests 2025-01-07 08:25:48 +08:00
Nick Fisher cb9320f3a1 remove pragma from Geometry builder cpp 2025-01-07 08:25:48 +08:00
Nick Fisher 6d5bc305dc fix SceneManager_createCameraRenderThread 2025-01-07 08:25:48 +08:00
Nick Fisher 1c5b5c890b reimplement grid as SceneAsset 2025-01-07 08:25:48 +08:00
Nick Fisher e43e1c9cbd flip camera wireframe direction 2025-01-07 08:25:48 +08:00
Nick Fisher 5fe985d2c7 add create/set camera render thread functions 2025-01-07 08:25:48 +08:00
Nick Fisher 80ca4b97a9 add create/set camera render thread functions 2025-01-07 08:25:48 +08:00
Nick Fisher d3b4bed654 move grid clipspace.z closer to camera to allow for skybox 2025-01-07 08:25:48 +08:00
Nick Fisher c117555b2c gizmo improvements, use render thread methods for createCamera, allow setParent null to unparent transform 2025-01-07 08:25:48 +08:00
Nick Fisher abbf2d5391 update bindings 2025-01-07 08:25:48 +08:00
Nick Fisher a31c800204 add wireframe camera to geometry 2025-01-07 08:25:48 +08:00
Nick Fisher 877e8def80 add dithering to view 2025-01-07 08:25:48 +08:00
Nick Fisher fb650dbd52 allow null parent to setParent 2025-01-07 08:25:48 +08:00
Nick Fisher c34c7d5545 change grid priority 2025-01-07 08:25:48 +08:00
Nick Fisher fe37d45e1a return null entity for grid overlay 2025-01-07 08:25:48 +08:00
Nick Fisher bf3d4f7c0e add dithering to view 2025-01-07 08:25:48 +08:00
Nick Fisher 69643e26f6 whitespace 2025-01-07 08:25:48 +08:00
Nick Fisher 44b502a1e4 add dithering to view 2025-01-07 08:25:48 +08:00
Nick Fisher 6d36dc7923 add dithering to view 2025-01-07 08:25:48 +08:00
Nick Fisher 151935913f allow null parent to setParent 2025-01-07 08:25:48 +08:00
Nick Fisher d72ed58436 in createGeometry, all geometry entities to scene 2025-01-07 08:25:48 +08:00
Nick Fisher d53a8b20b8 move Geometry asset builder from header to own implementation 2025-01-07 08:25:48 +08:00
Nick Fisher 600ab1ad28 update tests 2025-01-07 08:25:48 +08:00
Nick Fisher aa7350c419 gizmo & picking improvements 2025-01-07 08:25:48 +08:00
Nick Fisher c2077cb6b1 fix: store reference to material instances in ThermionViewer so they can be cleaned up on dispose 2025-01-07 08:25:48 +08:00
Nick Fisher bedd50ec38 chore: update pubspec.yaml with new package name 2025-01-07 08:25:48 +08:00
Nick Fisher 8a3525d879 chore: temporarily disable ThermionWidgetWebImpl 2025-01-07 08:25:48 +08:00
Nick Fisher 853f1d1a68 feat!: remove superseded ThermionWindows widget 2025-01-07 08:25:48 +08:00
Nick Fisher 7e50f0317e feat: use new createTextureAndBindToView in ThermionTextureWidget 2025-01-07 08:25:48 +08:00
Nick Fisher 724d7532e2 chore: docstring fixes 2025-01-07 08:25:48 +08:00
Nick Fisher 45a548afd2 feat!: rename thermion_flutter_ffi package to thermion_flutter_method_channel 2025-01-07 08:25:48 +08:00
Nick Fisher e8b4b7806b feat!: rename thermion_flutter_ffi package to thermion_flutter_method_channel 2025-01-07 08:25:48 +08:00
Nick Fisher 133367669d feat: create separate createTexture and createTextureAndBindToView interface methods 2025-01-07 08:25:48 +08:00
Nick Fisher 60a09a1cd9 chore: rename thermion_flutter_ffi in example projects 2025-01-07 08:25:48 +08:00
Nick Fisher 9128fbbd61 chore: rename local variable in ThermionTexture.swift to avoid compiler warning 2025-01-07 08:25:48 +08:00
Nick Fisher c3c6465908 documentation 2025-01-07 08:25:48 +08:00
Nick Fisher ed444b0615 feature!:
This is a breaking change needed to fully implement instancing and stencil highlighting.

Previously, users would work directly with entities (on the Dart side, ThermionEntity), e.g.

final entity = await viewer.loadGlb("some.glb");

However, Filament "entities" are a lower-level abstraction.

Loading a glTF file, for example, inserts multiple entities into the scene.

For example, each mesh, light, and camera within a glTF asset will be assigned an entity. A top-level (non-renderable) entity will also be created for the glTF asset, which can be used to transform the entire hierarchy.

"Asset" is a better representation for loading/inserting objects into the scene; think of this as a bundle of entities.

Unless you need to work directly with transforms, instancing, materials and renderables, you can work directly with ThermionAsset.
2024-11-27 15:02:37 +11:00
Nick Fisher 9ada6aae64 chore: rename to Viewer_destroy 2024-11-21 12:32:52 +08:00
Nick Fisher 0ef0f37bbf chore: update stubs 2024-11-21 12:32:34 +08:00
Nick Fisher df37f5e95f test cleanup 2024-11-21 12:32:17 +08:00
Nick Fisher 468cada6c6 update bindings 2024-11-21 12:31:58 +08:00
Nick Fisher e60ab51b79 fix: remove MaterialInstance from SceneManager storage when destroyed 2024-11-21 12:31:36 +08:00
Nick Fisher d58a48061c fix: remove MaterialInstance from SceneManager storage when destroyed 2024-11-21 12:31:04 +08:00
Nick Fisher cabb62043d feat: re-add uvScale, vertexScale to unlit material 2024-11-21 12:30:51 +08:00
Nick Fisher b7bc46b94a feat: re-add uvScale, vertexScale to unlit material 2024-11-21 12:30:20 +08:00
Nick Fisher bc8edb7eb4 fix: remove MaterialInstance from SceneManager storage when destroyed 2024-11-21 12:29:54 +08:00
Nick Fisher 5deb2ad7cf chore: factor out SceneManager_ methods 2024-11-21 11:16:54 +08:00
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