From 0428b22b6318993f876ef7970b4ae58f77cebdf7 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Wed, 29 Mar 2017 14:53:58 -0700 Subject: [PATCH] Add nvtt external --- cmake/externals/nvtt/CMakeLists.txt | 36 ++++++++++++++++++++++++ libraries/model/CMakeLists.txt | 3 ++ libraries/model/src/model/TextureMap.cpp | 16 +++++++++++ 3 files changed, 55 insertions(+) create mode 100644 cmake/externals/nvtt/CMakeLists.txt diff --git a/cmake/externals/nvtt/CMakeLists.txt b/cmake/externals/nvtt/CMakeLists.txt new file mode 100644 index 0000000000..4657c27bd2 --- /dev/null +++ b/cmake/externals/nvtt/CMakeLists.txt @@ -0,0 +1,36 @@ +include(ExternalProject) +include(SelectLibraryConfigurations) + +set(EXTERNAL_NAME nvtt) + +string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER) + +if (NOT ANDROID) + ExternalProject_Add( + ${EXTERNAL_NAME} + URL "C:/Users/Clement/dev/nvidia-texture-tools/project/vc12/package" + # URL_MD5 "e7f0a941c9a873f2c4334367454485da" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + LOG_DOWNLOAD 1 + ) + + # Hide this external target (for IDE users) + set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals") + + ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR) + + set(${EXTERNAL_NAME_UPPER}_INCLUDE_DIRS ${SOURCE_DIR}/include CACHE PATH "Location of NVTT include directory") + + if (WIN32) + set(${EXTERNAL_NAME_UPPER}_LIBRARIES ${SOURCE_DIR}/Release/x64/nvtt.lib CACHE FILEPATH "Path to NVTT library") + set(${EXTERNAL_NAME_UPPER}_DLL_PATH ${SOURCE_DIR}/Release/x64 CACHE PATH "Location of NVTT DLL") + add_paths_to_fixup_libs(${${EXTERNAL_NAME_UPPER}_DLL_PATH}) + else (APPLE) + set(${EXTERNAL_NAME_UPPER}_LIBRARIES ${SOURCE_DIR}/lib/static/libnvtt.a CACHE FILEPATH "Path to NVTT static library") + elseif () + set(${EXTERNAL_NAME_UPPER}_LIBRARY_TEMP ${INSTALL_DIR}/lib/nvtt.so CACHE FILEPATH "Path to NVTT library") + endif () + +endif() diff --git a/libraries/model/CMakeLists.txt b/libraries/model/CMakeLists.txt index 021aa3d027..b26d056bd4 100755 --- a/libraries/model/CMakeLists.txt +++ b/libraries/model/CMakeLists.txt @@ -3,3 +3,6 @@ AUTOSCRIBE_SHADER_LIB(gpu model) setup_hifi_library() link_hifi_libraries(shared ktx gpu) +add_dependency_external_projects(nvtt) +target_include_directories(${TARGET_NAME} PRIVATE ${NVTT_INCLUDE_DIRS}) +target_link_libraries(${TARGET_NAME} ${NVTT_LIBRARIES}) diff --git a/libraries/model/src/model/TextureMap.cpp b/libraries/model/src/model/TextureMap.cpp index e619a2d70f..d42549007b 100755 --- a/libraries/model/src/model/TextureMap.cpp +++ b/libraries/model/src/model/TextureMap.cpp @@ -10,6 +10,8 @@ // #include "TextureMap.h" +#include + #include #include @@ -222,6 +224,20 @@ void generateMips(gpu::Texture* texture, QImage& image, bool fastResize) { } } + int w = 0, h = 0; + void* data = 0; + nvtt::InputOptions inputOptions; + inputOptions.setTextureLayout(nvtt::TextureType_2D, w, h); + inputOptions.setMipmapData(data, w, h); + + nvtt::OutputOptions outputOptions; + outputOptions.setFileName("output.dds"); + + nvtt::CompressionOptions compressionOptions; + compressionOptions.setFormat(nvtt::Format_DXT1); + + nvtt::Compressor compressor; + //compressor.process(inputOptions, compressionOptions, outputOptions); #else texture->autoGenerateMips(-1); #endif