Files
HelloVulkan/App/CMakeLists.txt
T
atdunbg cc837bc605 Add animation controller system, material assets and skeleton visualization
- .animctrl state machine asset (params/transitions/blend trees, 1D+2D
  directional blending) with Unity Animator-style editor panel: state
  list, transitions, params, directional pad preview driving live
  CrossFade on the selected entity
- Split animation evaluation out of SceneRenderer into
  AnimationSystem/AnimationEvaluator; skin palettes with rest-pose
  fallback and blend-weight epsilon filtering
- MaterialAsset (.material) with reload-safe preview tile pool
  (DropMaterial clears dirty refs before instance destruction)
- EditorGizmoPass skeleton wires + viewport joint overlay; camera
  projection rework (baked Vulkan Y-flip, ortho support)
- Editor/game build split via HELLOVULKAN_EDITOR option
2026-10-07 01:50:04 +08:00

57 lines
2.1 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# App 层源文件:main + editor/(docking 编辑器)+ scripts/(C++ 原生脚本)
file(GLOB EDITOR_SOURCES CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/editor/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/editor/*.h)
file(GLOB SCRIPT_SOURCES CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/scripts/*.cpp)
# editor 形态(HELLOVULKAN_EDITOR=ON)编入 editor/(docking 编辑器);
# game 形态只有 main + scripts(编辑器源码整体不进产物)
if(HELLOVULKAN_EDITOR)
add_executable(HelloVulkan main.cpp ${EDITOR_SOURCES} ${SCRIPT_SOURCES})
else()
add_executable(HelloVulkan main.cpp ${SCRIPT_SOURCES})
endif()
target_include_directories(HelloVulkan PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/editor)
target_link_libraries(HelloVulkan PRIVATE Engine)
###### 自动构建 shader ######
find_program(GLSLC glslc REQUIRED)
set(SHADER_SRC_DIR ${CMAKE_SOURCE_DIR}/shaders)
set(SHADER_OUT_DIR ${CMAKE_BINARY_DIR}/bin/shaders)
function(auto_compile_shader glsl_file) # glsl_file 是相对 SHADER_SRC_DIR 的路径
# 推断 stage:'.vert' -> 'vert'
get_filename_component(stage ${glsl_file} EXT)
string(SUBSTRING ${stage} 1 -1 stage)
set(spv ${SHADER_OUT_DIR}/${glsl_file}.spv)
get_filename_component(spv_dir ${spv} DIRECTORY) # 保留子目录
add_custom_command(
OUTPUT ${spv}
COMMAND ${CMAKE_COMMAND} -E make_directory ${spv_dir}
COMMAND ${GLSLC} -fshader-stage=${stage}
-o ${spv} ${SHADER_SRC_DIR}/${glsl_file}
DEPENDS ${SHADER_SRC_DIR}/${glsl_file}
VERBATIM)
set_source_files_properties(${spv} PROPERTIES GENERATED TRUE)
target_sources(${PROJECT_NAME} PRIVATE ${spv})
set_property(DIRECTORY APPEND PROPERTY HZ_SHADER_SPV_FILES ${spv})
endfunction()
file(GLOB_RECURSE SHADER_SOURCES
CONFIGURE_DEPENDS # 新增 shader 时自动重配
RELATIVE ${SHADER_SRC_DIR}
${SHADER_SRC_DIR}/*.vert
${SHADER_SRC_DIR}/*.frag
${SHADER_SRC_DIR}/*.comp)
foreach (f ${SHADER_SOURCES})
auto_compile_shader(${f})
endforeach()