Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenEXR loads as full white image instead of its content. Is it supported ATM? #10

Open
peeweek opened this issue Dec 3, 2022 · 8 comments

Comments

@peeweek
Copy link

peeweek commented Dec 3, 2022

I am a bit confused about how to load OpenEXR Images or if it is supported. Currently I used either LoadImage or CreateFromImage either with automatic loader settings or specific, but the returned data is all white.

Texture size seem correct.

Also, I'm wondering about reading these values as RGBAFloat or RGBAHalf. Is it supported?

@peeweek peeweek changed the title OpenEXR loads full white image. Is it supported ATM? OpenEXR loads as full white image instead of its content. Is it supported ATM? Dec 3, 2022
@Looooong
Copy link
Owner

Looooong commented Dec 5, 2022

I have no experience with OpenEXR image. I suppose that since it is HDR image, its pixel value doesn't fit in the range [0, 1] which is used by RGBA32 texture, is that correct?

If that's the case, I can add support for RGBAFloat texture as well.

Can you post a sample EXR image and a JPEG/PNG counterpart of what it should look like?

@peeweek
Copy link
Author

peeweek commented Dec 6, 2022

Yes absolutely. Most of the time, EXR contains 16 or 32 bit data (often imported as RGBAHalf or RGBAFloat), In unity it can also be imported as RGBA32 but everything above 1.0 is clamped. Also EXR tend to contain HDR linear data.

From what I experienced using the API I assumed that the data read would fallback to pure white float4(1.0,1.0,1.0,1.0) so it doesn´t break the import. I have put my eyes in the code but I couldn't really understand how FreeImage works :/

If you can have a look to make it import properly it would really be awesome! <3

Regarding the sample data, I publshed some years ago a bunch of flipbooks containing data both in TGA and EXR that you can use as example : https://blog.unity.com/technology/free-vfx-image-sequences-flipbooks

Also, there are many full linear HDR EXR available at https://polyhaven.com/hdris under CC0 license

@Looooong
Copy link
Owner

@peeweek I added support for EXR image in the latest release. Let me know if you have any issue with loading EXR image.

@peeweek
Copy link
Author

peeweek commented Dec 22, 2022

Wow thanks ! It did work with my textures :) .

I had also a bunch of textures from https://github.com/AcademySoftwareFoundation/openexr-images but some of them did not load correctly. I am giving you the callstack but it seems it breaks from a burst job.

I am not sure whether these images are standard or contain quite Advanced EXR features that are borderline to be supported. I will do some exception handling for these images.

System.InvalidOperationException: Illegal instruction executed
This Exception was thrown from a job compiled with Burst, which has limited exception support.
0x00007ffc571d27d3 (e50d06487d315d3d1d42e3eef89a917) [unknown:0] Unity.Jobs.IJobParallelForExtensions.ParallelForJobStruct`1<AsyncImageLoader.TransferRGBFloatImageToRGBAFloatTextureJob>.Execute 
0x00007ffc571d2621 (e50d06487d315d3d1d42e3eef89a917) a4b79d6fc4e40dcd47f38264cdb951c4
0x00007ff60fd388e0 (Unity) ExecuteJob
0x00007ff60fd38c55 (Unity) ExecuteJobCopyData
0x00007ff60fd3995f (Unity) ForwardJobForEachToManaged
0x00007ff60fd34c0c (Unity) JobQueue::Exec
0x00007ff60fd34f3e (Unity) JobQueue::ExecuteJobFromHighPriorityStack
0x00007ff60fd35614 (Unity) JobQueue::ProcessJobs
0x00007ff60fd3782f (Unity) JobQueue::WorkLoop
0x00007ff60ff35ea7 (Unity) Thread::RunThreadWrapper
0x00007ffc88907614 (KERNEL32) BaseThreadInitThunk
0x00007ffc893626a1 (ntdll) RtlUserThreadStart

@Looooong
Copy link
Owner

Can you try turning off Burst and see if it still works? Also, send me the image that results in this error as well.

@peeweek
Copy link
Author

peeweek commented Dec 22, 2022

I just tried disabling burst compilation with the same results. However, with compilation enabled and safety checks disabled, the issue is not present anymore.

image

Otherwise, the output image has correct size, color format but all zeroes as data.

image

@Looooong
Copy link
Owner

Please post me the EXR image, so I can test it out myself.

@peeweek
Copy link
Author

peeweek commented Dec 23, 2022

SquaresSwirls.zip

Sure, here it is. If you want EXR test images you can grab more from here : https://github.com/AcademySoftwareFoundation/openexr-images/tree/master/TestImages (this image originates from this repo)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants