From 7eab50d9e4bf6156514a33dc2322df040a38a19f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Crozet?= Date: Fri, 2 Jan 2026 22:35:27 +0100 Subject: [PATCH 1/4] =?UTF-8?q?feat:=E2=80=AFmigrate=20codebase=20to=20gla?= =?UTF-8?q?m?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 2 +- .run/camera.run.xml | 5 +- .run/clippy.run.xml | 2 +- .run/cube (web).run.xml | 5 +- .run/cube.run.xml | 2 +- .run/instancing2d (web).run.xml | 5 +- .run/instancing2d.run.xml | 2 +- .run/lines.run.xml | 5 +- .run/lines2d (web).run.xml | 19 + .run/lines2d.run.xml | 20 + .run/multi_light (web).run.xml | 20 + .run/multi_light.run.xml | 20 + .run/multi_windows.run.xml | 7 +- .run/obj.run.xml | 5 +- ...s (web).run.xml => points2d (web).run.xml} | 4 +- ...nar_polylines.run.xml => points2d.run.xml} | 4 +- ...web).run.xml => polylines2d (web).run.xml} | 4 +- ...anar_lines.run.xml => polylines2d.run.xml} | 6 +- .run/primitives.run.xml | 5 +- .run/primitives2d.run.xml | 2 +- .run/procedural.run.xml | 2 +- .run/rectangle.run.xml | 5 +- .run/stereo.run.xml | 5 +- .run/test.run.xml | 2 +- .run/ui (web).run.xml | 1 + .run/ui.run.xml | 2 +- CHANGELOG.md | 200 ++ CLAUDE.md | 66 +- Cargo.toml | 32 +- README.md | 24 +- examples/add_remove.rs | 23 +- examples/camera.rs | 44 +- examples/cube.rs | 23 +- examples/custom_material.rs | 181 +- examples/custom_mesh.rs | 41 +- examples/custom_mesh_shared.rs | 69 +- examples/decomp.rs | 45 +- examples/event.rs | 22 +- examples/group.rs | 44 +- examples/instancing2d.rs | 39 +- examples/instancing3d.rs | 34 +- examples/lines.rs | 35 +- examples/lines2d.rs | 18 + examples/mouse_events.rs | 40 +- examples/multi_light.rs | 68 + examples/multi_windows.rs | 44 +- examples/obj.rs | 39 +- examples/planar_lines.rs | 23 - examples/points.rs | 35 +- examples/points2d.rs | 18 + examples/polyline_strip.rs | 47 +- examples/polylines.rs | 74 +- .../{planar_polylines.rs => polylines2d.rs} | 70 +- examples/post_processing.rs | 98 +- examples/primitives.rs | 71 +- examples/primitives2d.rs | 38 +- examples/primitives_scale.rs | 62 +- examples/procedural.rs | 254 +- examples/quad.rs | 22 +- examples/recording.rs | 24 +- examples/rectangle.rs | 21 +- examples/screenshot.rs | 40 +- examples/stereo.rs | 40 +- examples/text.rs | 28 +- examples/texturing.rs | 52 +- examples/texturing_mipmaps.rs | 30 +- examples/ui.rs | 36 +- examples/window.rs | 10 +- examples/wireframe.rs | 33 +- run_all_examples.sh | 8 +- src/builtin/default.frag | 37 - src/builtin/default.vert | 31 - src/builtin/default.wgsl | 332 ++- src/builtin/grayscales.wgsl | 10 +- src/builtin/mod.rs | 4 +- src/builtin/normals.wgsl | 10 +- src/builtin/normals_material.rs | 332 +-- src/builtin/{planar.wgsl => object2d.wgsl} | 15 +- src/builtin/object_material.rs | 1096 ++++++--- ...bject_material.rs => object_material2d.rs} | 998 ++++---- src/builtin/oculus.wgsl | 10 +- .../{planar_points.wgsl => points2d.wgsl} | 15 +- src/builtin/{points.wgsl => points3d.wgsl} | 17 +- .../{planar_polyline.wgsl => polyline2d.wgsl} | 10 +- .../{polyline.wgsl => polyline3d.wgsl} | 0 src/builtin/sobel.wgsl | 10 +- src/builtin/text.wgsl | 16 +- src/builtin/uvs.wgsl | 10 +- src/builtin/uvs_material.rs | 332 +-- src/builtin/waves.wgsl | 10 +- src/builtin/wireframe.wgsl | 10 +- ...ar_points.wgsl => wireframe_points2d.wgsl} | 0 ...me_points.wgsl => wireframe_points3d.wgsl} | 0 ...olyline.wgsl => wireframe_polyline2d.wgsl} | 0 ...olyline.wgsl => wireframe_polyline3d.wgsl} | 0 .../planar_camera.rs => camera/camera2d.rs} | 16 +- src/camera/{camera.rs => camera3d.rs} | 54 +- .../{first_person.rs => first_person3d.rs} | 194 +- ...son_stereo.rs => first_person_stereo3d.rs} | 146 +- src/camera/fixed_view.rs | 79 - src/camera/fixed_view2d.rs | 64 + src/camera/fixed_view3d.rs | 86 + src/camera/mod.rs | 27 +- src/camera/{arc_ball.rs => orbit3d.rs} | 174 +- .../sidescroll.rs => camera/sidescroll2d.rs} | 108 +- src/color.rs | 519 ++++ src/context/context.rs | 63 +- src/event/window_event.rs | 18 +- src/lib.rs | 51 +- src/light.rs | 281 ++- src/loader/mtl.rs | 23 +- src/loader/obj.rs | 150 +- src/planar_camera/fixed_view.rs | 62 - src/planar_camera/mod.rs | 9 - src/procedural/bezier.rs | 28 +- src/procedural/capsule.rs | 8 +- src/procedural/cone.rs | 29 +- src/procedural/cuboid.rs | 160 +- src/procedural/cylinder.rs | 46 +- src/procedural/path/arrowhead_cap.rs | 46 +- src/procedural/path/no_cap.rs | 22 +- src/procedural/path/path.rs | 8 +- src/procedural/path/polyline_path.rs | 21 +- src/procedural/path/polyline_pattern.rs | 42 +- src/procedural/quad.rs | 45 +- src/procedural/render_mesh.rs | 115 +- src/procedural/render_polyline.rs | 56 +- src/procedural/sphere.rs | 25 +- src/procedural/utils.rs | 154 +- src/renderer/egui_renderer.rs | 1 + src/renderer/mod.rs | 14 +- .../point_renderer2d.rs} | 39 +- ...{point_renderer.rs => point_renderer3d.rs} | 84 +- .../polyline_renderer2d.rs} | 73 +- ...ine_renderer.rs => polyline_renderer3d.rs} | 110 +- src/renderer/renderer.rs | 15 +- src/resource/dynamic_buffer.rs | 208 ++ src/resource/material.rs | 181 +- src/resource/material_manager2d.rs | 105 + ...erial_manager.rs => material_manager3d.rs} | 52 +- src/resource/{planar_mesh.rs => mesh2d.rs} | 50 +- src/resource/{mesh.rs => mesh3d.rs} | 142 +- ...anar_mesh_manager.rs => mesh_manager2d.rs} | 66 +- .../{mesh_manager.rs => mesh_manager3d.rs} | 38 +- src/resource/mod.rs | 28 +- src/resource/planar_material_manager.rs | 71 - src/resource/texture_manager.rs | 57 + src/resource/vertex_index.rs | 23 +- src/scene/mod.rs | 23 +- src/scene/{planar_object.rs => object2d.rs} | 195 +- src/scene/{object.rs => object3d.rs} | 451 +++- src/scene/planar_scene_node.rs | 1021 -------- src/scene/scene_node.rs | 1376 ----------- src/scene/scene_node2d.rs | 1050 ++++++++ src/scene/scene_node3d.rs | 1760 +++++++++++++ src/text/font.rs | 7 +- src/text/glyph.rs | 18 +- src/text/renderer.rs | 34 +- src/tools/kiss3d_recording.rs | 431 ---- src/window/canvas.rs | 6 +- src/window/drawing.rs | 174 ++ src/window/egui_integration.rs | 297 +++ src/window/events.rs | 122 + src/window/mod.rs | 12 +- src/window/recording.rs | 378 +++ src/window/rendering.rs | 429 ++++ src/window/screenshot.rs | 75 + src/window/wgpu_canvas.rs | 434 ++-- src/window/window.rs | 2167 ++--------------- src/window/window_cache.rs | 27 +- 170 files changed, 11271 insertions(+), 9233 deletions(-) create mode 100644 .run/lines2d (web).run.xml create mode 100644 .run/lines2d.run.xml create mode 100644 .run/multi_light (web).run.xml create mode 100644 .run/multi_light.run.xml rename .run/{planar_lines (web).run.xml => points2d (web).run.xml} (81%) rename .run/{planar_polylines.run.xml => points2d.run.xml} (84%) rename .run/{planar_polylines (web).run.xml => polylines2d (web).run.xml} (80%) rename .run/{planar_lines.run.xml => polylines2d.run.xml} (84%) create mode 100644 examples/lines2d.rs create mode 100644 examples/multi_light.rs delete mode 100644 examples/planar_lines.rs create mode 100644 examples/points2d.rs rename examples/{planar_polylines.rs => polylines2d.rs} (75%) delete mode 100644 src/builtin/default.frag delete mode 100644 src/builtin/default.vert rename src/builtin/{planar.wgsl => object2d.wgsl} (85%) rename src/builtin/{planar_object_material.rs => object_material2d.rs} (66%) rename src/builtin/{planar_points.wgsl => points2d.wgsl} (86%) rename src/builtin/{points.wgsl => points3d.wgsl} (83%) rename src/builtin/{planar_polyline.wgsl => polyline2d.wgsl} (90%) rename src/builtin/{polyline.wgsl => polyline3d.wgsl} (100%) rename src/builtin/{wireframe_planar_points.wgsl => wireframe_points2d.wgsl} (100%) rename src/builtin/{wireframe_points.wgsl => wireframe_points3d.wgsl} (100%) rename src/builtin/{wireframe_planar_polyline.wgsl => wireframe_polyline2d.wgsl} (100%) rename src/builtin/{wireframe_polyline.wgsl => wireframe_polyline3d.wgsl} (100%) rename src/{planar_camera/planar_camera.rs => camera/camera2d.rs} (72%) rename src/camera/{camera.rs => camera3d.rs} (78%) rename src/camera/{first_person.rs => first_person3d.rs} (70%) rename src/camera/{first_person_stereo.rs => first_person_stereo3d.rs} (67%) delete mode 100644 src/camera/fixed_view.rs create mode 100644 src/camera/fixed_view2d.rs create mode 100644 src/camera/fixed_view3d.rs rename src/camera/{arc_ball.rs => orbit3d.rs} (77%) rename src/{planar_camera/sidescroll.rs => camera/sidescroll2d.rs} (57%) create mode 100644 src/color.rs delete mode 100644 src/planar_camera/fixed_view.rs delete mode 100644 src/planar_camera/mod.rs rename src/{planar_point_renderer.rs => renderer/point_renderer2d.rs} (91%) rename src/renderer/{point_renderer.rs => point_renderer3d.rs} (79%) rename src/{planar_polyline_renderer.rs => renderer/polyline_renderer2d.rs} (86%) rename src/renderer/{polyline_renderer.rs => polyline_renderer3d.rs} (82%) create mode 100644 src/resource/dynamic_buffer.rs create mode 100644 src/resource/material_manager2d.rs rename src/resource/{material_manager.rs => material_manager3d.rs} (55%) rename src/resource/{planar_mesh.rs => mesh2d.rs} (70%) rename src/resource/{mesh.rs => mesh3d.rs} (74%) rename src/resource/{planar_mesh_manager.rs => mesh_manager2d.rs} (50%) rename src/resource/{mesh_manager.rs => mesh_manager3d.rs} (74%) delete mode 100644 src/resource/planar_material_manager.rs rename src/scene/{planar_object.rs => object2d.rs} (77%) rename src/scene/{object.rs => object3d.rs} (60%) delete mode 100644 src/scene/planar_scene_node.rs delete mode 100644 src/scene/scene_node.rs create mode 100644 src/scene/scene_node2d.rs create mode 100644 src/scene/scene_node3d.rs delete mode 100644 src/tools/kiss3d_recording.rs create mode 100644 src/window/drawing.rs create mode 100644 src/window/egui_integration.rs create mode 100644 src/window/events.rs create mode 100644 src/window/recording.rs create mode 100644 src/window/rendering.rs create mode 100644 src/window/screenshot.rs diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5d0f591b1..7d1931b56 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Rapier CI build +name: CI build on: push: diff --git a/.run/camera.run.xml b/.run/camera.run.xml index 83047fb03..d9543616c 100644 --- a/.run/camera.run.xml +++ b/.run/camera.run.xml @@ -1,7 +1,9 @@ + - + \ No newline at end of file diff --git a/.run/clippy.run.xml b/.run/clippy.run.xml index d45dd3ff8..071ca0c32 100644 --- a/.run/clippy.run.xml +++ b/.run/clippy.run.xml @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/.run/cube.run.xml b/.run/cube.run.xml index 742019341..02372b492 100644 --- a/.run/cube.run.xml +++ b/.run/cube.run.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/.run/instancing2d.run.xml b/.run/instancing2d.run.xml index 4e7f39704..cb683a029 100644 --- a/.run/instancing2d.run.xml +++ b/.run/instancing2d.run.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/.run/lines2d (web).run.xml b/.run/lines2d (web).run.xml new file mode 100644 index 000000000..86012f102 --- /dev/null +++ b/.run/lines2d (web).run.xml @@ -0,0 +1,19 @@ + + + + \ No newline at end of file diff --git a/.run/lines2d.run.xml b/.run/lines2d.run.xml new file mode 100644 index 000000000..e86801512 --- /dev/null +++ b/.run/lines2d.run.xml @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/.run/multi_light (web).run.xml b/.run/multi_light (web).run.xml new file mode 100644 index 000000000..34651e93f --- /dev/null +++ b/.run/multi_light (web).run.xml @@ -0,0 +1,20 @@ + + + + diff --git a/.run/multi_light.run.xml b/.run/multi_light.run.xml new file mode 100644 index 000000000..f2586fba0 --- /dev/null +++ b/.run/multi_light.run.xml @@ -0,0 +1,20 @@ + + + + diff --git a/.run/multi_windows.run.xml b/.run/multi_windows.run.xml index fc4695794..4e13ced08 100644 --- a/.run/multi_windows.run.xml +++ b/.run/multi_windows.run.xml @@ -1,7 +1,9 @@ - - + \ No newline at end of file diff --git a/.run/obj.run.xml b/.run/obj.run.xml index 3e3722522..b4435a8d8 100644 --- a/.run/obj.run.xml +++ b/.run/obj.run.xml @@ -1,7 +1,9 @@ + - + \ No newline at end of file diff --git a/.run/planar_lines (web).run.xml b/.run/points2d (web).run.xml similarity index 81% rename from .run/planar_lines (web).run.xml rename to .run/points2d (web).run.xml index 68d55ccd6..3a7c123f2 100644 --- a/.run/planar_lines (web).run.xml +++ b/.run/points2d (web).run.xml @@ -1,6 +1,6 @@ - -