Skip to content

Commit d4acc27

Browse files
Merge branch 'master' of github.com:Devsh-Graphics-Programming/Nabla
2 parents f93106e + 9418098 commit d4acc27

File tree

7 files changed

+77
-58
lines changed

7 files changed

+77
-58
lines changed

3rdparty/CMakeLists.txt

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -160,24 +160,34 @@ add_subdirectory(libpng libpng EXCLUDE_FROM_ALL)
160160
add_dependencies(png_static zlibstatic)
161161

162162

163-
#openexr
163+
# OpenEXR
164164
option(_NBL_COMPILE_WITH_OPEN_EXR_ "Build with OpenEXR library" ON)
165-
if (_NBL_COMPILE_WITH_OPEN_EXR_)
166-
set(_OLD_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
167-
set(_OLD_BUILD_STATIC_LIBS ${BUILD_STATIC_LIBS})
168-
set(_OLD_BUILD_TESTING ${BUILD_TESTING})
169-
set(BUILD_SHARED_LIBS OFF)
170-
set(BUILD_STATIC_LIBS OFF)
171-
set(BUILD_TESTING OFF)
172-
set(PYILMBASE_ENABLE OFF CACHE STRING "" FORCE)
173-
set(OPENEXR_BUILD_UTILS OFF CACHE STRING "" FORCE)
174-
set(OPENEXR_VIEWERS_ENABLE OFF CACHE STRING "" FORCE)
175-
add_subdirectory(openexr openexr EXCLUDE_FROM_ALL)
176-
set(BUILD_SHARED_LIBS ${_OLD_BUILD_SHARED_LIBS})
177-
set(BUILD_STATIC_LIBS ${_OLD_BUILD_STATIC_LIBS})
178-
set(BUILD_TESTING ${_OLD_BUILD_TESTING})
179-
endif()
180165

166+
# Note we are adding it anyway regardless _NBL_COMPILE_WITH_OPEN_EXR_, its because we need Half dependecy
167+
# it generates on fly in its build directory which doesnt have to be linked (class with inline methods),
168+
# here is where _NBL_COMPILE_WITH_OPEN_EXR_ plays a role - when disabled OpenEXR won't be built and linked
169+
# but it's core
170+
171+
set(_OLD_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
172+
set(_OLD_BUILD_STATIC_LIBS ${BUILD_STATIC_LIBS})
173+
set(_OLD_BUILD_TESTING ${BUILD_TESTING})
174+
set(BUILD_SHARED_LIBS OFF)
175+
set(BUILD_STATIC_LIBS OFF)
176+
set(BUILD_TESTING OFF)
177+
set(PYILMBASE_ENABLE OFF CACHE STRING "" FORCE)
178+
set(OPENEXR_BUILD_UTILS OFF CACHE STRING "" FORCE)
179+
set(OPENEXR_FORCE_INTERNAL_IMATH ON CACHE STRING "" FORCE) # TODO: make it a submodule and force using it maybe instead of letting OpenEXR download it from it's github repository
180+
set(OPENEXR_BUILD_TOOLS OFF CACHE STRING "" FORCE)
181+
set(OPENEXR_INSTALL OFF CACHE STRING "" FORCE)
182+
set(OPENEXR_INSTALL_DOCS OFF CACHE STRING "" FORCE)
183+
set(OPENEXR_INSTALL_EXAMPLES OFF CACHE STRING "" FORCE)
184+
set(OPENEXR_INSTALL_PKG_CONFIG OFF CACHE STRING "" FORCE)
185+
set(OPENEXR_INSTALL_TOOLS OFF CACHE STRING "" FORCE)
186+
187+
add_subdirectory(openexr openexr EXCLUDE_FROM_ALL)
188+
set(BUILD_SHARED_LIBS ${_OLD_BUILD_SHARED_LIBS})
189+
set(BUILD_STATIC_LIBS ${_OLD_BUILD_STATIC_LIBS})
190+
set(BUILD_TESTING ${_OLD_BUILD_TESTING})
181191

182192
#gli
183193
option(_NBL_COMPILE_WITH_GLI_ "Build with GLI library" ON)
@@ -340,7 +350,6 @@ if (NBL_COMPILE_WITH_CUDA)
340350
endif()
341351
endif()
342352

343-
344353
# Final gather
345354
set(NBL_3RDPARTY_TARGETS
346355
lzma
@@ -361,18 +370,15 @@ set(NBL_3RDPARTY_TARGETS
361370
GenericCodeGen
362371
SPIRV
363372
SPIRV-Tools-static # SPIRV-Tools-shared in case of SHARED lib
364-
SPIRV-Tools-opt
373+
SPIRV-Tools-opt
374+
Imath
375+
OpenEXRCore
365376
)
366377
if (_NBL_COMPILE_WITH_OPEN_EXR_)
367378
list(APPEND NBL_3RDPARTY_TARGETS
368-
IlmBaseConfig
369-
IlmImfConfig
370-
Imath
371-
IlmThread
372-
IlmImf
373-
Half
379+
OpenEXR
374380
Iex
375-
IexMath
381+
IlmThread
376382
)
377383
endif()
378384
if(ANDROID AND NOT ${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")

3rdparty/openexr

Submodule openexr updated 1759 files

src/nbl/CMakeLists.txt

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -242,15 +242,15 @@ set(NBL_ASSET_SOURCES
242242
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageLoaderJPG.cpp
243243
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageLoaderPNG.cpp
244244
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageLoaderTGA.cpp
245-
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageLoaderOpenEXR.cpp
245+
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageLoaderOpenEXR.cpp # TODO: Nahim
246246
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CGLILoader.cpp
247247

248248
# Image writers
249249
${NBL_ROOT_PATH}/src/nbl/asset/interchange/IImageWriter.cpp
250250
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageWriterJPG.cpp
251251
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageWriterPNG.cpp
252252
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageWriterTGA.cpp
253-
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageWriterOpenEXR.cpp
253+
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CImageWriterOpenEXR.cpp # TODO: Nahim
254254
${NBL_ROOT_PATH}/src/nbl/asset/interchange/CGLIWriter.cpp
255255

256256
# Material compiler
@@ -338,8 +338,6 @@ set(COMMON_INCLUDE_DIRS
338338
${THIRD_PARTY_SOURCE_DIR}/glm
339339
${THIRD_PARTY_SOURCE_DIR}/renderdoc # for renderdoc api header
340340
${CMAKE_BINARY_DIR}/3rdparty/zlib #for dynamically generated zconf.h
341-
${CMAKE_BINARY_DIR}/3rdparty/openexr/IlmBase/config #for dynamically generated IlmBaseConfig.h
342-
${CMAKE_BINARY_DIR}/3rdparty/openexr/OpenEXR/config #for dynamically generated OpenEXRConfig.h
343341
$<TARGET_PROPERTY:png_static,BINARY_DIR> #for dynamically generated pnglibconf.h
344342
$<TARGET_PROPERTY:jpeg-static,BINARY_DIR> #for dynamically generated jconfig.h
345343
)
@@ -497,24 +495,30 @@ endif()
497495
target_include_directories(Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR}/libpng)
498496
# OpenEXR
499497
if (_NBL_COMPILE_WITH_OPEN_EXR_)
500-
add_dependencies(Nabla OpenEXR::IlmImf)
498+
add_dependencies(Nabla OpenEXR)
501499
if(NBL_STATIC_BUILD)
502-
target_link_libraries(Nabla INTERFACE OpenEXR::IlmImf)
500+
target_link_libraries(Nabla INTERFACE OpenEXR)
503501
else()
504-
target_link_libraries(Nabla PRIVATE OpenEXR::IlmImf)
502+
target_link_libraries(Nabla PRIVATE OpenEXR)
505503
endif()
506504

507-
target_link_libraries(Nabla INTERFACE Half) # a workaround which causes Half static library to be linked directly to each Nabla example no matter if Nabla is DLL or not, I think we should really not expose OpenEXR interface to our public Nabla include files
505+
target_include_directories(
506+
Nabla PUBLIC $<TARGET_PROPERTY:OpenEXR,INCLUDE_DIRECTORIES>
507+
)
508+
else()
509+
add_dependencies(Nabla OpenEXRCore)
510+
if(NBL_STATIC_BUILD)
511+
target_link_libraries(Nabla INTERFACE OpenEXRCore)
512+
else()
513+
target_link_libraries(Nabla PRIVATE OpenEXRCore)
514+
endif()
508515

509516
target_include_directories(
510-
Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR}/openexr/OpenEXR/IlmImf
511-
Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR}/openexr/IlmBase/Half
512-
Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR}/openexr/IlmBase/Iex
513-
Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR}/openexr/IlmBase/IexMath
514-
Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR}/openexr/IlmBase/Imath
515-
Nabla PUBLIC ${THIRD_PARTY_SOURCE_DIR}/openexr/IlmBase/IlmThread
517+
Nabla PUBLIC $<TARGET_PROPERTY:OpenEXRCore,INCLUDE_DIRECTORIES> # for OpenEXR's Half-only dependency
516518
)
517519
endif()
520+
521+
# GLI
518522
if(_NBL_COMPILE_WITH_GLI_)
519523
add_dependencies(Nabla gli)
520524
if(NBL_STATIC_BUILD)
@@ -702,20 +706,9 @@ if(NBL_STATIC_BUILD)
702706
nbl_install_lib(HLSL)
703707
nbl_install_lib(jpeg-static)
704708
if (_NBL_COMPILE_WITH_OPEN_EXR_)
705-
# OpenEXR guys, please correct installation targets to avoid warnings!
706-
set_target_properties(Half PROPERTIES PUBLIC_HEADER "")
707-
set_target_properties(Iex PROPERTIES PUBLIC_HEADER "")
708-
set_target_properties(IexMath PROPERTIES PUBLIC_HEADER "")
709-
set_target_properties(IlmImf PROPERTIES PUBLIC_HEADER "")
710-
set_target_properties(IlmThread PROPERTIES PUBLIC_HEADER "")
711-
set_target_properties(Imath PROPERTIES PUBLIC_HEADER "")
712-
713-
nbl_install_lib(Half)
714-
nbl_install_lib(Iex)
715-
nbl_install_lib(IexMath)
716-
nbl_install_lib(IlmImf)
717-
nbl_install_lib(IlmThread)
718-
nbl_install_lib(Imath)
709+
nbl_install_lib(OpenEXR)
710+
else()
711+
nbl_install_lib(OpenEXRCore)
719712
endif()
720713
nbl_install_lib(png_static)
721714

