Skip to content

Commit

Permalink
Implement png writer.
Browse files Browse the repository at this point in the history
  • Loading branch information
byzin committed Aug 6, 2023
1 parent 73adbb1 commit 4d5e397
Show file tree
Hide file tree
Showing 18 changed files with 945 additions and 115 deletions.
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,12 @@
!/source/dependencies/
!/source/dependencies/CLI11
!/source/dependencies/cpu_features
!/source/dependencies/glTF-SDK
!/source/dependencies/libspng
!/source/dependencies/libspng_cmake
!/source/dependencies/tinygltf
!/source/dependencies/Zisc
!/source/dependencies/Zivc
!/source/dependencies/zlib

# Build directories
!/build/
Expand Down
9 changes: 9 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,12 @@
[submodule "source/dependencies/cpu_features"]
path = source/dependencies/cpu_features
url = https://github.com/google/cpu_features.git
[submodule "source/dependencies/tinygltf"]
path = source/dependencies/tinygltf
url = https://github.com/syoyo/tinygltf
[submodule "source/dependencies/libspng"]
path = source/dependencies/libspng
url = https://github.com/randy408/libspng.git
[submodule "source/dependencies/zlib"]
path = source/dependencies/zlib
url = https://github.com/madler/zlib
21 changes: 12 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ if(PROJECT_IS_TOP_LEVEL)
setZiscAlias()
addCpuFeatures("${PROJECT_BINARY_DIR}/CpuFeatures")
addCli11("${PROJECT_BINARY_DIR}/CLI11")
addTinygltf("${PROJECT_BINARY_DIR}/Tinygltf")
addZlib("${PROJECT_BINARY_DIR}/Zlib")
addSpng("${PROJECT_BINARY_DIR}/Spng")
findVulkan()
addZivc("${PROJECT_BINARY_DIR}/Zivc")
setZivcAlias()
Expand All @@ -59,12 +62,12 @@ add_subdirectory("${nanairo_path}" "${PROJECT_BINARY_DIR}/Nanairo")
# enable_testing()
# add_subdirectory("${PROJECT_SOURCE_DIR}/test" "${PROJECT_BINARY_DIR}/UnitTest")
#endif()
#
#if(PROJECT_IS_TOP_LEVEL)
# # Build documents
# add_subdirectory("${PROJECT_SOURCE_DIR}/document" "${PROJECT_BINARY_DIR}/Document")
#
# # Packaging
# include("${PROJECT_SOURCE_DIR}/cmake/packaging.cmake")
# packageProject()
#endif()

if(PROJECT_IS_TOP_LEVEL)
# Build documents
# add_subdirectory("${PROJECT_SOURCE_DIR}/document" "${PROJECT_BINARY_DIR}/Document")

# Packaging
include("${PROJECT_SOURCE_DIR}/cmake/packaging.cmake")
packageProject()
endif()
28 changes: 28 additions & 0 deletions cmake/packaging.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# file: packaging.cmake
# author: Sho Ikeda
#
# Copyright (c) 2015-2023 Sho Ikeda
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
#


function(packageProject)
include(InstallRequiredSystemLibraries)

cmake_path(SET package_directory "${PROJECT_BINARY_DIR}/Packaging")
set(CPACK_PACKAGE_DIRECTORY "${package_directory}")

# Set project info
set(CPACK_PACKAGE_NAME "Nanairo")
set(CPACK_PACKAGE_VENDOR "Sho Ikeda")
# set(CPACK_PACKAGE_VERSION_MAJOR ${Nanairo_VERSION_MAJOR})
# set(CPACK_PACKAGE_VERSION_MINOR ${Nanairo_VERSION_MINOR})
# set(CPACK_PACKAGE_VERSION_PATCH ${Nanairo_VERSION_PATCH})
# set(CPACK_PACKAGE_DESCRIPTION ${Nanairo_DESCRIPTION})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The path tracing renderer for RTC9.")
set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE.md)
set(CPACK_THREADS 0)

