From f6f3c13fcd287774a458730722854baab8a17366 Mon Sep 17 00:00:00 2001 From: skal Date: Thu, 5 Feb 2026 16:40:27 +0100 Subject: feat(physics): Implement SDF-based physics engine and BVH Completed Task #49. - Implemented CPU-side SDF library (sphere, box, torus, plane). - Implemented Dynamic BVH construction (rebuilt every frame). - Implemented PhysicsSystem with semi-implicit Euler integration and collision resolution. - Added visual debugging for BVH nodes. - Created test_3d_physics interactive test and test_physics unit tests. - Updated project docs and triaged new tasks. --- CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 274386a..06b142e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,6 +110,8 @@ set(GPU_SOURCES set(3D_SOURCES src/3d/renderer.cc src/3d/visual_debug.cc + src/3d/bvh.cc + src/3d/physics.cc ) set(PLATFORM_SOURCES src/platform.cc third_party/glfw3webgpu/glfw3webgpu.c) set(UTIL_SOURCES src/util/asset_manager.cc) @@ -139,6 +141,7 @@ if (DEFINED ASSET_PACKER_PATH) else() add_executable(asset_packer tools/asset_packer.cc) target_link_libraries(asset_packer PRIVATE procedural) + target_include_directories(asset_packer PRIVATE third_party) set(ASSET_PACKER_CMD $) set(ASSET_PACKER_DEPENDS asset_packer) endif() @@ -342,6 +345,9 @@ if(DEMO_BUILD_TESTS) add_demo_test(test_procedural ProceduralGenTest src/tests/test_procedural.cc) target_link_libraries(test_procedural PRIVATE procedural ${DEMO_LIBS}) + add_demo_test(test_physics PhysicsTest src/tests/test_physics.cc) + target_link_libraries(test_physics PRIVATE 3d util procedural ${DEMO_LIBS}) + add_demo_test(test_3d ThreeDSystemTest src/tests/test_3d.cc) add_demo_test(test_shader_composer ShaderComposerTest src/tests/test_shader_composer.cc ${GEN_TEST_CC}) @@ -358,6 +364,10 @@ if(DEMO_BUILD_TESTS) add_demo_executable(test_3d_render src/tests/test_3d_render.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) target_link_libraries(test_3d_render PRIVATE 3d gpu audio procedural util ${DEMO_LIBS}) add_dependencies(test_3d_render generate_timeline generate_demo_assets generate_tracker_music) + + add_demo_executable(test_3d_physics src/tests/test_3d_physics.cc ${PLATFORM_SOURCES} ${GENERATED_TIMELINE_CC} ${GEN_DEMO_CC} ${GENERATED_MUSIC_DATA_CC}) + target_link_libraries(test_3d_physics PRIVATE 3d gpu audio procedural util ${DEMO_LIBS}) + add_dependencies(test_3d_physics generate_timeline generate_demo_assets generate_tracker_music) endif() #-- - Extra Tools -- - -- cgit v1.2.3