src/nbl/asset/interchange/CImageLoaderOpenEXR.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1717
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1818
SOFTWARE.
1919
*/
20+
#if 0 // oldie
21+
2022
#include <algorithm>
2123
#include <iostream>
2224
#include <string>
@@ -608,3 +610,4 @@ bool readHeader(IMF::IStream* nblIStream, SContext& ctx)
608610

609611

610612
#endif // _NBL_COMPILE_WITH_OPENEXR_LOADER_
613+
#endif

src/nbl/asset/interchange/CImageLoaderOpenEXR.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ class CImageLoaderOpenEXR final : public IImageLoader
2525
public:
2626
CImageLoaderOpenEXR(IAssetManager* _manager) : m_manager(_manager) {}
2727

28-
bool isALoadableFileFormat(system::IFile* _file, const system::logger_opt_ptr logger) const override;
28+
bool isALoadableFileFormat(system::IFile* _file, const system::logger_opt_ptr logger) const override
29+
{
30+
return false; // TODO: Nahim, implement in cpp file please
31+
}
2932

3033
const char** getAssociatedFileExtensions() const override
3134
{
@@ -35,7 +38,10 @@ class CImageLoaderOpenEXR final : public IImageLoader
3538

3639
uint64_t getSupportedAssetTypesBitfield() const override { return asset::IAsset::ET_IMAGE; }
3740

38-
asset::SAssetBundle loadAsset(system::IFile* _file, const asset::IAssetLoader::SAssetLoadParams& _params, asset::IAssetLoader::IAssetLoaderOverride* _override = nullptr, uint32_t _hierarchyLevel = 0u) override;
41+
asset::SAssetBundle loadAsset(system::IFile* _file, const asset::IAssetLoader::SAssetLoadParams& _params, asset::IAssetLoader::IAssetLoaderOverride* _override = nullptr, uint32_t _hierarchyLevel = 0u) override
42+
{
43+
return {}; // TODO: Nahim, implement in cpp file please
44+
}
3945

4046
private:
4147

src/nbl/asset/interchange/CImageWriterOpenEXR.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1717
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1818
SOFTWARE.
1919
*/
20+
21+
#if 0 // oldie
22+
2023
#include <algorithm>
2124
#include <iostream>
2225
#include <string>
@@ -236,3 +239,5 @@ bool CImageWriterOpenEXR::writeImageBinary(system::IFile* file, const asset::ICP
236239
return true;
237240
}
238241
#endif // _NBL_COMPILE_WITH_OPENEXR_WRITER_
242+
243+
#endif

src/nbl/asset/interchange/CImageWriterOpenEXR.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,17 @@ class CImageWriterOpenEXR final : public IImageWriter
3737

3838
uint32_t getForcedFlags() { return asset::EWF_BINARY; }
3939

40-
bool writeAsset(system::IFile* _file, const SAssetWriteParams& _params, IAssetWriterOverride* _override = nullptr) override;
40+
bool writeAsset(system::IFile* _file, const SAssetWriteParams& _params, IAssetWriterOverride* _override = nullptr) override
41+
{
42+
return false; // TODO: Nahim implement in cpp file please
43+
}
4144

4245
private:
4346

44-
bool writeImageBinary(system::IFile* file, const asset::ICPUImage* image);
47+
bool writeImageBinary(system::IFile* file, const asset::ICPUImage* image)
48+
{
49+
return false; // TODO: Nahim implement in cpp file please
50+
}
4551
};
4652

4753
}

0 commit comments

Comments
 (0)