include(CPack)
endfunction(packageProject)
158 changes: 131 additions & 27 deletions cmake/project.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,17 @@ function(addCpuFeatures binary_dir)
Zivc_checkSubmodule("${cpu_features_path}")
add_subdirectory("${cpu_features_path}" "${binary_dir}" EXCLUDE_FROM_ALL)
Zivc_checkTarget(CpuFeature::cpu_features)
# Set properties
set_target_properties(cpu_features PROPERTIES C_STANDARD 17
C_STANDARD_REQUIRED ON)
# Supress warnings
set(warning_flags "")
set(cpu_warning_flags "")
if(Z_VISUAL_STUDIO)
list(APPEND warning_flags /w)
list(APPEND cpu_warning_flags /w)
elseif(Z_CLANG AND NOT Z_APPLE_CLANG)
list(APPEND warning_flags -Wno-unused-command-line-argument
-Wno-unused-but-set-variable
)
list(APPEND cpu_warning_flags -Wno-unused-command-line-argument
-Wno-unused-but-set-variable
)
endif()
target_compile_options(cpu_features PRIVATE ${cpu_warning_flags})
endfunction(addCpuFeatures)
Expand Down Expand Up @@ -154,6 +157,8 @@ function(addCli11 binary_dir)
Zivc_setInternalValue(CLI11_FORCE_LIBCXX OFF)
Zivc_setInternalValue(CLI11_CUDA_TESTS OFF)
Zivc_setInternalValue(CLI11_CLANG_TIDY_OPTIONS "")
Zivc_setInternalValue(CLI11_PRECOMPILED OFF)
Zivc_setInternalValue(CLI11_SANITIZERS OFF)
cmake_path(SET dependencies_dir NORMALIZE "${project_dir}/source/dependencies")
cmake_path(SET cli11_source_path "${dependencies_dir}/CLI11")
Zivc_checkSubmodule("${cli11_source_path}")
Expand All @@ -162,6 +167,105 @@ function(addCli11 binary_dir)
endfunction(addCli11)


#
function(addTinygltf binary_dir)
if(TARGET Tinygltf::tinygltf)
return()
else()
message(STATUS "Add tinygltf subdirectory.")
endif()

cmake_path(SET project_dir NORMALIZE "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/..")
cmake_path(SET zivc_path "${project_dir}/source/dependencies/Zivc/source/zivc")
include("${zivc_path}/cmake/general.cmake")
# Add tinygltf
Zivc_setInternalValue(TINYGLTF_BUILD_LOADER_EXAMPLE OFF)
Zivc_setInternalValue(TINYGLTF_BUILD_GL_EXAMPLES OFF)
Zivc_setInternalValue(TINYGLTF_BUILD_VALIDATOR_EXAMPLE OFF)
Zivc_setInternalValue(TINYGLTF_BUILD_BUILDER_EXAMPLE OFF)
Zivc_setInternalValue(TINYGLTF_HEADER_ONLY ON)
Zivc_setInternalValue(TINYGLTF_INSTALL OFF)
cmake_path(SET dependencies_dir NORMALIZE "${project_dir}/source/dependencies")
cmake_path(SET tinygltf_path NORMALIZE "${dependencies_dir}/tinygltf")
Zivc_checkSubmodule("${tinygltf_path}")
add_subdirectory("${tinygltf_path}" "${binary_dir}" EXCLUDE_FROM_ALL)
Zivc_checkTarget(tinygltf)
add_library(Tinygltf::tinygltf ALIAS tinygltf)
# Set properties
set_target_properties(tinygltf PROPERTIES CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON)
target_compile_definitions(tinygltf INTERFACE TINYGLTF_NO_STB_IMAGE=1
TINYGLTF_NO_STB_IMAGE_WRITE=1
TINYGLTF_NO_INCLUDE_STB_IMAGE=1
TINYGLTF_NO_INCLUDE_STB_IMAGE_WRITE=1
TINYGLTF_USE_CPP14=1)
endfunction(addTinygltf)


#
function(addZlib binary_dir)
if(TARGET Zlib::zlib)
return()
else()
message(STATUS "Add zlib subdirectory.")
endif()

