diff --git a/examples/lib/animations/misc_animation_keys.dart b/examples/lib/animations/misc_animation_keys.dart index c7e5dc8d..477c22c0 100644 --- a/examples/lib/animations/misc_animation_keys.dart +++ b/examples/lib/animations/misc_animation_keys.dart @@ -28,7 +28,10 @@ class _State extends State { }); threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/animations/webgl_animation_keyframes.dart b/examples/lib/animations/webgl_animation_keyframes.dart index 70e09576..fce421bb 100644 --- a/examples/lib/animations/webgl_animation_keyframes.dart +++ b/examples/lib/animations/webgl_animation_keyframes.dart @@ -27,6 +27,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/animations/webgl_animation_multiple.dart b/examples/lib/animations/webgl_animation_multiple.dart index b71ce6b6..27ae5bb7 100644 --- a/examples/lib/animations/webgl_animation_multiple.dart +++ b/examples/lib/animations/webgl_animation_multiple.dart @@ -28,7 +28,10 @@ class _State extends State { }); threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/animations/webgl_animation_skinning_additive_blending.dart b/examples/lib/animations/webgl_animation_skinning_additive_blending.dart index e0534e9d..c3de50e6 100644 --- a/examples/lib/animations/webgl_animation_skinning_additive_blending.dart +++ b/examples/lib/animations/webgl_animation_skinning_additive_blending.dart @@ -34,6 +34,7 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: true, outputEncoding: three.sRGBEncoding, ) ); diff --git a/examples/lib/animations/webgl_animation_skinning_blending.dart b/examples/lib/animations/webgl_animation_skinning_blending.dart index 09ea66a2..47c201e5 100644 --- a/examples/lib/animations/webgl_animation_skinning_blending.dart +++ b/examples/lib/animations/webgl_animation_skinning_blending.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/animations/webgl_animation_skinning_morph.dart b/examples/lib/animations/webgl_animation_skinning_morph.dart index 7898a4f9..601bcd15 100644 --- a/examples/lib/animations/webgl_animation_skinning_morph.dart +++ b/examples/lib/animations/webgl_animation_skinning_morph.dart @@ -29,6 +29,9 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/animations/webgl_animation_walk.dart b/examples/lib/animations/webgl_animation_walk.dart index df6197e4..1f3e3d00 100644 --- a/examples/lib/animations/webgl_animation_walk.dart +++ b/examples/lib/animations/webgl_animation_walk.dart @@ -67,7 +67,8 @@ class _State extends State { settings: three.Settings( toneMapping: three.ACESFilmicToneMapping, toneMappingExposure: 0.5, - enableShadowMap: true + enableShadowMap: true, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/audio/orientation.dart b/examples/lib/audio/orientation.dart index c582d6d3..9d199e5f 100644 --- a/examples/lib/audio/orientation.dart +++ b/examples/lib/audio/orientation.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/audio/sandbox.dart b/examples/lib/audio/sandbox.dart index 303e8b3f..478b7edf 100644 --- a/examples/lib/audio/sandbox.dart +++ b/examples/lib/audio/sandbox.dart @@ -32,6 +32,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/audio/timing.dart b/examples/lib/audio/timing.dart index 1f7ca32f..00f38ca0 100644 --- a/examples/lib/audio/timing.dart +++ b/examples/lib/audio/timing.dart @@ -31,6 +31,7 @@ class _State extends State { setup: setup, settings: three.Settings( enableShadowMap: true, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/camera/webgl_camera.dart b/examples/lib/camera/webgl_camera.dart index efdcb2ea..99564566 100644 --- a/examples/lib/camera/webgl_camera.dart +++ b/examples/lib/camera/webgl_camera.dart @@ -30,6 +30,7 @@ class _MyAppState extends State { setup: setup, postProcessor: postProcessor, settings: three.Settings( + useOpenGL: useOpenGL, renderOptions: { "minFilter": three.LinearFilter, "magFilter": three.LinearFilter, diff --git a/examples/lib/camera/webgl_camera_array.dart b/examples/lib/camera/webgl_camera_array.dart index a03f7e08..a9d67d55 100644 --- a/examples/lib/camera/webgl_camera_array.dart +++ b/examples/lib/camera/webgl_camera_array.dart @@ -28,6 +28,9 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/clipping/webgl_clipping.dart b/examples/lib/clipping/webgl_clipping.dart index 986cf650..e844dce7 100644 --- a/examples/lib/clipping/webgl_clipping.dart +++ b/examples/lib/clipping/webgl_clipping.dart @@ -32,6 +32,7 @@ class _State extends State { setup: setup, settings: three.Settings( localClippingEnabled: true, + useOpenGL: true ) ); super.initState(); diff --git a/examples/lib/clipping/webgl_clipping_advanced.dart b/examples/lib/clipping/webgl_clipping_advanced.dart index 722f2189..207bd237 100644 --- a/examples/lib/clipping/webgl_clipping_advanced.dart +++ b/examples/lib/clipping/webgl_clipping_advanced.dart @@ -32,6 +32,7 @@ class _State extends State { settings: three.Settings( clippingPlanes: [], localClippingEnabled: true, + useOpenGL: true ) ); super.initState(); diff --git a/examples/lib/clipping/webgl_clipping_intersection.dart b/examples/lib/clipping/webgl_clipping_intersection.dart index e2545b5b..137b008f 100644 --- a/examples/lib/clipping/webgl_clipping_intersection.dart +++ b/examples/lib/clipping/webgl_clipping_intersection.dart @@ -27,11 +27,11 @@ class _State extends State { }); }); threeJs = three.ThreeJS( - onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( - localClippingEnabled: true + localClippingEnabled: true, + useOpenGL: true ) ); super.initState(); diff --git a/examples/lib/clipping/webgl_clipping_stencil.dart b/examples/lib/clipping/webgl_clipping_stencil.dart index 7d278e94..0164ba40 100644 --- a/examples/lib/clipping/webgl_clipping_stencil.dart +++ b/examples/lib/clipping/webgl_clipping_stencil.dart @@ -37,6 +37,7 @@ class _State extends State { localClippingEnabled: true, clearColor: 0x263238, clearAlpha: 1.0, + useOpenGL: true ) ); super.initState(); diff --git a/examples/lib/controls/misc_controls_arcball.dart b/examples/lib/controls/misc_controls_arcball.dart index c0458158..7b965d16 100644 --- a/examples/lib/controls/misc_controls_arcball.dart +++ b/examples/lib/controls/misc_controls_arcball.dart @@ -28,7 +28,10 @@ class _MyAppState extends State { }); threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/controls/misc_controls_device_orientation.dart b/examples/lib/controls/misc_controls_device_orientation.dart index b74b2707..9ce905ad 100644 --- a/examples/lib/controls/misc_controls_device_orientation.dart +++ b/examples/lib/controls/misc_controls_device_orientation.dart @@ -30,6 +30,7 @@ class _MyAppState extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: true, renderOptions: { "minFilter": three.LinearFilter, "magFilter": three.LinearFilter, diff --git a/examples/lib/controls/misc_controls_fly.dart b/examples/lib/controls/misc_controls_fly.dart index bfb3b297..12948217 100644 --- a/examples/lib/controls/misc_controls_fly.dart +++ b/examples/lib/controls/misc_controls_fly.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/controls/misc_controls_map.dart b/examples/lib/controls/misc_controls_map.dart index 8ffd720e..97687856 100644 --- a/examples/lib/controls/misc_controls_map.dart +++ b/examples/lib/controls/misc_controls_map.dart @@ -30,6 +30,7 @@ class _MyAppState extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: true, renderOptions: { "minFilter": three.LinearFilter, "magFilter": three.LinearFilter, diff --git a/examples/lib/controls/misc_controls_orbit.dart b/examples/lib/controls/misc_controls_orbit.dart index 7fed1725..4fc9527c 100644 --- a/examples/lib/controls/misc_controls_orbit.dart +++ b/examples/lib/controls/misc_controls_orbit.dart @@ -32,6 +32,7 @@ class _MyAppState extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: true, renderOptions: { "minFilter": three.LinearFilter, "magFilter": three.LinearFilter, diff --git a/examples/lib/controls/misc_controls_pointerlock.dart b/examples/lib/controls/misc_controls_pointerlock.dart index 4ab247ab..57c1356e 100644 --- a/examples/lib/controls/misc_controls_pointerlock.dart +++ b/examples/lib/controls/misc_controls_pointerlock.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/controls/misc_controls_trackball.dart b/examples/lib/controls/misc_controls_trackball.dart index 2947d23a..3ea935e9 100644 --- a/examples/lib/controls/misc_controls_trackball.dart +++ b/examples/lib/controls/misc_controls_trackball.dart @@ -31,6 +31,7 @@ class _MyAppState extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: true, renderOptions: { "minFilter": three.LinearFilter, "magFilter": three.LinearFilter, diff --git a/examples/lib/controls/misc_controls_transform.dart b/examples/lib/controls/misc_controls_transform.dart index 91e13316..11956b75 100644 --- a/examples/lib/controls/misc_controls_transform.dart +++ b/examples/lib/controls/misc_controls_transform.dart @@ -32,6 +32,9 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ), windowResizeUpdate: (newSize){ final aspect = newSize.width / newSize.height; diff --git a/examples/lib/exporters/misc_exporter_obj.dart b/examples/lib/exporters/misc_exporter_obj.dart index bbaff7ac..ba0e4251 100644 --- a/examples/lib/exporters/misc_exporter_obj.dart +++ b/examples/lib/exporters/misc_exporter_obj.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); gui = Gui((){setState(() {});}); super.initState(); diff --git a/examples/lib/exporters/misc_exporter_ply.dart b/examples/lib/exporters/misc_exporter_ply.dart index caf12b3a..c1f12f7b 100644 --- a/examples/lib/exporters/misc_exporter_ply.dart +++ b/examples/lib/exporters/misc_exporter_ply.dart @@ -31,6 +31,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); gui = Gui((){setState(() {});}); super.initState(); diff --git a/examples/lib/exporters/misc_exporter_stl.dart b/examples/lib/exporters/misc_exporter_stl.dart index 40909689..12934c95 100644 --- a/examples/lib/exporters/misc_exporter_stl.dart +++ b/examples/lib/exporters/misc_exporter_stl.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); gui = Gui((){setState(() {});}); super.initState(); diff --git a/examples/lib/games/flutter_game.dart b/examples/lib/games/flutter_game.dart index c0314cbf..6aeed45a 100644 --- a/examples/lib/games/flutter_game.dart +++ b/examples/lib/games/flutter_game.dart @@ -33,6 +33,7 @@ class _MyAppState extends State { settings: three.Settings( clearAlpha: 0, clearColor: 0xffffff, + useOpenGL: useOpenGL ), ); super.initState(); diff --git a/examples/lib/games/games_fps.dart b/examples/lib/games/games_fps.dart index 6b66ebe1..57225c02 100644 --- a/examples/lib/games/games_fps.dart +++ b/examples/lib/games/games_fps.dart @@ -42,6 +42,9 @@ class _FPSGamePageState extends State { }); }); threeJs = three.ThreeJS( + settings: three.Settings( + useOpenGL: true + ), onSetupComplete: (){ setState(() {}); // Keybindings diff --git a/examples/lib/games/games_fps2.dart b/examples/lib/games/games_fps2.dart index 0e4caef7..f068bdc9 100644 --- a/examples/lib/games/games_fps2.dart +++ b/examples/lib/games/games_fps2.dart @@ -44,7 +44,10 @@ class _FPSGame2PageState extends State { onSetupComplete: (){ setState(() {}); }, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/geometry/marching_cubes.dart b/examples/lib/geometry/marching_cubes.dart index a1e268d6..acea019c 100644 --- a/examples/lib/geometry/marching_cubes.dart +++ b/examples/lib/geometry/marching_cubes.dart @@ -58,7 +58,8 @@ class _MarchingState extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( - renderOptions: {"format": three.RGBAFormat,"samples": 8} + renderOptions: {"format": three.RGBAFormat,"samples": 8}, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/geometry/webgl_buffergeometry_custom_attributes_particles.dart b/examples/lib/geometry/webgl_buffergeometry_custom_attributes_particles.dart index 15cc7bc6..bc0310b6 100644 --- a/examples/lib/geometry/webgl_buffergeometry_custom_attributes_particles.dart +++ b/examples/lib/geometry/webgl_buffergeometry_custom_attributes_particles.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_decals.dart b/examples/lib/geometry/webgl_decals.dart index 6a7dfcaa..38ad759a 100644 --- a/examples/lib/geometry/webgl_decals.dart +++ b/examples/lib/geometry/webgl_decals.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_geometries.dart b/examples/lib/geometry/webgl_geometries.dart index 2d9525a0..43568f75 100644 --- a/examples/lib/geometry/webgl_geometries.dart +++ b/examples/lib/geometry/webgl_geometries.dart @@ -32,6 +32,7 @@ class _State extends State { setup: setup, settings: three.Settings( localClippingEnabled: true, + useOpenGL: true ) ); super.initState(); diff --git a/examples/lib/geometry/webgl_geometry_colors.dart b/examples/lib/geometry/webgl_geometry_colors.dart index 444d9f6e..09e129dd 100644 --- a/examples/lib/geometry/webgl_geometry_colors.dart +++ b/examples/lib/geometry/webgl_geometry_colors.dart @@ -29,9 +29,11 @@ class _MyAppState extends State { }); }); threeJs = three.ThreeJS( - onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_geometry_convex.dart b/examples/lib/geometry/webgl_geometry_convex.dart index 0ce62870..17fc612c 100644 --- a/examples/lib/geometry/webgl_geometry_convex.dart +++ b/examples/lib/geometry/webgl_geometry_convex.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_geometry_dynamic.dart b/examples/lib/geometry/webgl_geometry_dynamic.dart index 89f12b2f..4d56653e 100644 --- a/examples/lib/geometry/webgl_geometry_dynamic.dart +++ b/examples/lib/geometry/webgl_geometry_dynamic.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_geometry_extrude_shapes.dart b/examples/lib/geometry/webgl_geometry_extrude_shapes.dart index 67f979ad..fc9d3242 100644 --- a/examples/lib/geometry/webgl_geometry_extrude_shapes.dart +++ b/examples/lib/geometry/webgl_geometry_extrude_shapes.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_geometry_extrude_splines.dart b/examples/lib/geometry/webgl_geometry_extrude_splines.dart index b52e19f6..59885425 100644 --- a/examples/lib/geometry/webgl_geometry_extrude_splines.dart +++ b/examples/lib/geometry/webgl_geometry_extrude_splines.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_geometry_nurbs.dart b/examples/lib/geometry/webgl_geometry_nurbs.dart index 05bf7628..e6f55b97 100644 --- a/examples/lib/geometry/webgl_geometry_nurbs.dart +++ b/examples/lib/geometry/webgl_geometry_nurbs.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_geometry_shapes.dart b/examples/lib/geometry/webgl_geometry_shapes.dart index 00665ce7..2a6a2c34 100644 --- a/examples/lib/geometry/webgl_geometry_shapes.dart +++ b/examples/lib/geometry/webgl_geometry_shapes.dart @@ -30,14 +30,15 @@ class _MyAppState extends State { onSetupComplete: (){setState(() {});}, setup: setup, - // settings: three.Settings( - // renderOptions: { - // "minFilter": three.LinearFilter, - // "magFilter": three.LinearFilter, - // "format": three.RGBAFormat, - // "samples": 4 - // } - // ) + settings: three.Settings( + renderOptions: { + "minFilter": three.LinearFilter, + "magFilter": three.LinearFilter, + "format": three.RGBAFormat, + "samples": 4 + }, + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_geometry_spline_editor.dart b/examples/lib/geometry/webgl_geometry_spline_editor.dart index 509c9de9..173a7148 100644 --- a/examples/lib/geometry/webgl_geometry_spline_editor.dart +++ b/examples/lib/geometry/webgl_geometry_spline_editor.dart @@ -32,6 +32,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_geometry_text.dart b/examples/lib/geometry/webgl_geometry_text.dart index 1964caee..270dfcb2 100644 --- a/examples/lib/geometry/webgl_geometry_text.dart +++ b/examples/lib/geometry/webgl_geometry_text.dart @@ -30,6 +30,7 @@ class _MyAppState extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: true, renderOptions: { "minFilter": three.LinearFilter, "magFilter": three.LinearFilter, diff --git a/examples/lib/geometry/webgl_interactive_points.dart b/examples/lib/geometry/webgl_interactive_points.dart index 9706d6b3..1d8e50ad 100644 --- a/examples/lib/geometry/webgl_interactive_points.dart +++ b/examples/lib/geometry/webgl_interactive_points.dart @@ -26,6 +26,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_interactive_raycasting_points.dart b/examples/lib/geometry/webgl_interactive_raycasting_points.dart index b9153b6b..25f2c2ce 100644 --- a/examples/lib/geometry/webgl_interactive_raycasting_points.dart +++ b/examples/lib/geometry/webgl_interactive_raycasting_points.dart @@ -26,6 +26,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_points_sprites.dart b/examples/lib/geometry/webgl_points_sprites.dart index c4d655c7..d6da14f7 100644 --- a/examples/lib/geometry/webgl_points_sprites.dart +++ b/examples/lib/geometry/webgl_points_sprites.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/geometry/webgl_sprites.dart b/examples/lib/geometry/webgl_sprites.dart index 2abd42ca..60bc08e5 100644 --- a/examples/lib/geometry/webgl_sprites.dart +++ b/examples/lib/geometry/webgl_sprites.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ), windowResizeUpdate: (size){ final width = size.width; final height = size.height; diff --git a/examples/lib/instancing/webgl_gpgpu_protoplanet.dart b/examples/lib/instancing/webgl_gpgpu_protoplanet.dart index 63db6e8a..8284e6c7 100644 --- a/examples/lib/instancing/webgl_gpgpu_protoplanet.dart +++ b/examples/lib/instancing/webgl_gpgpu_protoplanet.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/instancing/webgl_instancing_dynamic.dart b/examples/lib/instancing/webgl_instancing_dynamic.dart index 2ba6d6c5..1f299c6f 100644 --- a/examples/lib/instancing/webgl_instancing_dynamic.dart +++ b/examples/lib/instancing/webgl_instancing_dynamic.dart @@ -29,6 +29,7 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: useOpenGL, renderOptions: { "minFilter": three.LinearFilter, "magFilter": three.LinearFilter, diff --git a/examples/lib/instancing/webgl_instancing_morph.dart b/examples/lib/instancing/webgl_instancing_morph.dart index 55888d0b..ac6d5b99 100644 --- a/examples/lib/instancing/webgl_instancing_morph.dart +++ b/examples/lib/instancing/webgl_instancing_morph.dart @@ -31,6 +31,7 @@ class _State extends State { settings: three.Settings( enableShadowMap: true, shadowMapType: three.VSMShadowMap, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/instancing/webgl_instancing_performance.dart b/examples/lib/instancing/webgl_instancing_performance.dart index 5a1c78a9..8ab4ba2e 100644 --- a/examples/lib/instancing/webgl_instancing_performance.dart +++ b/examples/lib/instancing/webgl_instancing_performance.dart @@ -42,7 +42,8 @@ class _MyAppState extends State { "magFilter": three.LinearFilter, "format": three.RGBAFormat, "samples": 4 - } + }, + useOpenGL: true ) ); super.initState(); diff --git a/examples/lib/instancing/webgl_instancing_raycasting.dart b/examples/lib/instancing/webgl_instancing_raycasting.dart index 6122b519..5a9b6b15 100644 --- a/examples/lib/instancing/webgl_instancing_raycasting.dart +++ b/examples/lib/instancing/webgl_instancing_raycasting.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/instancing/webgl_instancing_scatter.dart b/examples/lib/instancing/webgl_instancing_scatter.dart index 5d8ddc83..7e795d15 100644 --- a/examples/lib/instancing/webgl_instancing_scatter.dart +++ b/examples/lib/instancing/webgl_instancing_scatter.dart @@ -34,6 +34,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/lights/webgl_lightprobe.dart b/examples/lib/lights/webgl_lightprobe.dart index c9e9fa0f..5f33bcc8 100644 --- a/examples/lib/lights/webgl_lightprobe.dart +++ b/examples/lib/lights/webgl_lightprobe.dart @@ -33,7 +33,8 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( - toneMapping: three.NoToneMapping + toneMapping: three.NoToneMapping, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/lights/webgl_lightprobe_cube_camera.dart b/examples/lib/lights/webgl_lightprobe_cube_camera.dart index 4b673695..7371b21d 100644 --- a/examples/lib/lights/webgl_lightprobe_cube_camera.dart +++ b/examples/lib/lights/webgl_lightprobe_cube_camera.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/lights/webgl_lights_rectarealight.dart b/examples/lib/lights/webgl_lights_rectarealight.dart index 796e61e2..26b8cecd 100644 --- a/examples/lib/lights/webgl_lights_rectarealight.dart +++ b/examples/lib/lights/webgl_lights_rectarealight.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/lights/webgl_lights_spotlight.dart b/examples/lib/lights/webgl_lights_spotlight.dart index 00b022a0..6e409d08 100644 --- a/examples/lib/lights/webgl_lights_spotlight.dart +++ b/examples/lib/lights/webgl_lights_spotlight.dart @@ -33,6 +33,7 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: useOpenGL, enableShadowMap: true, shadowMapType: three.PCFSoftShadowMap, toneMapping: three.ACESFilmicToneMapping, diff --git a/examples/lib/line/webgl_lines_fat.dart b/examples/lib/line/webgl_lines_fat.dart index 1d4ad1e5..8cc7e9bf 100644 --- a/examples/lib/line/webgl_lines_fat.dart +++ b/examples/lib/line/webgl_lines_fat.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); gui = Gui((){setState(() {});}); super.initState(); diff --git a/examples/lib/line/webgl_lines_fat_raycasting.dart b/examples/lib/line/webgl_lines_fat_raycasting.dart index 7985f09c..d476a9f1 100644 --- a/examples/lib/line/webgl_lines_fat_raycasting.dart +++ b/examples/lib/line/webgl_lines_fat_raycasting.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); gui = Gui((){setState(() {});}); super.initState(); diff --git a/examples/lib/line/webgl_lines_fat_wireframe.dart b/examples/lib/line/webgl_lines_fat_wireframe.dart index 907effa5..04c1c726 100644 --- a/examples/lib/line/webgl_lines_fat_wireframe.dart +++ b/examples/lib/line/webgl_lines_fat_wireframe.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); gui = Gui((){setState(() {});}); super.initState(); diff --git a/examples/lib/loaders/webgl_loader_bvh.dart b/examples/lib/loaders/webgl_loader_bvh.dart index c17e00c3..9ead6995 100644 --- a/examples/lib/loaders/webgl_loader_bvh.dart +++ b/examples/lib/loaders/webgl_loader_bvh.dart @@ -26,6 +26,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_collada.dart b/examples/lib/loaders/webgl_loader_collada.dart index d9cb3b33..3e63a366 100644 --- a/examples/lib/loaders/webgl_loader_collada.dart +++ b/examples/lib/loaders/webgl_loader_collada.dart @@ -27,6 +27,9 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_collada_kinematics.dart b/examples/lib/loaders/webgl_loader_collada_kinematics.dart index 15e868ee..7692e68b 100644 --- a/examples/lib/loaders/webgl_loader_collada_kinematics.dart +++ b/examples/lib/loaders/webgl_loader_collada_kinematics.dart @@ -29,6 +29,9 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_collada_skinning.dart b/examples/lib/loaders/webgl_loader_collada_skinning.dart index e6909bdf..141487ab 100644 --- a/examples/lib/loaders/webgl_loader_collada_skinning.dart +++ b/examples/lib/loaders/webgl_loader_collada_skinning.dart @@ -28,7 +28,9 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, - settings: three.Settings() + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_fbx.dart b/examples/lib/loaders/webgl_loader_fbx.dart index 18d5db8c..255125fe 100644 --- a/examples/lib/loaders/webgl_loader_fbx.dart +++ b/examples/lib/loaders/webgl_loader_fbx.dart @@ -30,6 +30,7 @@ class _MyAppState extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: useOpenGL, renderOptions: { "minFilter": three.LinearFilter, "magFilter": three.LinearFilter, diff --git a/examples/lib/loaders/webgl_loader_fbx_nurbs.dart b/examples/lib/loaders/webgl_loader_fbx_nurbs.dart index 2147f343..8c55b5f7 100644 --- a/examples/lib/loaders/webgl_loader_fbx_nurbs.dart +++ b/examples/lib/loaders/webgl_loader_fbx_nurbs.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_gcode.dart b/examples/lib/loaders/webgl_loader_gcode.dart index 0ee3b58c..f33b6f84 100644 --- a/examples/lib/loaders/webgl_loader_gcode.dart +++ b/examples/lib/loaders/webgl_loader_gcode.dart @@ -27,6 +27,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_glb.dart b/examples/lib/loaders/webgl_loader_glb.dart index 7ff3b232..16af5c45 100644 --- a/examples/lib/loaders/webgl_loader_glb.dart +++ b/examples/lib/loaders/webgl_loader_glb.dart @@ -33,7 +33,8 @@ class _MyAppState extends State { // }, settings: three.Settings( clearAlpha: 0, - clearColor: 0xffffff + clearColor: 0xffffff, + useOpenGL: true ), ); super.initState(); diff --git a/examples/lib/loaders/webgl_loader_gltf.dart b/examples/lib/loaders/webgl_loader_gltf.dart index 14024cc5..773ea916 100644 --- a/examples/lib/loaders/webgl_loader_gltf.dart +++ b/examples/lib/loaders/webgl_loader_gltf.dart @@ -30,6 +30,7 @@ class _MyAppState extends State { settings: three.Settings( clearAlpha: 0, clearColor: 0xffffff, + useOpenGL: useOpenGL ), ); super.initState(); diff --git a/examples/lib/loaders/webgl_loader_gltf_3.dart b/examples/lib/loaders/webgl_loader_gltf_3.dart index 163d1158..a7d33021 100644 --- a/examples/lib/loaders/webgl_loader_gltf_3.dart +++ b/examples/lib/loaders/webgl_loader_gltf_3.dart @@ -35,6 +35,7 @@ class _MyAppState extends State { settings: three.Settings( clearAlpha: 0, clearColor: 0xffffff, + useOpenGL: useOpenGL ), ); super.initState(); diff --git a/examples/lib/loaders/webgl_loader_md2.dart b/examples/lib/loaders/webgl_loader_md2.dart index a852f55a..c67f3bcd 100644 --- a/examples/lib/loaders/webgl_loader_md2.dart +++ b/examples/lib/loaders/webgl_loader_md2.dart @@ -33,6 +33,7 @@ class _State extends State { setup: setup, settings: three.Settings( enableShadowMap: true, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/loaders/webgl_loader_obj.dart b/examples/lib/loaders/webgl_loader_obj.dart index cc70d63b..e7e3ae81 100644 --- a/examples/lib/loaders/webgl_loader_obj.dart +++ b/examples/lib/loaders/webgl_loader_obj.dart @@ -28,6 +28,7 @@ class _MyAppState extends State { threeJs = three.ThreeJS( settings: three.Settings( enableShadowMap: false, + useOpenGL: true ), onSetupComplete: (){setState(() {});}, diff --git a/examples/lib/loaders/webgl_loader_obj_mtl.dart b/examples/lib/loaders/webgl_loader_obj_mtl.dart index 9d87119b..bb47be8f 100644 --- a/examples/lib/loaders/webgl_loader_obj_mtl.dart +++ b/examples/lib/loaders/webgl_loader_obj_mtl.dart @@ -27,7 +27,10 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_ply.dart b/examples/lib/loaders/webgl_loader_ply.dart index 6fdacc07..032ba7d3 100644 --- a/examples/lib/loaders/webgl_loader_ply.dart +++ b/examples/lib/loaders/webgl_loader_ply.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_scn.dart b/examples/lib/loaders/webgl_loader_scn.dart index e9071c6e..2e5554db 100644 --- a/examples/lib/loaders/webgl_loader_scn.dart +++ b/examples/lib/loaders/webgl_loader_scn.dart @@ -33,6 +33,7 @@ class _MyAppState extends State { // }, settings: three.Settings( clearAlpha: 0, + useOpenGL: true, clearColor: 0xffffff ), ); diff --git a/examples/lib/loaders/webgl_loader_stl.dart b/examples/lib/loaders/webgl_loader_stl.dart index 9f020e52..c0c91d49 100644 --- a/examples/lib/loaders/webgl_loader_stl.dart +++ b/examples/lib/loaders/webgl_loader_stl.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_svg.dart b/examples/lib/loaders/webgl_loader_svg.dart index 2e9bdea8..c04aa5cc 100644 --- a/examples/lib/loaders/webgl_loader_svg.dart +++ b/examples/lib/loaders/webgl_loader_svg.dart @@ -31,7 +31,10 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_texture_basis.dart b/examples/lib/loaders/webgl_loader_texture_basis.dart index 7c83fbfc..30082dfe 100644 --- a/examples/lib/loaders/webgl_loader_texture_basis.dart +++ b/examples/lib/loaders/webgl_loader_texture_basis.dart @@ -27,7 +27,10 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_usdz.dart b/examples/lib/loaders/webgl_loader_usdz.dart index fbf14962..e8e3024d 100644 --- a/examples/lib/loaders/webgl_loader_usdz.dart +++ b/examples/lib/loaders/webgl_loader_usdz.dart @@ -32,6 +32,7 @@ class _State extends State { settings: three.Settings( toneMapping: three.ACESFilmicToneMapping, toneMappingExposure: 2.0, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/loaders/webgl_loader_vox.dart b/examples/lib/loaders/webgl_loader_vox.dart index fb4c1bb5..6a6f816d 100644 --- a/examples/lib/loaders/webgl_loader_vox.dart +++ b/examples/lib/loaders/webgl_loader_vox.dart @@ -27,6 +27,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/loaders/webgl_loader_xyz.dart b/examples/lib/loaders/webgl_loader_xyz.dart index c8847480..aa525417 100644 --- a/examples/lib/loaders/webgl_loader_xyz.dart +++ b/examples/lib/loaders/webgl_loader_xyz.dart @@ -27,6 +27,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/main.dart b/examples/lib/main.dart index ae8d6180..38ff8b19 100644 --- a/examples/lib/main.dart +++ b/examples/lib/main.dart @@ -49,6 +49,7 @@ import 'package:example/loaders/webgl_loader_stl.dart'; import 'package:example/loaders/webgl_loader_usdz.dart'; import 'package:example/loaders/webgl_loader_vox.dart'; import 'package:example/loaders/webgl_loader_xyz.dart'; +import 'package:example/src/statistics.dart'; import 'package:example/texture/webgl_video_texture.dart'; import 'package:example/material/webgl_materials_car.dart'; import 'package:example/material/webgl_materials_physical_transmission.dart'; @@ -149,7 +150,6 @@ void main() { } class MyApp extends StatefulWidget{ const MyApp({super.key,}) ; - @override MyAppState createState() => MyAppState(); } @@ -159,6 +159,13 @@ class MyAppState extends State { String onPage = ''; double pageLocation = 0; + @override + void initState() { + // TODO: implement initState + super.initState(); + useOpenGL = true; + } + void callback(String page, [double? location]){ onPage = page; if(location != null){ diff --git a/examples/lib/material/webgl_materials.dart b/examples/lib/material/webgl_materials.dart index 88c418bf..5766776e 100644 --- a/examples/lib/material/webgl_materials.dart +++ b/examples/lib/material/webgl_materials.dart @@ -29,7 +29,10 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/material/webgl_materials_browser.dart b/examples/lib/material/webgl_materials_browser.dart index 77a3ef4c..0c2bdd07 100644 --- a/examples/lib/material/webgl_materials_browser.dart +++ b/examples/lib/material/webgl_materials_browser.dart @@ -28,7 +28,10 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/material/webgl_materials_car.dart b/examples/lib/material/webgl_materials_car.dart index 6e4a6128..5227d79c 100644 --- a/examples/lib/material/webgl_materials_car.dart +++ b/examples/lib/material/webgl_materials_car.dart @@ -32,6 +32,7 @@ class _State extends State { setup: setup, settings: three.Settings( enableShadowMap: true, + useOpenGL: useOpenGL, toneMapping: three.ACESFilmicToneMapping, toneMappingExposure: 0.85 ) diff --git a/examples/lib/material/webgl_materials_modified.dart b/examples/lib/material/webgl_materials_modified.dart index 58f0b638..7feda00b 100644 --- a/examples/lib/material/webgl_materials_modified.dart +++ b/examples/lib/material/webgl_materials_modified.dart @@ -27,6 +27,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/material/webgl_materials_physical_transmission.dart b/examples/lib/material/webgl_materials_physical_transmission.dart index 1468bbd6..c1a70e0f 100644 --- a/examples/lib/material/webgl_materials_physical_transmission.dart +++ b/examples/lib/material/webgl_materials_physical_transmission.dart @@ -30,6 +30,7 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: useOpenGL, enableShadowMap: true, toneMapping: three.ACESFilmicToneMapping, toneMappingExposure: params['exposure'] diff --git a/examples/lib/material/webgl_materials_physical_transmission_alpha.dart b/examples/lib/material/webgl_materials_physical_transmission_alpha.dart index f51e6310..75dca1ec 100644 --- a/examples/lib/material/webgl_materials_physical_transmission_alpha.dart +++ b/examples/lib/material/webgl_materials_physical_transmission_alpha.dart @@ -30,6 +30,7 @@ class _State extends State { setup: setup, settings: three.Settings( enableShadowMap: true, + useOpenGL: useOpenGL, toneMapping: three.ACESFilmicToneMapping, toneMappingExposure: params['exposure'] ) diff --git a/examples/lib/material/webgl_materials_subsurface_scattering.dart b/examples/lib/material/webgl_materials_subsurface_scattering.dart index 0c98d340..fb92c8d4 100644 --- a/examples/lib/material/webgl_materials_subsurface_scattering.dart +++ b/examples/lib/material/webgl_materials_subsurface_scattering.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/mirror/webgl_mirror.dart b/examples/lib/mirror/webgl_mirror.dart index 03e7a078..cd9204c7 100644 --- a/examples/lib/mirror/webgl_mirror.dart +++ b/examples/lib/mirror/webgl_mirror.dart @@ -30,6 +30,7 @@ class _State extends State { setup: setup, settings: three.Settings( toneMapping: three.ACESFilmicToneMapping, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/mirror/webgl_portal.dart b/examples/lib/mirror/webgl_portal.dart index b9d17837..0675b522 100644 --- a/examples/lib/mirror/webgl_portal.dart +++ b/examples/lib/mirror/webgl_portal.dart @@ -34,6 +34,7 @@ class _State extends State { settings: three.Settings( localClippingEnabled: true, toneMapping: three.ACESFilmicToneMapping, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/modifers/webgl_modifer_edgesplit.dart b/examples/lib/modifers/webgl_modifer_edgesplit.dart index 8c83cfbe..d6a990c6 100644 --- a/examples/lib/modifers/webgl_modifer_edgesplit.dart +++ b/examples/lib/modifers/webgl_modifer_edgesplit.dart @@ -31,6 +31,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/modifers/webgl_modifer_tessellation.dart b/examples/lib/modifers/webgl_modifer_tessellation.dart index 613027ff..8b372b01 100644 --- a/examples/lib/modifers/webgl_modifer_tessellation.dart +++ b/examples/lib/modifers/webgl_modifer_tessellation.dart @@ -27,6 +27,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/modifers/webgl_modifier_simplifier.dart b/examples/lib/modifers/webgl_modifier_simplifier.dart index a281f75f..db95fd74 100644 --- a/examples/lib/modifers/webgl_modifier_simplifier.dart +++ b/examples/lib/modifers/webgl_modifier_simplifier.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/modifers/webgl_modifier_subdivision.dart b/examples/lib/modifers/webgl_modifier_subdivision.dart index 7c0193b1..707235cb 100644 --- a/examples/lib/modifers/webgl_modifier_subdivision.dart +++ b/examples/lib/modifers/webgl_modifier_subdivision.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/morphtargets/webgl_morphtargets.dart b/examples/lib/morphtargets/webgl_morphtargets.dart index d2f1ff89..795c2086 100644 --- a/examples/lib/morphtargets/webgl_morphtargets.dart +++ b/examples/lib/morphtargets/webgl_morphtargets.dart @@ -27,7 +27,10 @@ class _State extends State { }); threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/morphtargets/webgl_morphtargets_face.dart b/examples/lib/morphtargets/webgl_morphtargets_face.dart index 196e766d..4644365c 100644 --- a/examples/lib/morphtargets/webgl_morphtargets_face.dart +++ b/examples/lib/morphtargets/webgl_morphtargets_face.dart @@ -30,7 +30,8 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( - toneMapping: three.ACESFilmicToneMapping + toneMapping: three.ACESFilmicToneMapping, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/morphtargets/webgl_morphtargets_horse.dart b/examples/lib/morphtargets/webgl_morphtargets_horse.dart index b9a6aa04..87d0535a 100644 --- a/examples/lib/morphtargets/webgl_morphtargets_horse.dart +++ b/examples/lib/morphtargets/webgl_morphtargets_horse.dart @@ -28,7 +28,10 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/morphtargets/webgl_morphtargets_sphere.dart b/examples/lib/morphtargets/webgl_morphtargets_sphere.dart index 7d74b03d..4f765485 100644 --- a/examples/lib/morphtargets/webgl_morphtargets_sphere.dart +++ b/examples/lib/morphtargets/webgl_morphtargets_sphere.dart @@ -27,7 +27,10 @@ class _State extends State { }); threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/morphtargets/webgl_skinning_simple.dart b/examples/lib/morphtargets/webgl_skinning_simple.dart index c435575d..b578b047 100644 --- a/examples/lib/morphtargets/webgl_skinning_simple.dart +++ b/examples/lib/morphtargets/webgl_skinning_simple.dart @@ -28,7 +28,10 @@ class _MyAppState extends State { }); threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/multi_views/multi_views.dart b/examples/lib/multi_views/multi_views.dart index 79f8ab04..c48182e6 100644 --- a/examples/lib/multi_views/multi_views.dart +++ b/examples/lib/multi_views/multi_views.dart @@ -1,96 +1,35 @@ import 'dart:async'; - -import 'package:flutter/foundation.dart'; +import '../src/statistics.dart'; import 'package:flutter/material.dart' hide Matrix4; -import 'package:flutter_angle/flutter_angle.dart'; import 'package:three_js/three_js.dart' as three; class MultiViews extends StatefulWidget { - const MultiViews({super.key}); - @override createState() => _MyAppState(); } class _MyAppState extends State { - three.WebGLRenderer? renderer; - late FlutterAngleTexture three3dRender; - FlutterAngle angle = FlutterAngle(); - - @override - void initState() { - super.initState(); - } - @override - void dispose() { - super.dispose(); - } - - Future init() async { - if(!kIsWeb) { - await angle.init(); - three3dRender = await angle.createTexture( - AngleOptions( - width: 1024, - height: 1024, - dpr: 1 - ) - ); - - Map options = { - "width": 1024, - "height": 1024, - "gl": three3dRender.getContext(), - "antialias": true, - }; - renderer = three.WebGLRenderer(options); - renderer!.autoClear = true; - } - return true; - } - @override Widget build(BuildContext context) { - return Scaffold( - - body: FutureBuilder( - future: init(), - builder: (BuildContext context, AsyncSnapshot snapshot) { - if (!snapshot.hasData) { - return const CircularProgressIndicator(); - } - else{ - return SingleChildScrollView( - child: _build(context) - ); - } - } - ), - ); - - } - - Widget _build(BuildContext context) { - return Column( - children: [ - MultiViews1(renderer: renderer), - Container(height: 2, color: Colors.red,), - MultiViews2(renderer: renderer) - ], + return SingleChildScrollView( + child: Column( + children: [ + const MultiViews1(), + Container(height: 2, color: Colors.red,), + const MultiViews2() + ], + ) ); } - } class MultiViews1 extends StatefulWidget { - final three.WebGLRenderer? renderer; - const MultiViews1({super.key, this.renderer}); - + const MultiViews1({super.key}); @override - createState() => _multi_views1_State(); + createState() => _MultiViews1State(); } -class _multi_views1_State extends State { +class _MultiViews1State extends State { List data = List.filled(60, 0, growable: true); late Timer timer; late three.ThreeJS threeJs; @@ -106,11 +45,10 @@ class _multi_views1_State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ), size: const Size(300,300), - renderer: widget.renderer, - rendererUpdate: (){ - if (!kIsWeb) threeJs.renderer!.setRenderTarget(threeJs.renderTarget); - } ); super.initState(); } @@ -158,13 +96,11 @@ class _multi_views1_State extends State { } class MultiViews2 extends StatefulWidget { - final three.WebGLRenderer? renderer; - const MultiViews2({super.key, this.renderer}); - + const MultiViews2({super.key}); @override - createState() => _multi_views2_State(); + createState() => _MultiViews2State(); } -class _multi_views2_State extends State { +class _MultiViews2State extends State { List data = List.filled(60, 0, growable: true); late Timer timer; late three.ThreeJS threeJs; @@ -180,11 +116,10 @@ class _multi_views2_State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ), size: const Size(300,300), - renderer: widget.renderer, - rendererUpdate: (){ - if (!kIsWeb) threeJs.renderer!.setRenderTarget(threeJs.renderTarget); - } ); super.initState(); } diff --git a/examples/lib/multi_views/webgl2_multiple_rendertargets.dart b/examples/lib/multi_views/webgl2_multiple_rendertargets.dart index 34f2fccb..bd74c5e4 100644 --- a/examples/lib/multi_views/webgl2_multiple_rendertargets.dart +++ b/examples/lib/multi_views/webgl2_multiple_rendertargets.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/multi_views/webgl_multi_views.dart b/examples/lib/multi_views/webgl_multi_views.dart index aaea6175..e455ebb3 100644 --- a/examples/lib/multi_views/webgl_multi_views.dart +++ b/examples/lib/multi_views/webgl_multi_views.dart @@ -29,6 +29,9 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/multi_views/webgl_multiple_scenes_comparison.dart b/examples/lib/multi_views/webgl_multiple_scenes_comparison.dart index 18a6e72c..02426f95 100644 --- a/examples/lib/multi_views/webgl_multiple_scenes_comparison.dart +++ b/examples/lib/multi_views/webgl_multiple_scenes_comparison.dart @@ -27,7 +27,7 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( - + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/others/boxselection.dart b/examples/lib/others/boxselection.dart index c1677701..d47752da 100644 --- a/examples/lib/others/boxselection.dart +++ b/examples/lib/others/boxselection.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/others/webgl_buffergeometry_instancing_billboards.dart b/examples/lib/others/webgl_buffergeometry_instancing_billboards.dart index d724dbfd..6c567a29 100644 --- a/examples/lib/others/webgl_buffergeometry_instancing_billboards.dart +++ b/examples/lib/others/webgl_buffergeometry_instancing_billboards.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/others/webgl_custom_attributes_lines.dart b/examples/lib/others/webgl_custom_attributes_lines.dart index 7c0ef0cf..73144120 100644 --- a/examples/lib/others/webgl_custom_attributes_lines.dart +++ b/examples/lib/others/webgl_custom_attributes_lines.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/others/webgl_geometry_csg.dart b/examples/lib/others/webgl_geometry_csg.dart index 996fbc27..870cabb1 100644 --- a/examples/lib/others/webgl_geometry_csg.dart +++ b/examples/lib/others/webgl_geometry_csg.dart @@ -33,6 +33,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/others/webgl_geometry_csg2.dart b/examples/lib/others/webgl_geometry_csg2.dart index 396d1408..772a729c 100644 --- a/examples/lib/others/webgl_geometry_csg2.dart +++ b/examples/lib/others/webgl_geometry_csg2.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/others/webgl_helpers.dart b/examples/lib/others/webgl_helpers.dart index a07e5c29..14f00e64 100644 --- a/examples/lib/others/webgl_helpers.dart +++ b/examples/lib/others/webgl_helpers.dart @@ -30,7 +30,10 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, - setup: setup + setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/examples/lib/others/webgl_interactive_voxelpainter.dart b/examples/lib/others/webgl_interactive_voxelpainter.dart index 328f0222..e0a4f15b 100644 --- a/examples/lib/others/webgl_interactive_voxelpainter.dart +++ b/examples/lib/others/webgl_interactive_voxelpainter.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/others/webgl_lod.dart b/examples/lib/others/webgl_lod.dart index 5d0e5aed..6160c0fd 100644 --- a/examples/lib/others/webgl_lod.dart +++ b/examples/lib/others/webgl_lod.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/others/webgpu_performance.dart b/examples/lib/others/webgpu_performance.dart index d97f54ed..729ad8ad 100644 --- a/examples/lib/others/webgpu_performance.dart +++ b/examples/lib/others/webgpu_performance.dart @@ -27,7 +27,8 @@ class _State extends State { setup: setup, settings: three.Settings( toneMapping: three.ACESFilmicToneMapping, - toneMappingExposure: 1 + toneMappingExposure: 1, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/postprocessing/webgl_postprocessing_sobel.dart b/examples/lib/postprocessing/webgl_postprocessing_sobel.dart index c2299f97..7205344b 100644 --- a/examples/lib/postprocessing/webgl_postprocessing_sobel.dart +++ b/examples/lib/postprocessing/webgl_postprocessing_sobel.dart @@ -30,6 +30,7 @@ class _State extends State { setup: setup, settings: three.Settings( useSourceTexture: true, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/postprocessing/webgl_postprocessing_unreal_bloom.dart b/examples/lib/postprocessing/webgl_postprocessing_unreal_bloom.dart index c80804c9..32da3d9c 100644 --- a/examples/lib/postprocessing/webgl_postprocessing_unreal_bloom.dart +++ b/examples/lib/postprocessing/webgl_postprocessing_unreal_bloom.dart @@ -34,6 +34,7 @@ class _State extends State { //autoClear: false, toneMapping: three.ReinhardToneMapping, useSourceTexture: true, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/postprocessing/webgl_postprocessing_unreal_bloom_selective.dart b/examples/lib/postprocessing/webgl_postprocessing_unreal_bloom_selective.dart index bef868e7..e012fb6e 100644 --- a/examples/lib/postprocessing/webgl_postprocessing_unreal_bloom_selective.dart +++ b/examples/lib/postprocessing/webgl_postprocessing_unreal_bloom_selective.dart @@ -34,6 +34,7 @@ class _State extends State { settings: three.Settings( //animate: false, useSourceTexture: true, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/rollercoster/webxr_vr_rollercoaster.dart b/examples/lib/rollercoster/webxr_vr_rollercoaster.dart index 94217c54..0944afd6 100644 --- a/examples/lib/rollercoster/webxr_vr_rollercoaster.dart +++ b/examples/lib/rollercoster/webxr_vr_rollercoaster.dart @@ -40,6 +40,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/shaders/webgl_random_uv.dart b/examples/lib/shaders/webgl_random_uv.dart index 15d15769..94474185 100644 --- a/examples/lib/shaders/webgl_random_uv.dart +++ b/examples/lib/shaders/webgl_random_uv.dart @@ -34,7 +34,8 @@ class _State extends State { toneMappingExposure: 0.7, enableShadowMap: true, shadowMapType: three.VSMShadowMap, - animate: false + animate: false, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/shaders/webgl_refraction.dart b/examples/lib/shaders/webgl_refraction.dart index 81666860..384d927c 100644 --- a/examples/lib/shaders/webgl_refraction.dart +++ b/examples/lib/shaders/webgl_refraction.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/shaders/webgl_shader.dart b/examples/lib/shaders/webgl_shader.dart index 7c4c5ac2..442d9192 100644 --- a/examples/lib/shaders/webgl_shader.dart +++ b/examples/lib/shaders/webgl_shader.dart @@ -25,6 +25,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/shaders/webgl_shader_lava.dart b/examples/lib/shaders/webgl_shader_lava.dart index 1a2d58f2..5c960465 100644 --- a/examples/lib/shaders/webgl_shader_lava.dart +++ b/examples/lib/shaders/webgl_shader_lava.dart @@ -31,7 +31,8 @@ class _State extends State { setup: setup, settings: three.Settings( autoClear: false, - useSourceTexture: true + useSourceTexture: true, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/shaders/webgl_shaders_ocean.dart b/examples/lib/shaders/webgl_shaders_ocean.dart index a585d41f..d96dfdd3 100644 --- a/examples/lib/shaders/webgl_shaders_ocean.dart +++ b/examples/lib/shaders/webgl_shaders_ocean.dart @@ -33,6 +33,7 @@ class _State extends State { settings: three.Settings( toneMapping: three.ACESFilmicToneMapping, toneMappingExposure: 0.5, + useOpenGL: useOpenGL, //useSourceTexture: true ) ); diff --git a/examples/lib/shaders/webgl_shaders_sky.dart b/examples/lib/shaders/webgl_shaders_sky.dart index 8b1e857e..0eba4889 100644 --- a/examples/lib/shaders/webgl_shaders_sky.dart +++ b/examples/lib/shaders/webgl_shaders_sky.dart @@ -32,7 +32,8 @@ class _State extends State { setup: setup, settings: three.Settings( toneMapping: three.ACESFilmicToneMapping, - toneMappingExposure: 0.5 + toneMappingExposure: 0.5, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/shadow/webgl_lensflars.dart b/examples/lib/shadow/webgl_lensflars.dart index 3f0b2117..c5bc0c99 100644 --- a/examples/lib/shadow/webgl_lensflars.dart +++ b/examples/lib/shadow/webgl_lensflars.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/shadow/webgl_shadow_contact.dart b/examples/lib/shadow/webgl_shadow_contact.dart index 8cdd304c..b82918f5 100644 --- a/examples/lib/shadow/webgl_shadow_contact.dart +++ b/examples/lib/shadow/webgl_shadow_contact.dart @@ -32,7 +32,8 @@ class _MyAppState extends State { threeJs = three.ThreeJS( settings: three.Settings( //alpha: true, - useSourceTexture: true + useSourceTexture: true, + useOpenGL: true ), onSetupComplete: (){setState(() {});}, diff --git a/examples/lib/shadow/webgl_shadowmap_csm.dart b/examples/lib/shadow/webgl_shadowmap_csm.dart index 775ea5f9..18a6a51f 100644 --- a/examples/lib/shadow/webgl_shadowmap_csm.dart +++ b/examples/lib/shadow/webgl_shadowmap_csm.dart @@ -32,6 +32,7 @@ class _State extends State { setup: setup, settings: three.Settings( shadowMapType: three.PCFSoftShadowMap, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/shadow/webgl_shadowmap_pointlight.dart b/examples/lib/shadow/webgl_shadowmap_pointlight.dart index e576f666..0cc92a54 100644 --- a/examples/lib/shadow/webgl_shadowmap_pointlight.dart +++ b/examples/lib/shadow/webgl_shadowmap_pointlight.dart @@ -34,6 +34,7 @@ class _State extends State { enableShadowMap: true, shadowMapType: three.BasicShadowMap, localClippingEnabled: true, + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/shadow/webgl_shadowmap_viewer.dart b/examples/lib/shadow/webgl_shadowmap_viewer.dart index 68df6dc1..4429b5a6 100644 --- a/examples/lib/shadow/webgl_shadowmap_viewer.dart +++ b/examples/lib/shadow/webgl_shadowmap_viewer.dart @@ -32,6 +32,7 @@ class _MyAppState extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( + useOpenGL: true, enableShadowMap: true, shadowMapType: three.BasicShadowMap, // renderOptions: { diff --git a/examples/lib/shadow/webgl_shadowmap_vsm.dart b/examples/lib/shadow/webgl_shadowmap_vsm.dart index 08659274..7dbe0995 100644 --- a/examples/lib/shadow/webgl_shadowmap_vsm.dart +++ b/examples/lib/shadow/webgl_shadowmap_vsm.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/shadow/webgl_simple_gi.dart b/examples/lib/shadow/webgl_simple_gi.dart index 06b10f90..63a6454e 100644 --- a/examples/lib/shadow/webgl_simple_gi.dart +++ b/examples/lib/shadow/webgl_simple_gi.dart @@ -31,6 +31,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/src/demo.dart b/examples/lib/src/demo.dart index d53dc994..b17aa1e3 100644 --- a/examples/lib/src/demo.dart +++ b/examples/lib/src/demo.dart @@ -25,6 +25,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/src/statistics.dart b/examples/lib/src/statistics.dart index ae9abdb4..d45a081c 100644 --- a/examples/lib/src/statistics.dart +++ b/examples/lib/src/statistics.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; +bool useOpenGL = true; + class Statistics extends StatefulWidget { const Statistics({super.key, required this.data}); - final List data; @override diff --git a/examples/lib/terrain/three_terrain.dart b/examples/lib/terrain/three_terrain.dart index 3e05eecb..69aff6ef 100644 --- a/examples/lib/terrain/three_terrain.dart +++ b/examples/lib/terrain/three_terrain.dart @@ -16,6 +16,7 @@ import 'package:image/image.dart' as img; import 'dart:math' as math; import 'dart:async'; import 'package:three_js_terrain/three_js_terrain.dart' as terrain; +import '../src/statistics.dart'; class TerrainPage extends StatefulWidget { const TerrainPage({super.key}); @@ -37,6 +38,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/terrain/webgl_geometry_terrain.dart b/examples/lib/terrain/webgl_geometry_terrain.dart index c241d6fd..db7fbca8 100644 --- a/examples/lib/terrain/webgl_geometry_terrain.dart +++ b/examples/lib/terrain/webgl_geometry_terrain.dart @@ -29,6 +29,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/terrain/webgl_geometry_terrain_raycast.dart b/examples/lib/terrain/webgl_geometry_terrain_raycast.dart index c845377a..dffe31ec 100644 --- a/examples/lib/terrain/webgl_geometry_terrain_raycast.dart +++ b/examples/lib/terrain/webgl_geometry_terrain_raycast.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/texture/webgl_materials_video_webcam.dart b/examples/lib/texture/webgl_materials_video_webcam.dart index 9efc8467..f8b387c9 100644 --- a/examples/lib/texture/webgl_materials_video_webcam.dart +++ b/examples/lib/texture/webgl_materials_video_webcam.dart @@ -41,6 +41,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); timer = Timer.periodic(const Duration(seconds: 1), (t){ setState(() { diff --git a/examples/lib/texture/webgl_opengl_texture.dart b/examples/lib/texture/webgl_opengl_texture.dart index fa4e744f..0c8cbe4a 100644 --- a/examples/lib/texture/webgl_opengl_texture.dart +++ b/examples/lib/texture/webgl_opengl_texture.dart @@ -27,6 +27,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/texture/webgl_periodictable.dart b/examples/lib/texture/webgl_periodictable.dart index f63cdda8..3178ba9d 100644 --- a/examples/lib/texture/webgl_periodictable.dart +++ b/examples/lib/texture/webgl_periodictable.dart @@ -28,7 +28,7 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( - //animate: false + useOpenGL: useOpenGL ) ); super.initState(); diff --git a/examples/lib/texture/webgl_video_texture.dart b/examples/lib/texture/webgl_video_texture.dart index d3d9ca44..5f2983b4 100644 --- a/examples/lib/texture/webgl_video_texture.dart +++ b/examples/lib/texture/webgl_video_texture.dart @@ -27,6 +27,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/volume/webgl_ubo_arrays.dart b/examples/lib/volume/webgl_ubo_arrays.dart index 155ffa26..9dbf3198 100644 --- a/examples/lib/volume/webgl_ubo_arrays.dart +++ b/examples/lib/volume/webgl_ubo_arrays.dart @@ -28,7 +28,8 @@ class _State extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( - useSourceTexture: true + useSourceTexture: true, + useOpenGL: useOpenGL ), windowResizeUpdate: (newSize){ threeJs.camera.aspect = threeJs.width / threeJs.height; diff --git a/examples/lib/volume/webgl_volume_cloud.dart b/examples/lib/volume/webgl_volume_cloud.dart index 014ced12..a8ba8301 100644 --- a/examples/lib/volume/webgl_volume_cloud.dart +++ b/examples/lib/volume/webgl_volume_cloud.dart @@ -26,6 +26,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ), windowResizeUpdate: (newSize){ threeJs.width = newSize.width; threeJs.height = newSize.height; diff --git a/examples/lib/volume/webgl_volume_instancing.dart b/examples/lib/volume/webgl_volume_instancing.dart index 2686eca6..96b5de10 100644 --- a/examples/lib/volume/webgl_volume_instancing.dart +++ b/examples/lib/volume/webgl_volume_instancing.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/volume/webgl_volume_perlin.dart b/examples/lib/volume/webgl_volume_perlin.dart index 12f7225c..1fe6cec6 100644 --- a/examples/lib/volume/webgl_volume_perlin.dart +++ b/examples/lib/volume/webgl_volume_perlin.dart @@ -28,6 +28,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ), windowResizeUpdate: (newSize){ threeJs.camera.aspect = newSize.width / newSize.height; threeJs.camera.updateProjectionMatrix(); diff --git a/examples/lib/water/webgl_water.dart b/examples/lib/water/webgl_water.dart index 5b67dea2..e5d46461 100644 --- a/examples/lib/water/webgl_water.dart +++ b/examples/lib/water/webgl_water.dart @@ -33,6 +33,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/lib/water/webgl_water_flowmap.dart b/examples/lib/water/webgl_water_flowmap.dart index 40b2e08b..16d1161b 100644 --- a/examples/lib/water/webgl_water_flowmap.dart +++ b/examples/lib/water/webgl_water_flowmap.dart @@ -30,6 +30,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: useOpenGL + ) ); super.initState(); } diff --git a/examples/pubspec.yaml b/examples/pubspec.yaml index 9adc28bb..16a59ad1 100644 --- a/examples/pubspec.yaml +++ b/examples/pubspec.yaml @@ -45,6 +45,8 @@ dependency_overrides: git: url: https://github.com/alex-melnyk/flutter-permission-handler.git path: permission_handler_apple + three_js_core: + path: ../packages/three_js_core flutter: uses-material-design: true diff --git a/packages/three_js/CHANGELOG.md b/packages/three_js/CHANGELOG.md index 29af83d6..2b25d6c7 100755 --- a/packages/three_js/CHANGELOG.md +++ b/packages/three_js/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.1 + +* Updated three_js_core to fix android bug. + ## 0.1.0+1 * Updated readme. diff --git a/packages/three_js/example/lib/main.dart b/packages/three_js/example/lib/main.dart index 58582793..48145b39 100644 --- a/packages/three_js/example/lib/main.dart +++ b/packages/three_js/example/lib/main.dart @@ -48,6 +48,9 @@ class _FlutterGameState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/packages/three_js/pubspec.yaml b/packages/three_js/pubspec.yaml index 9849ce87..c7ef791a 100755 --- a/packages/three_js/pubspec.yaml +++ b/packages/three_js/pubspec.yaml @@ -1,6 +1,6 @@ name: three_js description: "Flutter package converted from threejs and three_dart to allow users to view, edit, and control 3D models." -version: 0.1.0+1 +version: 0.1.1 homepage: https://github.com/Knightro63/three_js/tree/main/packages/three_js topics: @@ -21,7 +21,7 @@ dependencies: three_js_advanced_loaders: ^0.1.0 three_js_animations: ^0.1.0 three_js_controls: ^0.1.0 - three_js_core: ^0.1.0 + three_js_core: ^0.1.2 three_js_core_loaders: ^0.1.0 three_js_curves: ^0.1.0 three_js_simple_loaders: ^0.1.0 diff --git a/packages/three_js_animations/example/lib/main.dart b/packages/three_js_animations/example/lib/main.dart index df6a4063..5aa2c120 100644 --- a/packages/three_js_animations/example/lib/main.dart +++ b/packages/three_js_animations/example/lib/main.dart @@ -41,7 +41,8 @@ class _MyAppState extends State { setup: setup, settings: three.Settings( clearAlpha: 0, - clearColor: 0xffffff + clearColor: 0xffffff, + useOpenGL: true ), ); super.initState(); diff --git a/packages/three_js_bvh_csg/example/lib/main.dart b/packages/three_js_bvh_csg/example/lib/main.dart index 7328b8c0..f385c606 100644 --- a/packages/three_js_bvh_csg/example/lib/main.dart +++ b/packages/three_js_bvh_csg/example/lib/main.dart @@ -40,6 +40,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/packages/three_js_controls/example/lib/main_ori.dart b/packages/three_js_controls/example/lib/main_ori.dart index 10050970..16287069 100644 --- a/packages/three_js_controls/example/lib/main_ori.dart +++ b/packages/three_js_controls/example/lib/main_ori.dart @@ -46,7 +46,8 @@ class _MyAppState extends State { "magFilter": tmath.LinearFilter, "format": tmath.RGBAFormat, "samples": 4 - } + }, + useOpenGL: true ) ); super.initState(); diff --git a/packages/three_js_core/CHANGELOG.md b/packages/three_js_core/CHANGELOG.md index 8d82cb35..6e65a60b 100755 --- a/packages/three_js_core/CHANGELOG.md +++ b/packages/three_js_core/CHANGELOG.md @@ -1,3 +1,11 @@ +## 0.1.2 + +* Added surface producer in Angle options to fix android devices bug. + +## 0.1.1 + +* Added the ability to change to opengl in ThreeJS viewer settings + ## 0.1.0 * Updated to the most current Opengl three.js renderer. diff --git a/packages/three_js_core/lib/others/three_viewer.dart b/packages/three_js_core/lib/others/three_viewer.dart index c10f882c..c9c93677 100644 --- a/packages/three_js_core/lib/others/three_viewer.dart +++ b/packages/three_js_core/lib/others/three_viewer.dart @@ -14,6 +14,7 @@ class Settings{ this.autoClear = true, Map? renderOptions, this.animate = true, + this.useOpenGL = false, this.alpha = false, this.autoClearDepth = true, this.autoClearStencil = true, @@ -35,6 +36,7 @@ class Settings{ } bool animate; + bool useOpenGL; bool logarithmicDepthBuffer; bool useSourceTexture; bool enableShadowMap; @@ -281,7 +283,7 @@ class ThreeJS { width = screenSize!.width; height = screenSize!.height; if(texture == null){ - await angle.init(false,true); + await angle.init(false,!settings.useOpenGL); texture = await angle.createTexture( AngleOptions( @@ -291,6 +293,7 @@ class ThreeJS { alpha: settings.alpha, antialias: true, customRenderer: false, + useSurfaceProducer: true ) ); } diff --git a/packages/three_js_core/pubspec.yaml b/packages/three_js_core/pubspec.yaml index fdde85be..bcc30905 100755 --- a/packages/three_js_core/pubspec.yaml +++ b/packages/three_js_core/pubspec.yaml @@ -1,6 +1,6 @@ name: three_js_core description: "Flutter three_js_core package converted from threejs and three_dart package made for three_js." -version: 0.1.0 +version: 0.1.2 homepage: https://github.com/Knightro63/three_js/tree/main/packages/three_js_core environment: diff --git a/packages/three_js_curves/example/lib/main.dart b/packages/three_js_curves/example/lib/main.dart index ba8c8914..f3e6b6fc 100644 --- a/packages/three_js_curves/example/lib/main.dart +++ b/packages/three_js_curves/example/lib/main.dart @@ -41,6 +41,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/packages/three_js_line/example/lib/main.dart b/packages/three_js_line/example/lib/main.dart index d98e04ce..e40bd847 100644 --- a/packages/three_js_line/example/lib/main.dart +++ b/packages/three_js_line/example/lib/main.dart @@ -40,6 +40,9 @@ class _MyHomePageState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/packages/three_js_modifers/example/lib/main.dart b/packages/three_js_modifers/example/lib/main.dart index 37d3fc02..05ff48d3 100644 --- a/packages/three_js_modifers/example/lib/main.dart +++ b/packages/three_js_modifers/example/lib/main.dart @@ -41,6 +41,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/packages/three_js_modifers/example/lib/main2.dart b/packages/three_js_modifers/example/lib/main2.dart index 1a612e6a..1d59a8ca 100644 --- a/packages/three_js_modifers/example/lib/main2.dart +++ b/packages/three_js_modifers/example/lib/main2.dart @@ -40,6 +40,9 @@ class _State extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/packages/three_js_objects/example/lib/main.dart b/packages/three_js_objects/example/lib/main.dart index 14ebf86b..2053cacb 100644 --- a/packages/three_js_objects/example/lib/main.dart +++ b/packages/three_js_objects/example/lib/main.dart @@ -74,7 +74,8 @@ class _MarchingState extends State { onSetupComplete: (){setState(() {});}, setup: setup, settings: three.Settings( - renderOptions: {"format": tmath.RGBAFormat,"samples": 8} + renderOptions: {"format": tmath.RGBAFormat,"samples": 8}, + useOpenGL: true ) ); super.initState(); diff --git a/packages/three_js_terrain/example/lib/main.dart b/packages/three_js_terrain/example/lib/main.dart index 89c593f2..c98dd334 100644 --- a/packages/three_js_terrain/example/lib/main.dart +++ b/packages/three_js_terrain/example/lib/main.dart @@ -56,6 +56,9 @@ class _TerrainPageState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/packages/three_js_transform_controls/example/lib/main.dart b/packages/three_js_transform_controls/example/lib/main.dart index 52941cf2..5c70c6a4 100644 --- a/packages/three_js_transform_controls/example/lib/main.dart +++ b/packages/three_js_transform_controls/example/lib/main.dart @@ -46,6 +46,9 @@ class _MyAppState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/solar_system/lib/main.dart b/solar_system/lib/main.dart index 49dc7f5d..53c37858 100644 --- a/solar_system/lib/main.dart +++ b/solar_system/lib/main.dart @@ -62,6 +62,9 @@ class _SolarSystem extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/three_cad/lib/src/cad/draw_types.dart b/three_cad/lib/src/cad/draw_types.dart index 19f62efe..73360dd8 100644 --- a/three_cad/lib/src/cad/draw_types.dart +++ b/three_cad/lib/src/cad/draw_types.dart @@ -45,14 +45,16 @@ enum DrawType{ position.needsUpdate = true; } - static Group createCircle(Vector3 position){ + static Group createCircle(Vector3 position, Euler rotation){ Group objects = Group()..name = 'circle'; objects.add(creatPoint(position)); final edges = EdgesGeometry( CircleGeometry(radius: 1, segments: 64),math.pi/8 ); - final line = - LineSegments(edges, LineBasicMaterial.fromMap({'color': 0x06A7E2})) + final line = LineSegments(edges, LineBasicMaterial.fromMap({'color': 0x06A7E2})) ..scale.scale(0) + ..rotation.x = rotation.x + ..rotation.y = rotation.y + ..rotation.z = rotation.z ..position.x = position.x ..position.y = position.y ..position.z = position.z; @@ -61,7 +63,7 @@ enum DrawType{ return objects; } - static Group createBoxCenter(Vector3 position){ + static Group createBoxCenter(Vector3 position, Euler rotation){ Group objects = Group()..name = 'boxCenter'; objects.add(creatPoint(Vector3(-1,1,0))); objects.add(create2PointLine(Vector3(-1,1,0),Vector3(1,1,0))); @@ -77,12 +79,15 @@ enum DrawType{ objects.add(creatPoint(Vector3(0,0,0))); return objects ..scale.scale(0) + ..rotation.x = rotation.x + ..rotation.y = rotation.y + ..rotation.z = rotation.z ..position.x = position.x ..position.y = position.y ..position.z = position.z; } - static Group createBox2Point(Vector3 position){ + static Group createBox2Point(Vector3 position, Euler rotation){ Group objects = Group()..name = 'box2Point'; objects.add(creatPoint(Vector3(1,0,0))); objects.add(create2PointLine(Vector3(1,0,0),Vector3(1,1,0))); @@ -95,6 +100,9 @@ enum DrawType{ return objects ..scale.scale(0) + ..rotation.x = rotation.x + ..rotation.y = rotation.y + ..rotation.z = rotation.z ..position.x = position.x ..position.y = position.y ..position.z = position.z; diff --git a/three_cad/lib/src/cad/sketch.dart b/three_cad/lib/src/cad/sketch.dart index f100f802..95ddf74c 100644 --- a/three_cad/lib/src/cad/sketch.dart +++ b/three_cad/lib/src/cad/sketch.dart @@ -300,7 +300,7 @@ class Draw with EventDispatcher{ break; case DrawType.box2Point: final v1 = sketch!.sketches.last.position; - Vector3 scale = point.clone().sub(v1); + Vector3 scale = point.clone().applyEuler(camera.rotation).sub(v1); sketch!.sketches.last.scale = scale; break; case DrawType.circle: @@ -309,9 +309,15 @@ class Draw with EventDispatcher{ sketch!.sketches.last.children.last.scale = Vector3(dist,dist,dist); break; case DrawType.boxCenter: + Vector3 preScale = Vector3( + camera.rotation.x.abs() == sketch!.meshPlane.rotation.x.abs() && sketch!.meshPlane.rotation.x.abs() != 0?-1:1, + camera.rotation.y.abs() == sketch!.meshPlane.rotation.y.abs() && sketch!.meshPlane.rotation.x.abs() != 0?-1:1, + camera.rotation.z.abs() == sketch!.meshPlane.rotation.z.abs() && sketch!.meshPlane.rotation.x.abs() != 0?-1:1, + ); + print(preScale); final v1 = sketch!.sketches.last.position; - Vector3 scale = point.clone().sub(v1); - sketch!.sketches.last.scale = scale; + Vector3 scale = point.clone().applyEuler(sketch!.meshPlane.rotation).sub(v1); + sketch!.sketches.last.scale = scale.multiply(preScale); break; case DrawType.spline: sketch!.currentSketchPoint!.position.setFrom(point); @@ -320,6 +326,7 @@ class Draw with EventDispatcher{ default: } } + void onPointerDown(WebPointerEvent event) { if(sketch != null){ if(event.button == 0){ @@ -364,8 +371,7 @@ class Draw with EventDispatcher{ void drawBoxCenter(Vector3 mousePosition){ if(_newSketch && !_newSketchDidStart){ sketch?.sketches.add( - DrawType.createBoxCenter(mousePosition) - ..rotation = sketch!.meshPlane.rotation + DrawType.createBoxCenter(mousePosition, sketch!.meshPlane.rotation) ); sketch?.render.add(sketch?.currentSketch); _newSketchDidStart = true; @@ -389,7 +395,7 @@ class Draw with EventDispatcher{ } void drawCircle(Vector3 mousePosition){ if(_newSketch && !_newSketchDidStart){ - sketch?.sketches.add(DrawType.createCircle(mousePosition)); + sketch?.sketches.add(DrawType.createCircle(mousePosition, sketch!.meshPlane.rotation)); sketch?.render.add(sketch?.currentSketch); _newSketchDidStart = true; } @@ -400,7 +406,7 @@ class Draw with EventDispatcher{ } void drawBox2P(Vector3 mousePosition){ if(_newSketch && !_newSketchDidStart){ - sketch?.sketches.add(DrawType.createBox2Point(mousePosition)); + sketch?.sketches.add(DrawType.createBox2Point(mousePosition, sketch!.meshPlane.rotation)); sketch?.render.add(sketch?.currentSketch); _newSketchDidStart = true; } diff --git a/three_cad/lib/ui/ui.dart b/three_cad/lib/ui/ui.dart index eb86d690..fccc039a 100644 --- a/three_cad/lib/ui/ui.dart +++ b/three_cad/lib/ui/ui.dart @@ -4,7 +4,6 @@ import 'package:css/css.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart' hide Actions; import 'package:flutter/services.dart'; -import 'package:flutter_svg/svg.dart'; import 'package:three_cad/src/cad/draw_types.dart'; import 'package:three_cad/src/cad/sketch.dart'; import 'package:three_cad/src/navigation/globals.dart'; @@ -70,6 +69,9 @@ class _UIPageState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); super.initState(); } diff --git a/three_js_editor/lib/src/database/filePicker.dart b/three_js_editor/lib/src/database/filePicker.dart deleted file mode 100644 index f0979139..00000000 --- a/three_js_editor/lib/src/database/filePicker.dart +++ /dev/null @@ -1,72 +0,0 @@ -import 'dart:async'; -import 'package:file_picker/file_picker.dart'; -import 'package:flutter/services.dart'; - -class GetFilePicker{ - static Future pickFiles(List extensions) async { - try { - FilePickerResult? _paths = (await FilePicker.platform.pickFiles( - type: FileType.custom, - allowMultiple: false, - onFileLoading: (FilePickerStatus status) => print(status), - allowedExtensions: extensions, - )); - return _paths; - } - on PlatformException catch (e) { - print('Unsupported operation Pick:' + e.toString()); - } - catch (e) { - print('Pick: '+e.toString()); - } - return null; - } - - static Future clearCachedFiles() async { - try { - await FilePicker.platform.clearTemporaryFiles().then((value){ - return value; - }); - } - on PlatformException catch (e) { - print('Unsupported operation Clear:' + e.toString()); - } - catch (e) { - print('Clear: '+e.toString()); - } - return false; - } - - static Future saveFile(String fileName, String fileType) async { - String? path = ''; - try { - path = await FilePicker.platform.saveFile( - fileName: '$fileName.$fileType', - type: FileType.custom, - allowedExtensions: [fileType] - ); - } - on PlatformException catch (e) { - print('Unsupported operation Select:' + e.toString()); - } - catch (e) { - print('Select: '+e.toString()); - } - return path; - } - - static Future selectFolder() async { - try { - await FilePicker.platform.getDirectoryPath().then((value){ - return value; - }); - } - on PlatformException catch (e) { - print('Unsupported operation Select:' + e.toString()); - } - catch (e) { - print('Select: '+e.toString()); - } - return ''; - } -} \ No newline at end of file diff --git a/three_js_editor/lib/ui.dart b/three_js_editor/lib/ui.dart index 52f69ba2..24165432 100644 --- a/three_js_editor/lib/ui.dart +++ b/three_js_editor/lib/ui.dart @@ -11,15 +11,14 @@ import 'package:three_js_editor/src/navigation/right_click.dart'; import 'package:three_js_editor/src/styles/savedWidgets.dart'; import 'package:three_js/three_js.dart' as three; -import 'package:three_js_editor/ui/camera_control.dart'; import 'package:three_js_helpers/three_js_helpers.dart'; import 'package:three_js_geometry/three_js_geometry.dart'; import 'package:three_js_transform_controls/three_js_transform_controls.dart'; import 'package:three_js_modifers/three_js_modifers.dart'; import 'package:three_js_objects/three_js_objects.dart'; +import 'package:three_js_exporters/three_js_exporters.dart'; import 'src/navigation/navigation.dart'; -import 'src/database/filePicker.dart'; import 'src/styles/globals.dart'; enum ShadingType{wireframe,solid,material} @@ -73,6 +72,7 @@ class _UIPageState extends State { three.Object3D? copy; late RightClick rightClick; + three.Scene scene = three.Scene(); List expands = [false,false,false]; List transfromControllers = [ @@ -127,6 +127,9 @@ class _UIPageState extends State { threeJs = three.ThreeJS( onSetupComplete: (){setState(() {});}, setup: setup, + settings: three.Settings( + useOpenGL: true + ) ); rightClick = RightClick( context: context, @@ -147,14 +150,14 @@ class _UIPageState extends State { switch (options) { case RightClickOptions.delete: control.detach(); - threeJs.scene.remove(intersected!); + scene.remove(intersected!); intersected = null; break; case RightClickOptions.copy: copy = intersected; break; case RightClickOptions.paste: - threeJs.scene.add(intersected); + scene.add(intersected); break; default: } @@ -207,6 +210,8 @@ class _UIPageState extends State { threeJs.scene.add(helper); threeJs.scene.add(editObject); + threeJs.scene.add(scene); + threeJs.domElement.addEventListener( three.PeripheralType.resize, threeJs.onWindowResize @@ -242,7 +247,7 @@ class _UIPageState extends State { case 'v': if(holdingControl){ if(copy != null){ - threeJs.scene.add(copy?.clone()); + scene.add(copy?.clone()); } } break; @@ -297,8 +302,8 @@ class _UIPageState extends State { }); threeJs.domElement.addEventListener(three.PeripheralType.pointerdown, (details){ mousePosition = three.Vector2(details.clientX, details.clientY); - if(threeJs.scene.children.length > avoid && !control.dragging){ - checkIntersection(threeJs.scene.children.sublist(avoid)); + if(!control.dragging){ + checkIntersection(scene.children); } }); } @@ -323,20 +328,21 @@ class _UIPageState extends State { ..computeLineDistances() ..scale.setValues(1,1,1) ); - final cc = CameraControl( - size: 1.8, + + final viewHelper = ViewHelper( + //size: 1.8, offsetType: OffsetType.topRight, - offset: three.Vector2(10, 45), + offset: three.Vector2(-200, 10), screenSize: const Size(120, 120), listenableKey: threeJs.globalKey, - rotationCamera: threeJs.camera, - threeJs: threeJs + camera: threeJs.camera, + //threeJs: threeJs ); threeJs.renderer?.autoClear = false; threeJs.postProcessor = ([double? dt]){ - threeJs.renderer!.render( threeJs.scene, threeJs.camera ); - cc.postProcessor(); + threeJs.renderer?.render( threeJs.scene, threeJs.camera ); + viewHelper.render(threeJs.renderer!); }; } @@ -356,11 +362,8 @@ class _UIPageState extends State { case LSICallbacks.clear: setState(() { resetNav = !resetNav; - if(threeJs.scene.children.length > avoid){ - for(int i = avoid; i < threeJs.scene.children.length;i++){ - threeJs.scene.children[i].dispose(); - } - threeJs.scene.children.length = avoid; + for(final obj in scene.children){ + obj.dispose(); } }); break; @@ -392,6 +395,16 @@ class _UIPageState extends State { } } } + void materialWireframeAll(){ + for(final o in scene.children){ + if(o is! BoundingBoxHelper){ + o.material?.wireframe = true; + o.material?.vertexColors = false; + o.material?.colorWrite = true; + materialWireframe(o.children); + } + } + } void materialVertexMode(List objects){ for(final o in objects){ if(o is! BoundingBoxHelper){ @@ -896,8 +909,8 @@ class _UIPageState extends State { ), ), ), - Row( - mainAxisAlignment: MainAxisAlignment.center, + Wrap( + runAlignment: WrapAlignment.spaceBetween, children: [ const Text('Object: '), Container( @@ -1004,8 +1017,8 @@ class _UIPageState extends State { ) ]; - for(int i = avoid; i < threeJs.scene.children.length; i++){ - final child = threeJs.scene.children[i]; + for(final obj in scene.children){ + final child = obj; booleanSelector.add(DropdownMenuItem( value: '${child.name}|${child.id}', child: Text( @@ -1154,7 +1167,7 @@ class _UIPageState extends State { object.scale = three.Vector3(0.01,0.01,0.01); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = objs.files[i].name.split('.').first; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); } } setState(() {}); @@ -1173,7 +1186,7 @@ class _UIPageState extends State { box.setFromObject(object!); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = value.files[i].name.split('.').first; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); } } setState(() {}); @@ -1195,7 +1208,7 @@ class _UIPageState extends State { object.scale = three.Vector3(0.01,0.01,0.01); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = value.files[i].name.split('.').first; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); } } setState(() {}); @@ -1210,12 +1223,15 @@ class _UIPageState extends State { GetFilePicker.pickFiles(['glb','gltf']).then((value)async{ if(value != null){ for(int i = 0; i < value.files.length;i++){ + final loader = three.GLTFLoader(); + final String path = value.files[i].path!; + loader.setPath(path.replaceAll(path.split('/').last, '')); final object = await three.GLTFLoader().fromPath(value.files[i].path!); final three.BoundingBox box = three.BoundingBox(); box.setFromObject(object!.scene); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.scene.name = value.files[i].name.split('.').first; - threeJs.scene.add(object.scene.add(h)); + scene.add(object.scene.add(h)); } } setState(() {}); @@ -1239,7 +1255,7 @@ class _UIPageState extends State { BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.scale = three.Vector3(0.01,0.01,0.01); object.name = value.files[i].name; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); } } }); @@ -1262,7 +1278,7 @@ class _UIPageState extends State { BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.scale = three.Vector3(0.01,0.01,0.01); object.name = value.files[i].name; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); } } }); @@ -1285,7 +1301,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = value.files[i].name; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); } } }); @@ -1308,7 +1324,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = value.files[i].name; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); } } }); @@ -1337,7 +1353,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = value.files[i].name; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); } } }); @@ -1349,6 +1365,62 @@ class _UIPageState extends State { name: 'Export', icon: Icons.file_upload_outlined, subItems: [ + NavItems( + name: 'stl', + icon: Icons.file_upload_outlined, + subItems: [ + NavItems( + name: 'ascii', + icon: Icons.file_copy_outlined, + function: (data){ + callBacks(call: LSICallbacks.updatedNav); + STLExporter.exportScene('untilted', scene); + } + ), + NavItems( + name: 'binary', + icon: Icons.image, + function: (data){ + setState(() { + callBacks(call: LSICallbacks.updatedNav); + STLBinaryExporter.exportScene('untilted', scene); + }); + } + ) + ] + ), + NavItems( + name: 'ply', + icon: Icons.file_upload_outlined, + subItems: [ + NavItems( + name: 'ascii', + icon: Icons.file_copy_outlined, + function: (data){ + callBacks(call: LSICallbacks.updatedNav); + PLYExporter.exportScene('untilted', scene); + } + ), + NavItems( + name: 'binary', + icon: Icons.image, + function: (data){ + setState(() { + callBacks(call: LSICallbacks.updatedNav); + PLYExporter.exportScene('untilted', scene, PLYOptions(type: ExportTypes.binary)); + }); + } + ) + ] + ), + NavItems( + name: 'obj', + icon: Icons.file_copy_outlined, + function: (data){ + callBacks(call: LSICallbacks.updatedNav); + OBJExporter.exportScene('untilted', scene); + } + ), NavItems( name: 'json', icon: Icons.file_copy_outlined, @@ -1413,7 +1485,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = 'Plane'; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); }, ), NavItems( @@ -1427,7 +1499,7 @@ class _UIPageState extends State { BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.receiveShadow = true; object.name = 'Cube'; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); }, ), NavItems( @@ -1440,7 +1512,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = 'Circle'; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); }, ), NavItems( @@ -1453,7 +1525,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = 'Sphere'; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); }, ), NavItems( @@ -1466,7 +1538,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = 'Ico Sphere'; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); }, ), NavItems( @@ -1479,7 +1551,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = 'Cylinder'; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); }, ), NavItems( @@ -1492,7 +1564,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = 'Cone'; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); }, ), NavItems( @@ -1505,7 +1577,7 @@ class _UIPageState extends State { box.setFromObject(object); BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; object.name = 'Torus'; - threeJs.scene.add(object.add(h)); + scene.add(object.add(h)); }, ), ] @@ -1516,15 +1588,15 @@ class _UIPageState extends State { function: (e){ if(effect == null){ effect = MarchingCubes(28, three.MeshStandardMaterial.fromMap({'flatShading': true}), true, true, 100000 ); - effect!.position.setValues( 0, 0, 0 ); + effect!.position.setValues( math.Random().nextDouble(), math.Random().nextDouble(),math.Random().nextDouble()); effect!.scale.setValues( 1, 1, 1 ); effect!.enableUvs = false; effect!.enableColors = false; effect!.name = 'MarchingCubes'; - threeJs.scene.add(mp); - threeJs.scene.add( effect! ); + scene.add(mp); + scene.add( effect! ); } final b = three.BufferGeometry(); List v = [0.5,0.5,0.5]; @@ -1561,7 +1633,7 @@ class _UIPageState extends State { BoundingBoxHelper h = BoundingBoxHelper(box)..visible = false; obj.name = 'Text'; obj.scale = three.Vector3(0.01,0.01,0.01); - threeJs.scene.add(obj.add(h)); + scene.add(obj.add(h)); setState(() {}); } ), @@ -1681,7 +1753,7 @@ class _UIPageState extends State { children: [ InkWell( onTap: (){ - materialWireframe(threeJs.scene.children.sublist(avoid)); + materialWireframeAll(); setState(() { shading = ShadingType.wireframe; }); @@ -1705,7 +1777,7 @@ class _UIPageState extends State { ), InkWell( onTap: (){ - materialReset(threeJs.scene.children.sublist(avoid)); + materialReset(scene.children); setState(() { shading = ShadingType.solid; }); @@ -1726,7 +1798,7 @@ class _UIPageState extends State { ), InkWell( onTap: (){ - materialVertexMode(threeJs.scene.children.sublist(avoid)); + materialVertexMode(scene.children); setState(() { shading = ShadingType.material; }); diff --git a/three_js_editor/lib/ui/camera_control.dart b/three_js_editor/lib/ui/camera_control.dart deleted file mode 100644 index 4b11798c..00000000 --- a/three_js_editor/lib/ui/camera_control.dart +++ /dev/null @@ -1,197 +0,0 @@ -import 'dart:math' as math; -import 'package:three_js_core/three_js_core.dart'; -import 'package:flutter/material.dart'; -import 'package:three_js_math/three_js_math.dart'; -import 'package:three_js_transform_controls/three_js_transform_controls.dart'; - -enum OffsetType { - topLeft, - bottomLeft, - bottomRight, - topRight, - center -} - -class CameraControl with EventDispatcher{ - late GlobalKey listenableKey; - PeripheralsState get _domElement => listenableKey.currentState!; - - late Scene scene; - late Camera camera; - - final double size; - late final Vector2 offset; - late Size screenSize; - - Camera rotationCamera; - ThreeJS threeJs; - - final Vector2 _scissorPos = Vector2(); - Vector2? _pointerPos; - OffsetType offsetType; - final Raycaster _raycaster = Raycaster(); - late Mesh _controls; - - CameraControl({ - Vector2? offset, - this.offsetType = OffsetType.bottomLeft, - this.size = 1, - required this.screenSize, - required this.listenableKey, - required this.rotationCamera, - required this.threeJs, - }) { - this.offset = offset ?? Vector2(); - _calculatePosition(); - scene = Scene(); - camera = OrthographicCamera( - 1,1,1,-1, 0.1, 2000 ); - camera.position.z = 10; - - _controls = TransformControlsGizmo.setupGizmo(TransformControlsGizmo.gizmoInfo(GizmoType.view,ContorlsMode.gizmo)); - _controls.quaternion = rotationCamera.quaternion; - _controls.position.setValues( 0.0, 0.0, 0.0 ); - _controls.scale.setValues( size, size, size ); - scene.add(_controls); - activate(); - } - - void _calculatePosition(){ - if(offsetType == OffsetType.bottomLeft){ - _scissorPos.x = offset.x; - _scissorPos.y = offset.y; - } - else if(offsetType == OffsetType.bottomRight){ - _scissorPos.x = threeJs.width-(offset.x+screenSize.width*1.3); - _scissorPos.y = offset.y; - } - else if(offsetType == OffsetType.topLeft){ - _scissorPos.x = offset.x; - _scissorPos.y = threeJs.height-(offset.y+screenSize.height*1.1); - } - else if(offsetType == OffsetType.topRight){ - _scissorPos.x = threeJs.width-(offset.x+screenSize.width*1.3); - _scissorPos.y = threeJs.height-(offset.y+screenSize.height*1.1); - } - else if(offsetType == OffsetType.center){ - _scissorPos.x = (threeJs.width/2-(screenSize.width*1.3)/2);//offset.x+ - _scissorPos.y = (threeJs.height/2-(screenSize.height*1.1)/2);//offset.y+ - } - } - void _calculatePointerPosition(Size size){ - _pointerPos = Vector2(); - if(offsetType == OffsetType.bottomLeft){ - _pointerPos!.x = offset.x; - _pointerPos!.y = size.height-(offset.y+screenSize.height); - } - else if(offsetType == OffsetType.bottomRight){ - _pointerPos!.x = size.width-(offset.x+screenSize.width); - _pointerPos!.y = size.height-(offset.y+screenSize.height); - } - else if(offsetType == OffsetType.topLeft){ - _pointerPos!.x = offset.x; - _pointerPos!.y = offset.y;//size.height-(offset.y+screenSize.height); - } - else if(offsetType == OffsetType.topRight){ - _pointerPos!.x = size.width-(offset.x+screenSize.width); - _pointerPos!.y = offset.y;//size.height-(offset.y+screenSize.height); - } - else if(offsetType == OffsetType.center){ - _pointerPos!.x = (size.width/2-(screenSize.width)/2);//offset.x+ - _pointerPos!.y = (size.height/2-(screenSize.height)/2);//offset.y+ - } - } - void postProcessor(){ - threeJs.renderer?.setScissorTest( true ); - threeJs.renderer?.setScissor( _scissorPos.x, _scissorPos.y, screenSize.width*1.3, screenSize.height*1.1 ); - threeJs.renderer?.setViewport( _scissorPos.x, _scissorPos.y, screenSize.width*1.3, screenSize.height*1.1 ); - threeJs.renderer!.render(scene, camera); - threeJs.renderer?.setScissorTest( false ); - } - - void updatePointer(event) { - - } - void update(){ - - } - void onPointerDown(event) { - final i = intersectObjectWithRay(event); - if(i?.object?.name != null){ - if(i?.object?.name == 'X'){ - threeJs.camera.position.setValues(5,0,0); - threeJs.camera.lookAt(Vector3(math.pi, 0, 0)); - threeJs.camera.updateMatrix(); - } - else if(i?.object?.name == 'Y'){ - threeJs.camera.position.setValues(0,5,0); - threeJs.camera.lookAt(Vector3(0, 0, 0)); - threeJs.camera.updateMatrix(); - } - else if(i?.object?.name == 'Z'){ - threeJs.camera.position.setValues(0,0,5); - threeJs.camera.lookAt(Vector3(0, 0, math.pi)); - threeJs.camera.updateMatrix(); - } - } - } - void onPointerCancel(event) { - - } - void onPointerMove(event) { - - } - void pointerHover(Pointer pointer) { - - } - Pointer? getPointer(WebPointerEvent event) { - if(event.button == 0){ - final RenderBox renderBox = listenableKey.currentContext!.findRenderObject() as RenderBox; - final size = renderBox.size; - - if(_pointerPos == null){ - _calculatePointerPosition(size); - } - - final x_ = (event.clientX - _pointerPos!.x) / screenSize.width * 2 - 1; - final y_ = -(event.clientY - _pointerPos!.y) / screenSize.height* 2 + 1.06; - final button = event.button; - return Pointer(x_, y_, button); - } - return null; - } - Intersection? intersectObjectWithRay(WebPointerEvent event) { - final pointer = getPointer(event); - if(pointer != null){ - _raycaster.setFromCamera(Vector2(pointer.x, pointer.y), camera); - final all = _raycaster.intersectObject(_controls, true); - if(all.isNotEmpty){ - return all[0]; - } - } - - return null; - } - - /// Adds the event listeners of the controls. - void activate() { - _domElement.addEventListener(PeripheralType.pointermove, onPointerMove); - _domElement.addEventListener(PeripheralType.pointerdown, onPointerDown); - _domElement.addEventListener(PeripheralType.pointerup, onPointerCancel); - //_domElement.addEventListener(PeripheralType.pointerleave, onPointerCancel); - threeJs.addAnimationEvent((dt){ - update(); - }); - } - - /// Removes the event listeners of the controls. - void deactivate() { - _domElement.removeEventListener(PeripheralType.pointermove, onPointerMove); - _domElement.removeEventListener(PeripheralType.pointerdown, onPointerDown); - _domElement.removeEventListener(PeripheralType.pointerup, onPointerCancel); - //_domElement.removeEventListener(PeripheralType.pointerleave, onPointerCancel); - } - - void dispose(){ - clearListeners(); - } -} \ No newline at end of file diff --git a/three_js_editor/pubspec.yaml b/three_js_editor/pubspec.yaml index fa41f554..c3402d7e 100644 --- a/three_js_editor/pubspec.yaml +++ b/three_js_editor/pubspec.yaml @@ -9,18 +9,18 @@ dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.6 - file_picker: ^8.0.6 + file_picker: ^10.1.2 flutter_colorpicker: ^1.1.0 - three_js: ^0.0.5 - three_js_helpers: ^0.0.4 - three_js_geometry: ^0.0.2 - three_js_transform_controls: ^0.0.3 - three_js_svg: ^0.0.3 - three_js_objects: ^0.0.2 - three_js_tjs_loader: ^0.0.3 - three_js_postprocessing: ^0.0.2 - three_js_modifers: ^0.0.2 - three_js_bvh_csg: ^0.0.1 + three_js: ^0.1.0 + three_js_helpers: ^0.1.0 + three_js_transform_controls: ^0.1.0 + three_js_svg: ^0.1.0 + three_js_objects: ^0.1.0 + three_js_tjs_loader: ^0.1.0 + three_js_postprocessing: ^0.1.0 + three_js_modifers: ^0.1.0 + three_js_exporters: ^0.1.0 + three_js_bvh_csg: ^0.1.0 css: git: url: https://github.com/Knightro63/css.git @@ -28,7 +28,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^5.0.0 flutter: uses-material-design: true