Checkpoint 3: deliver playable samples and complete native authoring workflows
This commit is contained in:
@@ -8,6 +8,10 @@ add_library(faset_assets
|
||||
target_compile_features(faset_assets PUBLIC cxx_std_20)
|
||||
target_include_directories(faset_assets PUBLIC ${PROJECT_SOURCE_DIR}/include)
|
||||
target_link_libraries(faset_assets PUBLIC faset_asset_data PRIVATE faset_cgltf faset_stb)
|
||||
string(JSON FASET_CGLTF_COMMIT GET "${FASET_DEPENDENCY_LOCK}" dependencies cgltf commit)
|
||||
string(JSON FASET_STB_COMMIT GET "${FASET_DEPENDENCY_LOCK}" dependencies stb commit)
|
||||
target_compile_definitions(faset_assets PRIVATE
|
||||
FASET_CGLTF_COMMIT="${FASET_CGLTF_COMMIT}" FASET_STB_COMMIT="${FASET_STB_COMMIT}")
|
||||
if(BUILD_TESTING)
|
||||
add_executable(faset_assets_tests ${PROJECT_SOURCE_DIR}/tests/assets_pipeline.cpp)
|
||||
target_link_libraries(faset_assets_tests PRIVATE faset_assets)
|
||||
|
||||
@@ -1,7 +1,24 @@
|
||||
if(TARGET faset_ui AND TARGET faset_editor_session AND TARGET faset_scene_view)
|
||||
add_library(faset_editor_ui STATIC ${PROJECT_SOURCE_DIR}/src/editor/editor_ui.cpp)
|
||||
target_link_libraries(faset_editor_ui PUBLIC faset_ui faset_editor_session faset_scene_view)
|
||||
add_library(faset_project_launcher STATIC ${PROJECT_SOURCE_DIR}/apps/project_launcher.cpp)
|
||||
target_link_libraries(faset_project_launcher PUBLIC faset_ui faset_render)
|
||||
if(BUILD_TESTING)
|
||||
add_executable(faset_editor_project_settings_ui_tests ${PROJECT_SOURCE_DIR}/tests/editor_ui_project_settings.cpp)
|
||||
target_link_libraries(faset_editor_project_settings_ui_tests PRIVATE faset_editor_ui)
|
||||
target_compile_definitions(faset_editor_project_settings_ui_tests PRIVATE FASET_TEST_ENGINE="${PROJECT_SOURCE_DIR}")
|
||||
add_test(NAME editor_ui_project_settings COMMAND faset_editor_project_settings_ui_tests)
|
||||
set_tests_properties(editor_ui_project_settings PROPERTIES LABELS "gpu")
|
||||
add_executable(faset_editor_reload_ui_tests ${PROJECT_SOURCE_DIR}/tests/editor_ui_reload.cpp)
|
||||
target_link_libraries(faset_editor_reload_ui_tests PRIVATE faset_editor_ui)
|
||||
target_compile_definitions(faset_editor_reload_ui_tests PRIVATE FASET_TEST_ENGINE="${PROJECT_SOURCE_DIR}")
|
||||
add_test(NAME editor_ui_reload COMMAND faset_editor_reload_ui_tests)
|
||||
set_tests_properties(editor_ui_reload PROPERTIES LABELS "gpu")
|
||||
add_executable(faset_project_launcher_tests ${PROJECT_SOURCE_DIR}/tests/editor_ui_launcher.cpp)
|
||||
target_link_libraries(faset_project_launcher_tests PRIVATE faset_project_launcher)
|
||||
target_compile_definitions(faset_project_launcher_tests PRIVATE FASET_TEST_ENGINE="${PROJECT_SOURCE_DIR}")
|
||||
add_test(NAME editor_ui_launcher COMMAND faset_project_launcher_tests)
|
||||
set_tests_properties(editor_ui_launcher PROPERTIES LABELS "gpu")
|
||||
add_executable(faset_editor_ui_tests ${PROJECT_SOURCE_DIR}/tests/editor_ui_tests.cpp)
|
||||
target_link_libraries(faset_editor_ui_tests PRIVATE faset_editor_ui)
|
||||
target_compile_definitions(faset_editor_ui_tests PRIVATE FASET_TEST_ENGINE="${PROJECT_SOURCE_DIR}")
|
||||
@@ -9,6 +26,16 @@ if(TARGET faset_ui AND TARGET faset_editor_session AND TARGET faset_scene_view)
|
||||
add_dependencies(faset_editor_ui_tests faset_example_plugin)
|
||||
target_compile_definitions(faset_editor_ui_tests PRIVATE FASET_TEST_PLUGIN_DIRECTORY="${PROJECT_BINARY_DIR}/example-plugin")
|
||||
endif()
|
||||
add_executable(faset_editor_template_ui_tests ${PROJECT_SOURCE_DIR}/tests/editor_ui_templates.cpp)
|
||||
target_link_libraries(faset_editor_template_ui_tests PRIVATE faset_editor_ui)
|
||||
target_compile_definitions(faset_editor_template_ui_tests PRIVATE FASET_TEST_ENGINE="${PROJECT_SOURCE_DIR}")
|
||||
add_test(NAME editor_ui_templates COMMAND faset_editor_template_ui_tests)
|
||||
set_tests_properties(editor_ui_templates PROPERTIES LABELS "gpu")
|
||||
add_executable(faset_editor_gizmo_ui_tests ${PROJECT_SOURCE_DIR}/tests/editor_ui_gizmos.cpp)
|
||||
target_link_libraries(faset_editor_gizmo_ui_tests PRIVATE faset_editor_ui)
|
||||
target_compile_definitions(faset_editor_gizmo_ui_tests PRIVATE FASET_TEST_ENGINE="${PROJECT_SOURCE_DIR}")
|
||||
add_test(NAME editor_ui_gizmos COMMAND faset_editor_gizmo_ui_tests)
|
||||
set_tests_properties(editor_ui_gizmos PROPERTIES LABELS "gpu")
|
||||
add_test(NAME editor_ui_authoring COMMAND faset_editor_ui_tests)
|
||||
set_tests_properties(editor_ui_authoring PROPERTIES LABELS "gpu")
|
||||
endif()
|
||||
|
||||
+20
-10
@@ -9,13 +9,13 @@ file(MAKE_DIRECTORY "${FASET_SHADER_DIRECTORY}")
|
||||
set(FASET_SHADER_OUTPUTS)
|
||||
foreach(FASET_ENTRY vertexMain fragmentMain shadowMain)
|
||||
set(FASET_SHADER_OUTPUT "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.spv")
|
||||
add_custom_command(OUTPUT "${FASET_SHADER_OUTPUT}"
|
||||
COMMAND "${SLANGC_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/shaders/baseline.slang"
|
||||
-entry "${FASET_ENTRY}" -target spirv -profile spirv_1_6 -matrix-layout-column-major
|
||||
-o "${FASET_SHADER_OUTPUT}" -reflection-json "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.reflection.json"
|
||||
BYPRODUCTS "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.reflection.json"
|
||||
DEPENDS "${PROJECT_SOURCE_DIR}/shaders/baseline.slang" VERBATIM)
|
||||
list(APPEND FASET_SHADER_OUTPUTS "${FASET_SHADER_OUTPUT}")
|
||||
add_custom_command(OUTPUT "${FASET_SHADER_OUTPUT}" "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.reflection.json"
|
||||
COMMAND "${Python3_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/tools/compile_shader.py"
|
||||
--compiler "${SLANGC_EXECUTABLE}" --source "${PROJECT_SOURCE_DIR}/shaders/baseline.slang"
|
||||
--entry "${FASET_ENTRY}" --output "${FASET_SHADER_DIRECTORY}"
|
||||
BYPRODUCTS "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.slang-reflection.json"
|
||||
DEPENDS "${PROJECT_SOURCE_DIR}/shaders/baseline.slang" "${PROJECT_SOURCE_DIR}/tools/compile_shader.py" VERBATIM)
|
||||
list(APPEND FASET_SHADER_OUTPUTS "${FASET_SHADER_OUTPUT}" "${FASET_SHADER_DIRECTORY}/${FASET_ENTRY}.reflection.json")
|
||||
endforeach()
|
||||
add_custom_command(OUTPUT "${FASET_SHADER_DIRECTORY}/compatibility.spv"
|
||||
COMMAND "${SLANGC_EXECUTABLE}" "${PROJECT_SOURCE_DIR}/shaders/compatibility.hlsl"
|
||||
@@ -23,17 +23,27 @@ add_custom_command(OUTPUT "${FASET_SHADER_DIRECTORY}/compatibility.spv"
|
||||
-o "${FASET_SHADER_DIRECTORY}/compatibility.spv"
|
||||
DEPENDS "${PROJECT_SOURCE_DIR}/shaders/compatibility.hlsl" VERBATIM)
|
||||
add_custom_target(faset_shaders DEPENDS ${FASET_SHADER_OUTPUTS} "${FASET_SHADER_DIRECTORY}/compatibility.spv")
|
||||
add_library(faset_render "${PROJECT_SOURCE_DIR}/src/render/renderer.cpp" "${PROJECT_SOURCE_DIR}/src/render/math.cpp" "${PROJECT_SOURCE_DIR}/src/render/render_graph.cpp")
|
||||
add_library(faset_render "${PROJECT_SOURCE_DIR}/src/render/renderer.cpp" "${PROJECT_SOURCE_DIR}/src/render/math.cpp" "${PROJECT_SOURCE_DIR}/src/render/render_graph.cpp" "${PROJECT_SOURCE_DIR}/src/render/shader_contract.cpp")
|
||||
target_include_directories(faset_render PUBLIC "${PROJECT_SOURCE_DIR}/include")
|
||||
target_compile_features(faset_render PUBLIC cxx_std_20)
|
||||
target_link_libraries(faset_render PRIVATE Vulkan::Vulkan SDL3::SDL3)
|
||||
target_link_libraries(faset_render PRIVATE Vulkan::Vulkan SDL3::SDL3 faset_core)
|
||||
target_compile_definitions(faset_render PRIVATE FASET_SHADER_DIRECTORY="${FASET_SHADER_DIRECTORY}")
|
||||
add_dependencies(faset_render faset_shaders)
|
||||
if(BUILD_TESTING)
|
||||
add_executable(faset_render_tests "${PROJECT_SOURCE_DIR}/tests/render_tests.cpp")
|
||||
target_link_libraries(faset_render_tests PRIVATE faset_render)
|
||||
target_link_libraries(faset_render_tests PRIVATE faset_render SDL3::SDL3)
|
||||
add_test(NAME render_graph COMMAND faset_render_tests --unit)
|
||||
add_test(NAME render_offscreen COMMAND faset_render_tests --gpu "${CMAKE_BINARY_DIR}/render-test.ppm")
|
||||
set_tests_properties(render_offscreen PROPERTIES LABELS "gpu")
|
||||
add_executable(faset_render_reload_tests "${PROJECT_SOURCE_DIR}/tests/render_reload_tests.cpp")
|
||||
target_link_libraries(faset_render_reload_tests PRIVATE faset_render faset_core)
|
||||
target_compile_definitions(faset_render_reload_tests PRIVATE
|
||||
FASET_TEST_SHADER_DIRECTORY="${FASET_SHADER_DIRECTORY}"
|
||||
FASET_TEST_SHADER_SOURCE="${PROJECT_SOURCE_DIR}/shaders/baseline.slang"
|
||||
FASET_SHADER_COMPILE_TOOL="${PROJECT_SOURCE_DIR}/tools/compile_shader.py"
|
||||
FASET_TEST_SLANGC="${SLANGC_EXECUTABLE}"
|
||||
FASET_PYTHON_EXECUTABLE="${Python3_EXECUTABLE}")
|
||||
add_test(NAME render_shader_reload COMMAND faset_render_reload_tests)
|
||||
set_tests_properties(render_shader_reload PROPERTIES LABELS "gpu")
|
||||
endif()
|
||||
install(FILES ${FASET_SHADER_OUTPUTS} DESTINATION shaders)
|
||||
|
||||
@@ -12,3 +12,18 @@ if(BUILD_TESTING AND TARGET faset_runtime)
|
||||
add_test(NAME tutorial_${tutorial} COMMAND faset_tutorial_${tutorial}_tests)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(BUILD_TESTING AND TARGET faset_runtime)
|
||||
foreach(dimension 2 3)
|
||||
set(project_dir "${PROJECT_SOURCE_DIR}/examples/projects/collect-${dimension}d")
|
||||
add_library(faset_example_${dimension}d STATIC "${project_dir}/Scripts/Gameplay.cpp")
|
||||
target_include_directories(faset_example_${dimension}d PUBLIC "${project_dir}/Scripts")
|
||||
target_link_libraries(faset_example_${dimension}d PUBLIC faset_runtime)
|
||||
add_executable(faset_example_${dimension}d_tests "${PROJECT_SOURCE_DIR}/tests/runtime_tutorials_projects.cpp")
|
||||
target_link_libraries(faset_example_${dimension}d_tests PRIVATE faset_example_${dimension}d)
|
||||
target_compile_definitions(faset_example_${dimension}d_tests PRIVATE
|
||||
FASET_EXAMPLE_DIMENSION=${dimension}
|
||||
FASET_EXAMPLE_PROJECT="${project_dir}")
|
||||
add_test(NAME playable_${dimension}d COMMAND faset_example_${dimension}d_tests)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user