cmake_path(SET project_dir NORMALIZE "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/..")
cmake_path(SET zivc_path "${project_dir}/source/dependencies/Zivc/source/zivc")
include("${zivc_path}/cmake/general.cmake")
include("${zivc_path}/cmake/platform.cmake")
Zivc_getPlatformFlags(platform_definitions)
Zivc_setVariablesOnCMake(${platform_definitions})
# Add zlib
Zivc_setInternalValue(ASM686 OFF)
Zivc_setInternalValue(AMD64 OFF)
cmake_path(SET dependencies_dir NORMALIZE "${project_dir}/source/dependencies")
cmake_path(SET zlib_path NORMALIZE "${dependencies_dir}/zlib")
Zivc_checkSubmodule("${zlib_path}")
add_subdirectory("${zlib_path}" "${binary_dir}" EXCLUDE_FROM_ALL)
Zivc_checkTarget(zlibstatic)
add_library(Zlib::zlib ALIAS zlibstatic)
# Set properties
set_target_properties(zlibstatic PROPERTIES C_STANDARD 17
C_STANDARD_REQUIRED ON)
target_include_directories(zlibstatic INTERFACE ${zlib_path} ${binary_dir})
# Supress warnings
set(zlib_warning_flags "")
if(Z_VISUAL_STUDIO)
list(APPEND zlib_warning_flags /w)
elseif(Z_CLANG AND NOT Z_APPLE_CLANG)
list(APPEND zlib_warning_flags -Wno-deprecated-non-prototype
)
endif()
target_compile_options(zlibstatic PRIVATE ${zlib_warning_flags})
endfunction(addZlib)


# Build spng
function(addSpng binary_dir)
if(TARGET Spng::spng)
return()
else()
message(STATUS "Add spng subdirectory.")
endif()

cmake_path(SET project_dir NORMALIZE "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/..")
cmake_path(SET zivc_path "${project_dir}/source/dependencies/Zivc/source/zivc")
include("${zivc_path}/cmake/general.cmake")
# Add spng
cmake_path(SET dependencies_dir NORMALIZE "${project_dir}/source/dependencies")
cmake_path(SET spng_source_path "${dependencies_dir}/libspng_cmake")
Zivc_checkSubmodule("${spng_source_path}")
add_subdirectory("${spng_source_path}" "${binary_dir}" EXCLUDE_FROM_ALL)
Zivc_checkTarget(spng)
add_library(Spng::spng ALIAS spng)
# Set properties
set_target_properties(spng PROPERTIES C_STANDARD 17
C_STANDARD_REQUIRED ON)
endfunction(addSpng)


#
function(findVulkan)
Zivc_setInternalValue(ZIVC_ENABLE_VULKAN_BACKEND ${Z_ENABLE_VULKAN_BACKEND})
if(NOT Z_ENABLE_VULKAN_BACKEND)
Expand Down Expand Up @@ -231,25 +335,25 @@ endfunction(setZivcAlias)


# GoogleTest
function(addGoogleTest binary_dir)
if(TARGET GTest::gtest)
return()
else()
message(STATUS "Add GoogleTest subdirectory.")
endif()


# Add googletest
cmake_path(SET project_dir NORMALIZE "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/..")
cmake_path(SET zivc_path "${project_dir}/source/zivc")
cmake_path(SET dependencies_dir "${project_dir}/test/dependencies")
cmake_path(SET googletest_path "${dependencies_dir}/googletest")
include("${zivc_path}/cmake/general.cmake")
Zivc_checkSubmodule(${googletest_path})
Zivc_addGoogleTest(${googletest_path} ${binary_dir})
Zivc_checkTarget(gtest)
#
include("${zivc_path}/cmake/compiler.cmake")
Zivc_populateTargetOptions(Zisc::Zisc gtest)
Zivc_checkTarget(GTest::gtest)
endfunction(addGoogleTest)
#function(addGoogleTest binary_dir)
# if(TARGET GTest::gtest)
# return()
# else()
# message(STATUS "Add GoogleTest subdirectory.")
# endif()
#
#
# # Add googletest
# cmake_path(SET project_dir NORMALIZE "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/..")
# cmake_path(SET zivc_path "${project_dir}/source/zivc")
# cmake_path(SET dependencies_dir "${project_dir}/test/dependencies")
# cmake_path(SET googletest_path "${dependencies_dir}/googletest")
# include("${zivc_path}/cmake/general.cmake")
# Zivc_checkSubmodule(${googletest_path})
# Zivc_addGoogleTest(${googletest_path} ${binary_dir})
# Zivc_checkTarget(gtest)
# #
# include("${zivc_path}/cmake/compiler.cmake")
# Zivc_populateTargetOptions(Zisc::Zisc gtest)
# Zivc_checkTarget(GTest::gtest)
#endfunction(addGoogleTest)
1 change: 1 addition & 0 deletions source/dependencies/libspng
Submodule libspng added at fb7680
1 change: 1 addition & 0 deletions source/dependencies/tinygltf
Submodule tinygltf added at f51243
1 change: 1 addition & 0 deletions source/dependencies/zlib
Submodule zlib added at 04f42c
Loading

0 comments on commit 4d5e397

Please sign in to comment.