mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 01:20:42 +00:00
Update tinyexr to 9b30f253 - latest as of the time of this commit
This commit is contained in:
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
From https://github.com/syoyo/tinyexr : 25d4523fb9b630d45a6a04d50125f0058679c9b6
|
||||
From https://github.com/syoyo/tinyexr : 9b30f25383bdb9dd517592552be528c5905474be
|
||||
|
||||
# Tiny OpenEXR image library.
|
||||
|
||||
|
||||
+5
@@ -1,2 +1,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "3rdparty/miniz/miniz.h"
|
||||
|
||||
#define TINYEXR_IMPLEMENTATION
|
||||
#include "tinyexr.h"
|
||||
|
||||
Vendored
+4705
-3109
File diff suppressed because it is too large
Load Diff
@@ -166,6 +166,8 @@ set(sources
|
||||
3rdparty/pugixml/pugiconfig.hpp
|
||||
3rdparty/lz4/lz4.c
|
||||
3rdparty/lz4/lz4.h
|
||||
3rdparty/miniz/miniz.c
|
||||
3rdparty/miniz/miniz.h
|
||||
3rdparty/zstd/bitstream.h
|
||||
3rdparty/zstd/compiler.h
|
||||
3rdparty/zstd/entropy_common.c
|
||||
|
||||
@@ -316,21 +316,32 @@ ReplayStatus IMG_CreateReplayDevice(RDCFile *rdc, IReplayDriver **driver)
|
||||
|
||||
FileIO::fread(&buffer[0], 1, buffer.size(), f);
|
||||
|
||||
EXRImage exrImage;
|
||||
InitEXRImage(&exrImage);
|
||||
EXRVersion exrVersion;
|
||||
int ret = ParseEXRVersionFromMemory(&exrVersion, buffer.data(), buffer.size());
|
||||
|
||||
int ret = ParseMultiChannelEXRHeaderFromMemory(&exrImage, &buffer[0], &err);
|
||||
|
||||
FreeEXRImage(&exrImage);
|
||||
|
||||
// could be an unsupported form of EXR, like deep image or other
|
||||
if(ret != 0)
|
||||
{
|
||||
RDCERR("EXR file detected, but couldn't load with ParseEXRVersionFromMemory: %d", ret);
|
||||
FileIO::fclose(f);
|
||||
return ReplayStatus::ImageUnsupported;
|
||||
}
|
||||
|
||||
RDCERR(
|
||||
"EXR file detected, but couldn't load with ParseMultiChannelEXRHeaderFromMemory %d: '%s'",
|
||||
ret, err);
|
||||
if(exrVersion.multipart || exrVersion.non_image || exrVersion.tiled)
|
||||
{
|
||||
RDCERR("Unsupported EXR file detected - multipart or similar.");
|
||||
FileIO::fclose(f);
|
||||
return ReplayStatus::ImageUnsupported;
|
||||
}
|
||||
|
||||
EXRHeader exrHeader;
|
||||
InitEXRHeader(&exrHeader);
|
||||
|
||||
ret = ParseEXRHeaderFromMemory(&exrHeader, &exrVersion, buffer.data(), buffer.size(), &err);
|
||||
|
||||
if(ret != 0)
|
||||
{
|
||||
RDCERR("EXR file detected, but couldn't load with ParseEXRHeaderFromMemory %d: '%s'", ret, err);
|
||||
FileIO::fclose(f);
|
||||
return ReplayStatus::ImageUnsupported;
|
||||
}
|
||||
}
|
||||
@@ -478,20 +489,48 @@ void ImageViewer::RefreshFile()
|
||||
std::vector<byte> buffer;
|
||||
buffer.resize((size_t)size);
|
||||
|
||||
FileIO::fread(&buffer[0], 1, buffer.size(), f);
|
||||
FileIO::fread(buffer.data(), 1, buffer.size(), f);
|
||||
|
||||
EXRVersion exrVersion;
|
||||
int ret = ParseEXRVersionFromMemory(&exrVersion, buffer.data(), buffer.size());
|
||||
|
||||
if(ret != 0)
|
||||
{
|
||||
RDCERR("EXR file detected, but couldn't load with ParseEXRVersionFromMemory: %d", ret);
|
||||
FileIO::fclose(f);
|
||||
return;
|
||||
}
|
||||
|
||||
if(exrVersion.multipart || exrVersion.non_image || exrVersion.tiled)
|
||||
{
|
||||
RDCERR("Unsupported EXR file detected - multipart or similar.");
|
||||
FileIO::fclose(f);
|
||||
return;
|
||||
}
|
||||
|
||||
EXRHeader exrHeader;
|
||||
InitEXRHeader(&exrHeader);
|
||||
|
||||
const char *err = NULL;
|
||||
|
||||
ret = ParseEXRHeaderFromMemory(&exrHeader, &exrVersion, buffer.data(), buffer.size(), &err);
|
||||
if(ret != 0)
|
||||
{
|
||||
RDCERR("EXR file detected, but couldn't load with ParseEXRHeaderFromMemory %d: '%s'", ret, err);
|
||||
FileIO::fclose(f);
|
||||
return;
|
||||
}
|
||||
|
||||
for(int i = 0; i < exrHeader.num_channels; i++)
|
||||
exrHeader.requested_pixel_types[i] = TINYEXR_PIXELTYPE_FLOAT;
|
||||
|
||||
EXRImage exrImage;
|
||||
InitEXRImage(&exrImage);
|
||||
|
||||
const char *err = NULL;
|
||||
|
||||
int ret = ParseMultiChannelEXRHeaderFromMemory(&exrImage, &buffer[0], &err);
|
||||
|
||||
ret = LoadEXRImageFromMemory(&exrImage, &exrHeader, buffer.data(), buffer.size(), &err);
|
||||
if(ret != 0)
|
||||
{
|
||||
RDCERR(
|
||||
"EXR file detected, but couldn't load with ParseMultiChannelEXRHeaderFromMemory %d: '%s'",
|
||||
ret, err);
|
||||
RDCERR("EXR file detected, but couldn't load with LoadEXRImageFromMemory %d: '%s'", ret, err);
|
||||
FileIO::fclose(f);
|
||||
return;
|
||||
}
|
||||
@@ -502,15 +541,10 @@ void ImageViewer::RefreshFile()
|
||||
datasize = texDetails.width * texDetails.height * 4 * sizeof(float);
|
||||
data = (byte *)malloc(datasize);
|
||||
|
||||
for(int i = 0; i < exrImage.num_channels; i++)
|
||||
exrImage.requested_pixel_types[i] = TINYEXR_PIXELTYPE_FLOAT;
|
||||
|
||||
ret = LoadMultiChannelEXRFromMemory(&exrImage, &buffer[0], &err);
|
||||
|
||||
int channels[4] = {-1, -1, -1, -1};
|
||||
for(int i = 0; i < exrImage.num_channels; i++)
|
||||
{
|
||||
switch(exrImage.channel_names[i][0])
|
||||
switch(exrHeader.channels[i].name[0])
|
||||
{
|
||||
case 'R': channels[0] = i; break;
|
||||
case 'G': channels[1] = i; break;
|
||||
|
||||
@@ -121,6 +121,7 @@
|
||||
<ClInclude Include="3rdparty\jpeg-compressor\jpgd.h" />
|
||||
<ClInclude Include="3rdparty\jpeg-compressor\jpge.h" />
|
||||
<ClInclude Include="3rdparty\lz4\lz4.h" />
|
||||
<ClInclude Include="3rdparty\miniz\miniz.h" />
|
||||
<ClInclude Include="3rdparty\plthook\plthook.h" />
|
||||
<ClInclude Include="3rdparty\pugixml\pugiconfig.hpp" />
|
||||
<ClInclude Include="3rdparty\pugixml\pugixml.hpp" />
|
||||
@@ -261,6 +262,11 @@
|
||||
<ForcedIncludeFiles>
|
||||
</ForcedIncludeFiles>
|
||||
</ClCompile>
|
||||
<ClCompile Include="3rdparty\miniz\miniz.c">
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<ForcedIncludeFiles>
|
||||
</ForcedIncludeFiles>
|
||||
</ClCompile>
|
||||
<ClCompile Include="3rdparty\plthook\plthook_elf.c">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
||||
@@ -127,6 +127,9 @@
|
||||
<Filter Include="3rdparty\catch\official">
|
||||
<UniqueIdentifier>{c46ee73c-e0dd-446d-b9a3-38c3ee0433fe}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="3rdparty\miniz">
|
||||
<UniqueIdentifier>{5994c355-880b-45b9-b17a-2e9e1fc2044a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="maths\camera.h">
|
||||
@@ -432,6 +435,9 @@
|
||||
<ClInclude Include="3rdparty\catch\official\catch.hpp">
|
||||
<Filter>3rdparty\catch\official</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="3rdparty\miniz\miniz.h">
|
||||
<Filter>3rdparty\miniz</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="maths\camera.cpp">
|
||||
@@ -758,6 +764,9 @@
|
||||
<ClCompile Include="3rdparty\interceptor-lib\lib\AArch64\target_aarch64.cc">
|
||||
<Filter>3rdparty\interceptor-lib\AArch64</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="3rdparty\miniz\miniz.c">
|
||||
<Filter>3rdparty\miniz</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="os\win32\comexport.def">
|
||||
|
||||
@@ -1169,6 +1169,9 @@ bool ReplayController::SaveTexture(const TextureSave &saveData, const char *path
|
||||
{
|
||||
const char *err = NULL;
|
||||
|
||||
EXRHeader exrHeader;
|
||||
InitEXRHeader(&exrHeader);
|
||||
|
||||
EXRImage exrImage;
|
||||
InitEXRImage(&exrImage);
|
||||
|
||||
@@ -1179,19 +1182,21 @@ bool ReplayController::SaveTexture(const TextureSave &saveData, const char *path
|
||||
|
||||
// must be in this order as many viewers don't pay attention to channels and just assume
|
||||
// they are in this order
|
||||
const char *bgraNames[4] = {"A", "B", "G", "R"};
|
||||
EXRChannelInfo bgraChannels[4] = {
|
||||
{"A"}, {"B"}, {"G"}, {"R"},
|
||||
};
|
||||
|
||||
exrImage.num_channels = 4;
|
||||
exrImage.channel_names = bgraNames;
|
||||
exrHeader.num_channels = 4;
|
||||
exrHeader.channels = bgraChannels;
|
||||
exrImage.images = (unsigned char **)abgr;
|
||||
exrImage.width = td.width;
|
||||
exrImage.height = td.height;
|
||||
exrImage.pixel_types = pixTypes;
|
||||
exrImage.requested_pixel_types = reqTypes;
|
||||
exrHeader.pixel_types = pixTypes;
|
||||
exrHeader.requested_pixel_types = reqTypes;
|
||||
|
||||
unsigned char *mem = NULL;
|
||||
|
||||
size_t ret = SaveMultiChannelEXRToMemory(&exrImage, &mem, &err);
|
||||
size_t ret = SaveEXRImageToMemory(&exrImage, &exrHeader, &mem, &err);
|
||||
|
||||
success = (ret > 0);
|
||||
if(success)
|
||||
|
||||
Reference in New Issue
Block a user