Lower minSdk 31 -> 29 so the APK installs on Android 10 devices with Vulkan 1.1 (e.g. Huawei MatePad T10s, Kirin 710A). - Shaders target SPIR-V for vulkan1.0 instead of vulkan1.2; they use no 1.1+ features, so any Vulkan device can load them. - systemInsets: WindowInsets.Type/getInsets(int) exist only on API 30+; on API 29 read getSystemWindowInsets/getMandatorySystemGestureInsets. - Updater: Intent.getParcelableExtra(String, Class) is API 33+; fall back to the untyped overload below Tiramisu. - Theme: windowLayoutInDisplayCutoutMode=always is API 30+; use shortEdges by default and keep always in values-v30.
37 lines
No EOL
1.3 KiB
CMake
37 lines
No EOL
1.3 KiB
CMake
project(RasterRender)
|
|
|
|
find_package(Vulkan REQUIRED)
|
|
|
|
find_program(GLSLC glslc HINTS Vulkan::glslc ${Vulkan_GLSLC_EXECUTABLE})
|
|
if(NOT GLSLC)
|
|
set(GLSLC ${Vulkan_GLSLC_EXECUTABLE})
|
|
endif()
|
|
|
|
set(SHADER_GEN_DIR ${CMAKE_CURRENT_BINARY_DIR}/shaders_generated)
|
|
file(MAKE_DIRECTORY ${SHADER_GEN_DIR})
|
|
|
|
set(SHADER_INCS "")
|
|
foreach(SHADER default.vert default.frag solid.frag)
|
|
set(SHADER_SRC ${CMAKE_CURRENT_SOURCE_DIR}/shaders/${SHADER})
|
|
set(SHADER_INC ${SHADER_GEN_DIR}/${SHADER}.inc)
|
|
add_custom_command(
|
|
OUTPUT ${SHADER_INC}
|
|
COMMAND ${GLSLC} -O --target-env=vulkan1.0 -mfmt=c ${SHADER_SRC} -o ${SHADER_INC}
|
|
DEPENDS ${SHADER_SRC}
|
|
COMMENT "Compiling ${SHADER} to SPIR-V"
|
|
VERBATIM
|
|
)
|
|
list(APPEND SHADER_INCS ${SHADER_INC})
|
|
endforeach()
|
|
add_custom_target(RasterRenderShaders DEPENDS ${SHADER_INCS})
|
|
|
|
### ---------------------- Static Library --------------------- ###
|
|
file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp")
|
|
file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp")
|
|
|
|
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
|
|
add_dependencies(${PROJECT_NAME} RasterRenderShaders)
|
|
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ./public/ ./ext/)
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ./private/ ${SHADER_GEN_DIR})
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC Math Connection 3DScene Graphics Vulkan::Vulkan) |