Skip to content

Commit 36d9943

Browse files
committed
Get IES cpps to compile
1 parent aa5d6cb commit 36d9943

File tree

7 files changed

+51
-35
lines changed

7 files changed

+51
-35
lines changed

include/nbl/asset/asset.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,6 @@
6767
#include "nbl/asset/metadata/CMTLMetadata.h"
6868
#include "nbl/asset/metadata/CPLYMetadata.h"
6969
#include "nbl/asset/metadata/CSTLMetadata.h"
70-
//#include "nbl/asset/metadata/CIESProfileMetadata.h"
70+
#include "nbl/asset/metadata/CIESProfileMetadata.h"
7171

7272
#endif

src/nbl/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,11 @@ set(NBL_ASSET_SOURCES
221221
asset/interchange/CImageWriterTGA.cpp
222222
asset/interchange/CImageWriterOpenEXR.cpp # TODO: Nahim
223223
asset/interchange/CGLIWriter.cpp
224+
225+
# IES profile loaders
226+
asset/interchange/CIESProfileLoader.cpp
227+
asset/utils/CIESProfileParser.cpp
228+
asset/utils/CIESProfile.cpp
224229
)
225230
set(NBL_VIDEO_SOURCES
226231
# Utilities

src/nbl/asset/interchange/CIESProfileLoader.cpp

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,53 @@
33
using namespace nbl;
44
using namespace asset;
55

6-
asset::SAssetBundle
7-
CIESProfileLoader::loadAsset(io::IReadFile* _file,
8-
const asset::IAssetLoader::SAssetLoadParams& _params,
9-
asset::IAssetLoader::IAssetLoaderOverride* _override,
10-
uint32_t _hierarchyLevel) {
11-
if (!_file)
6+
bool CIESProfileLoader::isALoadableFileFormat(system::IFile* _file, const system::logger_opt_ptr logger) const
7+
{
8+
system::IFile::success_t success;
9+
std::string versionBuffer(0x45, ' ');
10+
const auto* fName = _file->getFileName().c_str();
11+
_file->read(success, versionBuffer.data(), 0, versionBuffer.size());
12+
13+
if (success)
14+
{
15+
for (const auto& it : CIESProfileParser::VALID_SIGNATURES)
16+
if (versionBuffer.find(it.data()) != std::string::npos)
17+
return true;
18+
19+
logger.log("%s: Invalid IES signature for \"%s\" file!", system::ILogger::ELL_ERROR, __FUNCTION__, fName);
20+
}
21+
else
22+
logger.log("%s: Failed to read \"%s\" file!", system::ILogger::ELL_ERROR, __FUNCTION__, fName);
23+
24+
return false;
25+
}
26+
27+
asset::SAssetBundle CIESProfileLoader::loadAsset(system::IFile* _file, const asset::IAssetLoader::SAssetLoadParams& _params, asset::IAssetLoader::IAssetLoaderOverride* _override, uint32_t _hierarchyLevel)
28+
{
29+
if (not _file)
30+
{
31+
_params.logger.log("%s: Nullptr system::IFile pointer!", system::ILogger::ELL_ERROR, __FUNCTION__);
1232
return {};
33+
}
1334

1435
IAssetLoader::SAssetLoadContext loadContex(_params, _file);
1536
core::vector<char> data(_file->getSize());
16-
_file->read(data.data(), _file->getSize());
37+
system::IFile::success_t success;
38+
const auto* fName = _file->getFileName().c_str();
39+
_file->read(success, data.data(), 0, _file->getSize());
40+
41+
if (not success)
42+
{
43+
_params.logger.log("%s: Failed to read \"%s\" file!", system::ILogger::ELL_ERROR, __FUNCTION__, fName);
44+
return {};
45+
}
1746

1847
CIESProfileParser parser(data.data(), data.size());
1948
CIESProfile profile;
2049

21-
if (!parser.parse(profile))
50+
if (not parser.parse(profile))
2251
{
23-
os::Printer::log("ERROR: Emission profile parsing error: " + std::string(parser.getErrorMsg()), ELL_ERROR);
52+
_params.logger.log("%s: Failed to parse emission profile for \"%s\" file!", system::ILogger::ELL_ERROR, __FUNCTION__, fName);
2453
return {};
2554
}
2655

src/nbl/asset/interchange/CIESProfileLoader.h

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
#define __NBL_ASSET_C_IES_PROFILE_LOADER_H_INCLUDED__
66

77
#include "nbl/asset/ICPUImage.h"
8-
#include "nbl/asset/ICPUShader.h"
9-
108
#include "nbl/asset/IAssetManager.h"
119

1210
#include "nbl/asset/interchange/IAssetLoader.h"
@@ -25,20 +23,7 @@ class CIESProfileLoader final : public asset::IAssetLoader
2523
\return True if file seems to be loadable.
2624
*/
2725

28-
bool isALoadableFileFormat(io::IReadFile *_file) const override
29-
{
30-
const size_t begginingOfFile = _file->getPos();
31-
_file->seek(0ull);
32-
std::string versionBuffer(0x45, ' ');
33-
_file->read(versionBuffer.data(), versionBuffer.size());
34-
_file->seek(begginingOfFile);
35-
36-
for (const auto& it : CIESProfileParser::VALID_SIGNATURES)
37-
if (versionBuffer.find(it.data()) != std::string::npos)
38-
return true;
39-
40-
return false;
41-
}
26+
bool isALoadableFileFormat(system::IFile* _file, const system::logger_opt_ptr logger) const override;
4227

4328
//! Returns an array of string literals terminated by nullptr
4429
const char **getAssociatedFileExtensions() const override
@@ -55,11 +40,7 @@ class CIESProfileLoader final : public asset::IAssetLoader
5540
uint64_t getSupportedAssetTypesBitfield() const override { return asset::IAsset::ET_IMAGE_VIEW; }
5641

5742
//! Loads an asset from an opened file, returns nullptr in case of failure.
58-
asset::SAssetBundle
59-
loadAsset(io::IReadFile* _file,
60-
const asset::IAssetLoader::SAssetLoadParams& _params,
61-
asset::IAssetLoader::IAssetLoaderOverride* _override = nullptr,
62-
uint32_t _hierarchyLevel = 0u) override;
43+
asset::SAssetBundle loadAsset(system::IFile* _file, const asset::IAssetLoader::SAssetLoadParams& _params, asset::IAssetLoader::IAssetLoaderOverride* _override = nullptr, uint32_t _hierarchyLevel = 0u) override;
6344
};
6445
} // namespace nbl::asset
6546
#endif // __NBL_ASSET_C_IES_PROFILE_LOADER_H_INCLUDED__

src/nbl/asset/utils/CIESProfile.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,9 @@ core::smart_refctd_ptr<asset::ICPUImageView> CIESProfile::createIESTexture(Execu
139139
region.bufferImageHeight = 0u;
140140
region.bufferOffset = 0u;
141141

142-
auto buffer = core::make_smart_refctd_ptr<asset::ICPUBuffer>(texelBytesz * bufferRowLength * height);
142+
asset::ICPUBuffer::SCreationParams bParams;
143+
bParams.size = texelBytesz * bufferRowLength * height;
144+
auto buffer = asset::ICPUBuffer::create(std::move(bParams));
143145

144146
if (!outImg->setBufferAndRegions(std::move(buffer), core::make_refctd_dynamic_array<core::smart_refctd_dynamic_array<asset::IImage::SBufferCopy>>(1ull, region)))
145147
return {};
@@ -189,7 +191,7 @@ core::smart_refctd_ptr<asset::ICPUImageView> CIESProfile::createIESTexture(Execu
189191

190192
CBasicImageFilterCommon::clip_region_functor_t clip(state.subresource, state.outRange, creationParams.format);
191193
const auto& regions = outImg->getRegions(state.subresource.mipLevel);
192-
CBasicImageFilterCommon::executePerRegion(std::forward<ExecutionPolicy>(policy), outImg.get(), fill, regions.begin(), regions.end(), clip);
194+
CBasicImageFilterCommon::executePerRegion(std::forward<ExecutionPolicy>(policy), outImg.get(), fill, regions, clip);
193195
}
194196

195197
ICPUImageView::SCreationParams viewParams = {};

src/nbl/asset/utils/CIESProfile.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
#define __NBL_ASSET_C_IES_PROFILE_H_INCLUDED__
77

88
#include "nbl/asset/metadata/CIESProfileMetadata.h"
9-
#include "nbl/core/Types.h"
109
#include <sstream>
1110

1211
namespace nbl

src/nbl/asset/utils/CIESProfileParser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ namespace nbl
9999
if (!this->errorMsg)
100100
this->errorMsg = errorMsg;
101101

102-
if constexpr (std::is_same_v<typename T, double>)
102+
if constexpr (std::is_same_v<T, double>)
103103
return -1.0;
104104
else
105105
return 0;

0 commit comments

Comments
 (0)