A few amendments to the video. Thanks commenters for pointing this out. 1. The PNG/EXR difference comparison does not show only compression. It shows every difference between the two. 2. Often, TIFF is the preferred deliverable for print. 3. Cryptomattes ought not be lossy. Use ZIP 32-bit. 4. Bit-depth doesn't only double the amount of data; it does so for each channel. So an RGB image with double bit depth increases six-fold in precision, while only doubling in data. Good trade-off. 5. DWAA doesn't store 32-bit information, which is why the sizes are the same in the chart. (Unless the passes are named in a specific way.) 6. EXR doesn't bake in the tone-mapping. If you need that, TIFF is a good alternative to PNG.
When you say EXR doesn't bake the tone-mapping are you referring to the color transform? I don't have an AGX color transform option in Krita, so baking that in to png is the only way
@graphikeye You can use TIFF too, as it bakes transforms and its 32bit. If You still wanna use EXR, You can use build-in Krita's OpenColorIO library and set path for Blender LUTs configs, it will let You use the same configs, but only for View transform(AgX/Filmic), not Look. For more info check out Krita docs -- Color Managed Workflow part, they mention Blender interaction here.
@@stephen-boddy Shit, you're right. What I meant is that it increases the precision six-fold. Thanks for pointing it out. There's a lot of places to stumble on this topic.
My only problem with EXR is that there's no accurate color configuration for it in Premiere Pro, especially for Agx. Unless there's one that i don't know of. Would love if you could share your knowledge on this.
I think the comparison at 5:00 is a bit misleading. PNG is lossless format so it should show the exact same pixel values if you're encoding the same data. The difference there is that EXR can store floating point values where PNG only stores integer values regardless of the bit depth hence the massive difference in the sky and highlights. This makes sense in the context of rendering but there are scenarios where you don't need the data to be HDR (when creating textures typically) it would be interesting to compare how EXR and PNG compare in that scenario
Honestly, you're right on the money. It was a bit of an unfair comparison in a few ways, and I wish in hindsight that I'd shown a bit more nuance. As you say, the argument doesn't necessarily hold regarding textures. Thanks for the thoughtful comment.
@@kzone272 that's a common display error with PNG when shown in things like a browser but I find it you open it with photopea it displays correctly, as it does when loaded into a project as an asset
@@kzone272I believe that's simply due to the display transform, like how rec709 is gamma 2.2 and srgb is gamma 2.4, the EXR is also a "HDR" image, so most applications will choose to display it in HDR if your monitor supports it, I may be wrong though
Great explanation! But, regarding deliverables, one should always talk to the client, or in my case, check with the printer first. The printer told me that he prefers 16 bit TIFFs for best quality. The test prints for my upcoming exhibition are looking gorgeous, btw. 😎
0:55 is misleading. Bit depth refers to the precision with which the SAME image/video is stored. Storing values beyond "white" has nothing to do with the number of bits. You can do that in 8 bits or any number of bits. Also, saying that 8, 16 and 32 bits "double" the amount of data is strange since we are talking about precision. A 16bit PNG has 256 times more possible values per channel than 8bit. It's not just 2x as precise. This explains much better why 16bit is fine in almost all cases - and why some industries work with 10 or 12 bits - because 16 or 32 bit is unnecessarily precise. 3:20 He confuses HDR with lossless. PNG is lossless meaning an encoded image can be decoded into the exact same data. He actually means HDR again (storing values beyond white). But PNGs are also often used for that. 5:00 For whatever reason he is comparing a HDR file with a non-HDR file. Even if he thinks these files store the same data, the comparison doesn't make sense since two lossless files with the same precision obviously should contain identical pixel values - assuming you encode and decode the data correctly. Strange "proofs".
Your comparison between the EXR and PNG isn't showing the difference in compression quality. PNG exports with SDR tonemapping, whereas EXR export are linear unclipped HDR data. This means you will see a big difference in the brighter areas, which are squashed down when doing SDR tonemapping. You should have exported the PNG with linear tonemapping and clipped the EXR to a max of 1.0 to get a perfect comparison.
You're absolutely right. That would've been a more fair comparison. But the HDR/SDR difference is one that I feel is relevant and that I wanted to show. But you're right; it definitely doesn't show compression alone. I wouldn't say that breaks the core argument though.
Learning about DWAA EXRs a few years ago blew my mind. Why this didn't become the gold standard for decently compressed high quality outputs IMMEDIATELY is just mind boggling to me. We've had this format for so long and it's been practically ignored for like half its existence.
DUDE! i have 10 years of blender experience so i didn't learn anything new (except that win+ctrl+shift+B which blew my mind lol), but i still watched every video in this series because the explanation quality was SO high and enjoyable. i'll pass the link to this playlist to all of my students! thanks for you hard work, the community is getting so filled by literally noobs teaching everybody how to do stuff that people like you are a much needed breath of fresh hair!
Size these days doesn't matter in most cases. PNG is still the most compatable and reliable format. MOST reglar programs don't support DWA or EXR etc. PNG of JPG or svg are the primary formats I use.
One issue I've experienced with using exr is that when it's saved in blender, it usually doesn't look like the png file when loaded into a photo manipulation program like krita. This is usually cos of the color management (AGX or Filmic)
Most the time i want a file that is easy to share and can be edited later. Storage is cheap so 16 bit png is usually fine. If i need hdr then i look at exr.
My problem with EXR is that the export is in completely different contrast and colors than what the vieweport shows me. I understand that EXR carries a greater depth of color but honestly, I don't have the time and I'm tired of having to adjust contrast and complexly recolor every export.
Thanks for the video! It’s really hard to find storage for png renders but I can’t figure out how to make EXR look the same with AGX color Blender viewport render. I send it to AE and use opencolorIO but it’s not the same with png renders no matter what I do. Can you make a video about this topic?
The reason jpeg is smaller is because you loose a lot of information about the Hue even if your setting is acceptable for your eyes that are better at detecting contrasts. If you do professional work please use png as it correctly stores the result of your render, jpeg does not and it would show as soon as you start doing color corections. For your delivery still use png as it's the most accurate output you can give too. If you don't know if you need lossless, you do. Always. As for the test shown with the difference layer on a png, what it was is the color space change. If someone needs a smaller size he can always convert the images. If the goal is to convert the images to video at some point you would have double compression on jpg. Stick to 16bit png for work and delivering with 8bit png is fine.
Support would be the answer. Jpg and png have been around for ages and are supported most anywhere. Web p and jpg xl are new kids on the block, no idea what their support is. Sure they are great at compression and bit depth, but if they won’t even open that is not useful
You're wrong about browsers only supporting 8-bit. You can use AVIF to display 10-bit HDR images, it's supported by most browsers. Also Safari supports HEIC.
JPEG can't do very slow gradients because there is quantization in YCbCr domain, which is only removed with the new JpegLi codec which no software has. You can see a similar effect in the video encoding on the chart scenes here. They show a grey ellipse with blocky borders instead of a smooth blob. Lossless EXR compression is better/faster than PNG. But it's a very complex format and only pro tools support it fully.
Actually JPEG2000 is a better storage format than PNG. It's a more advanced jpeg format that allows for 16-bit integer precision, transparency, and either lossless or lossy compression. The problem with EXR files is that they are not color managed whereas PNG, JPEG, and JPEG2000 can embed that information, you have to know what color space they are intended for which is weird to me, but it is what it is. Also, regarding the 16-bit section, 16-bit can be both integer and floating point, that's an important distinction to make when saving. JPEG is only 8-bit integer, but PNG and JPEG2000 can save 16-bit integer. EXR is floating point in either 16-bit or 32-bit.
Thanks for adding that! I've been curious about JPEG2000, but always considered it too fringe to really use. And you're 100% right about the float and integer point.
Hey, thanks for the In-Depth Video. Love to see more professional knowledge getting to the Blender Community. You could have added that there is a difference between 16 bit EXR and 16 Bit png. 16bit exr is "half" float meaning that you get 32bit float values where negative colors (lower that 0) or overbrights (brighter that 255 or 1) while having half the precision. 16 bit png and tiffs only have integers values so you dont have negatives or overbrights. In regards to png vs jpg, png gets smaller file sizes whith the amount of color represent. so a 10k image with only black and white and no greys should be much smaller than the corresponding jpg. Kepp up the good work :)
What people always fail to mention is that exr doesnt save the color transform. I havent found a way to re apply agx after in photoshop so this is misleading to say the least. Even if you know how tomedit photos is not easy to color correct an exr file
One more thing about Exr -- sadly, it ignores Color managament in render properties. Yes, that fine if you know how its work, but if no -- you will cry cuz image will not be the same as render with its AgX/Flimic/whatever transforms. There is one sad moment about transparent PNG too -- if you are using any post like bloom/glare and others with transparent background, you will loose it cuz PNG doesnt support premultiplied alpha which one Blender uses.
EXR development is not to be mistaken with how (sometimes poorly and non-standardized) implemented EXR is in some software. The same could be said about Alembic or more lately USD 3d file format.
@@SKIENTIA yep, and thats sometimes really stupid, cuz industry standard software cant provide the same implementation of opensource file format with wide capabilities. Wanna sometimes cry about it(
EXR unfornutely is not usable in Photoshop. As you said the color management is ingored. Really bad. Working with multilayer exr's would make my life a lot easier. I switched from Cinema4d , where you can save out multilayer psd files which is a dream for still images.
The problem with EXR is that you can't apply the view transforms in blender like AgX or Filmic otherwise I would always use it. The standard view transform in blender which it uses is quite ugly
@@robinsquaresplease make a tutorial for agx in affinity/photoshop. My colors are always way off, I've tried creating luts and such, but no success...
For compositing or color grading, always go for EXR no brainer. For printing, TIFF is preferable. If you do none of those? PNG or even JPEG is fine. EXR is basically digital render equivalent of camera RAW format. If you want the best color grading workflow you have to use RAW.
In the comparison i think we compared 32 bit EXR file with 16 bit PNG file. This can be a reason for the difference in quality. Btw great video, learned something new.
What color space are you using (agx, standard etc.) on render, and how do you set it up in davinci? There are tons of tuts about color managment but they all cover ACES
For everything photoreal, I work in AgX with a display transform that suits the scene (I typically leave it at the middle contrast level,) and export in AgX log. In Resolve, I've converted the AgX OCIO to LUTs, which I haven't had any accuracy problems with. Sometimes, I use the AgX OCIO directly in Fusion. But the charts in my videos are typically sRGB, standard tonemapping, to retain my brand colors.
Honestly, when I was working with 3ds max and vray I always exported exr 32bpc but now I'm using blender an I'm more than happy with the default filmic blender tone mapping 😄 it saves me a lot of time. Now I just save it as a PNG 16bpc, do slight color adjustments and it's done for my use case ✨
Exr rules them all. If you increase the dwaa compression up to 500 you can have a smaller version almost the same size as a jpg. Very good to render precomps without noise.
Thanks! Is there a way to check my channel's community posts? I've posted the flowchart there. I'll see if I can link it in the description. (edit: Here's a download for you 1drv.ms/i/s!AuLCSE-VGaTGgY0hfb0SI6w9ijT1dw?e=5gYyTh)
non-HDR formats typically use a color space that applies a gamma function to squeeze more important color data along the bit depth. Thats why you see the colors change doing a diff check on the EXR vs PNG (lossless). DDWA and JPG compressions are very destructive even if you don't think you can see anything change. Also PNG uses zip compression per scan line, so at a point it doesn't matter how high you crank the quality slider, the compression will have a diminishing return on size and will impact load times. I personally don't see why anyone in this day in age would not use lossless, even if your image was horribly compressed blender still unpacks that image in full in memory. maybe you save a bit of time on loading time? but use a NMVe and you'll get 7GB/s transfer speeds and be laughing when your 5GB blend file loads in one second
I can recommend Affinity Photo for stills and DaVinci Resolve for video. (Actually, I grade still with Resolve too. The tools are just amazing.) But if you're stuck with Adobe, I get it. My heart goes out to you.@@MStrong95
@@robinsquares Unstucking "yourself" is the ultimate solution. Fusion Standalone is not only worth it (as much as Nuke) but severely overlooked. Compositing programs are AE + PS + Resolve all at once and few people realize it.
thank you. I have been saying this for years, but because png is significantly slower to write than other formats due to the compression. So much so that I have had cases where it took longer to write the frame to disk, than to render it in the first place.
Thanks for sharing! I didn't know about the difference between JPG and PNG regarding (with/without) transparency. I did learn about DWAA codec, but probably didn't need 32 bit for my short 😅 good visual charts too.
Thank you! It was informative and of course fun. That comparison between PNG and DXR was a bit unfair since you know that gamma curve is probably different or something.. but again, thanks!
I hope someone can answer this but if I want to color grade my render in davinci should I go for 32bit exr or is it not worth it? For context I do vfx for some medium sized brands.
even if you need transparency you can render in Jpeg the color channel and then the alpha channel separatly, since you'll usually only need alpha in compositing that's be fine too
The more often you use and open a jpg the more the jpg deletes what it considers "junk information". If you're consistently loading a project that opens a jpg and then close the jpg, you're losing image data. Doing this a handful of times won't have a visual difference, but you will eventually start to get banding in similar colors.
That's not quite right. If that were the case, you would see the file size shrink each time you open it. What you're describing happens every time you overwrite the jpeg file, which does not happen by loading it into a project.
So if exr can contain multiple images does that mean you could put say, an albedo map, normal map, roughness map, and AO map in the same texture without having to pack them all into a single image? That could be pretty useful for textuees rhough idk how many game engines allow you to use exrs for environment textures as opposed to png which is compatible with almost everything
Yes, you can store different image like diffuse, AO, specular and many more in single multi-channel EXR file. But loading EXR files take much longer than formats like PNG, JPG, TGA, TIF. You can google what channels the multi-channel EXR file can contain. Hint There are more than 10 channels. And one EXR file can be larger than 100MB which is hardly possible for real-time rendering like 3D games can efficiently render without frame bump. Except your computer is super high end speed. Nowadays there is technic to pack gray scale images into different color channels in the same file like Roughness into Red channel, Specular into Blue channel, Metalness into Green channel of PNG or JPG file. Newer version of Blender can also do this.
As a photographer I have found first hand that there are images and situations that can’t be properly displayed using a 100% quality jpeg. It is simply not possible in extreme situations to have smooth gradients. So if you are working in a colorful project I recommend you to test it in some situations. Also, a lot of screens nowadays are 10 bit. All HDR screens are 10 bit, they have to be. But if your image is not in HDR (does blender even support that?) it might not matter. 10 bit would probably solve the Joe’s banding problem, but jpegs don’t support 10 bit. EDIT: As others pointed out in other comments, EXR seems to support HDR andin this video HDR seems to be confused with lossless.
I guess a solid dark background would be just fine in these cases. I like dark gradients but when they are this subtle they are just banded into blobs when compressed.
This is almost certainly UA-cam's fault, but the compression artifacts in the video make comparisons like 2:27 less accurate even at the highest quality setting.
I feel the only reason I use png is to see the thumbnail while it renders.. having to open EXRs every time is a huge pain.. Outside that, Ill change my default settings now thanks!
My only problem with EXR is that if you change the render to "high contrast" in the color management settings, EXR renders will render out with no contrast settings applied. Does anyone know a workaround for this?
what about the other exr compression files? pxr24? dwab? piz? and do they affect the depth?... also nice video , i always render png and dwaa. Edit: i mean by depth as z depth
There are some small differences between them all, but they all get the job done. I didn't want to get into the details in the video, but here's a summary. PIZ is best for grainy images PXR24 changes the bit depth, which can really help with size, but is slightly more confusing to work with B44 isn't adaptive, so you get more predictable image sizes There's little to prefer DWAA over DWAB. They compress differently sized blocks of data. They should all handle Z-depth the same.
as much as I love to use Open Exr like people tell me I should every time I take Open Exr multilayer to Davinci resolve I never get a smooth playback and that's if I even get playback at all so I guess I'm stuck with png
Only thing with EXR files i noticed especially inside unity projects.. is that yes they are very small and keep amazing details, but they are also very prone to corrupting a whole project if even a single bit is not uncompressed by the program or shader it is getting loaded in ( had a hard time figuring out why a test build would use up 11 GB of VRAM as it had only the 3D cube and a 130 KB EXR texture.. it was the EXR failing to load into VRAM (switched to a 2 MB png of the same texture and the VRAM usage was 7 MB)
If that was the case, EXR wouldn't be the back-bone format of the industry and for once, a valid standard (unlike many others). The benefit of CGI offline rendering is that any frame can be re-rendered t any time, granted the pipeline is on-par with today's protocols/best conventional habits. PNG rendering is ***never*** a rational and suitable choice.
But the question is How do preview your EXR frame in windows operating system. I used to with a software called DJV but unfortunately it's not working anymore.
DNEG has made their software xStudio open source. I haven't tried it myself, but people say it's nice. Other than that, Blender can obviously open EXRs. The Blender file viewer isn't bad. You can also render to both JPG and EXR to have a preview file.
incredibly interesting and helpful. Thanks a lot. The only thing which is not working for me is saving out one exr file with Multilayers. Basically i want to have the diffusion pas the ao pass the shadow catcher pass stored as layers in one exr. But it always saves out multiple exr files (per pass via output node) or one exr with only one layer which is black (without output node). Any Idea what I am doing wrong? thanks in advance and thanks again for the helpful video
I'd imagine it's mixing up the default composite output with the file output node? If there are any conflicts, it might behave weirdly. Otherwise, make sure to select "OpenEXR Multilayer" as the file type.
@@robinsquares thanks for your quick reply. I tried all three things: 1. no changes in the compositor tab. just changing the output file to multilayer exr in the render settings 2. adding an output node with the mentioned three layers in the compositor tab (created three different exr files when set to exr which looked correctly and created one file which was completely black when set to multilayer exr) 3. saving a multilayer exr from the renderviewer (also a completely black file.) Guess I need to dive deeper into my settings, thought I understood how it is working but it seems like I am wrong. :D
@@robinsquares seems like photohop is not able to open exr multilayer by default. There is an plugin calles EXR IO whcih is supposed to allow photoshop to open up exr multilayer files. Unfortunately it seems like the Plugin is not compatible with my version of Photoshop atm. Need to further investigate. Thought i share this information for anyone wondering.
I'll be frank with you, I gloss over it in the video because I'm confused by that myself. In my tests, they were always the same size, and looked the same. But I suspect I may have done something wrong.
@@robinsquares DWAA & DWAB only support 16bit float, and not 32bit. So no matter if you set it to Full Float in Blender, it will always contain only half precision. Another note - an additional important reason why we banned png completely from our VFX pipeline ages ago is the fact that they are painfully slow to load due to the decompression algorithm. So handling png sequences for editing or whatnot will bog down the performance. EXR DWAA is used here 80% of the time, EXR ZIP for the remaining 20% (for example when using data passes like cryptomattes, which will be corrupted when saving them with less than 32bit float). BUT you can even put data passes into DWAA/B EXRs, those passes will get stored with full precision when named correctly. But normally, we just break them out into separate ZIP EXRs for ease of use. In the rare case when we need a baked in view transform for quick previews, we ALWAYS use tiffs over pngs. They are bigger, but muuuch faster to save and read.
NB. If you need to use after effects, the reading time of exr is horrible. I mainly use dwaa, but sometimes I have to use png if I want quick iterations on simple graphics in AE. I hate that the exr is so badly optimized so hopefully adobe fix that in near future.
Adobe software are notoriously known from being unsuitable (and flawed) for CGI post. TIFF is to thoughtfully consider as the next choice where/when EXR isn't suitable in those edge cases.
Damn dude, insta subscribe, howcome I haven't found you sooner. Known about this, been using EXR. I am only a hobby artist. But your explanation is clear and your video was so pleasant to watch I had to stop on 2 minute mark and make sure I subscribe.
😂 would love the comparison in video format... My actual pipeline is: Render in JPGs then add all in a filmstrip in a template file then render as MPEG... Any tips/advice?
Sounds like you're doing the right thing. If you want to level up your process, use EXR instead of JPEG and Fusion (it's free) to combine it into a video file.
A few amendments to the video. Thanks commenters for pointing this out.
1. The PNG/EXR difference comparison does not show only compression. It shows every difference between the two.
2. Often, TIFF is the preferred deliverable for print.
3. Cryptomattes ought not be lossy. Use ZIP 32-bit.
4. Bit-depth doesn't only double the amount of data; it does so for each channel. So an RGB image with double bit depth increases six-fold in precision, while only doubling in data. Good trade-off.
5. DWAA doesn't store 32-bit information, which is why the sizes are the same in the chart. (Unless the passes are named in a specific way.)
6. EXR doesn't bake in the tone-mapping. If you need that, TIFF is a good alternative to PNG.
When you say EXR doesn't bake the tone-mapping are you referring to the color transform? I don't have an AGX color transform option in Krita, so baking that in to png is the only way
@graphikeye You can use TIFF too, as it bakes transforms and its 32bit. If You still wanna use EXR, You can use build-in Krita's OpenColorIO library and set path for Blender LUTs configs, it will let You use the same configs, but only for View transform(AgX/Filmic), not Look.
For more info check out Krita docs -- Color Managed Workflow part, they mention Blender interaction here.
#4 is just... wrong!
8 bit depth = 8(r) + 8(g) + 8(b) = 24 bpp (bits per pixel)
16 bit depth = 16(r) + 16(g) + 16(b) = 48 bpp
32 bit depth = 32(r) + 32(g) + 32(b) = 96 bpp
Doubling the bit depth still only doubles the data.
@@stephen-boddy Shit, you're right. What I meant is that it increases the precision six-fold. Thanks for pointing it out. There's a lot of places to stumble on this topic.
My only problem with EXR is that there's no accurate color configuration for it in Premiere Pro, especially for Agx. Unless there's one that i don't know of.
Would love if you could share your knowledge on this.
I think the comparison at 5:00 is a bit misleading. PNG is lossless format so it should show the exact same pixel values if you're encoding the same data. The difference there is that EXR can store floating point values where PNG only stores integer values regardless of the bit depth hence the massive difference in the sky and highlights.
This makes sense in the context of rendering but there are scenarios where you don't need the data to be HDR (when creating textures typically) it would be interesting to compare how EXR and PNG compare in that scenario
Honestly, you're right on the money. It was a bit of an unfair comparison in a few ways, and I wish in hindsight that I'd shown a bit more nuance. As you say, the argument doesn't necessarily hold regarding textures. Thanks for the thoughtful comment.
@@robinsquaresW for hindsight
When you dragged that PNG in it was quite visibly darker. That looked like it was in the wrong color space to me.
@@kzone272 that's a common display error with PNG when shown in things like a browser but I find it you open it with photopea it displays correctly, as it does when loaded into a project as an asset
@@kzone272I believe that's simply due to the display transform, like how rec709 is gamma 2.2 and srgb is gamma 2.4, the EXR is also a "HDR" image, so most applications will choose to display it in HDR if your monitor supports it, I may be wrong though
Great explanation! But, regarding deliverables, one should always talk to the client, or in my case, check with the printer first. The printer told me that he prefers 16 bit TIFFs for best quality. The test prints for my upcoming exhibition are looking gorgeous, btw. 😎
Oh, absolutely. Honestly, I just forgot to mention print. It's such a small part of my work these days. I'll pin your comment.
Save it as tiff at the end. Rendering tiffs will just fill your drive.
@@jhalanddesign I usually go EXR and export what I need in post.
@@robinsquaresWheres the Pin LUL
I was thinking something similar with TIFFs. I switched over a few months ago and I've noticed a nice quality bump with some of my renders since.
0:55 is misleading. Bit depth refers to the precision with which the SAME image/video is stored. Storing values beyond "white" has nothing to do with the number of bits. You can do that in 8 bits or any number of bits.
Also, saying that 8, 16 and 32 bits "double" the amount of data is strange since we are talking about precision. A 16bit PNG has 256 times more possible values per channel than 8bit. It's not just 2x as precise. This explains much better why 16bit is fine in almost all cases - and why some industries work with 10 or 12 bits - because 16 or 32 bit is unnecessarily precise.
3:20 He confuses HDR with lossless. PNG is lossless meaning an encoded image can be decoded into the exact same data. He actually means HDR again (storing values beyond white). But PNGs are also often used for that.
5:00 For whatever reason he is comparing a HDR file with a non-HDR file. Even if he thinks these files store the same data, the comparison doesn't make sense since two lossless files with the same precision obviously should contain identical pixel values - assuming you encode and decode the data correctly. Strange "proofs".
you are awesome
So is that what he says completely wrong, or are his arguments still valid?
@@sebastiengorecki4254 im wondering the same
I find this comment more valid than the entire video!
@@sebastiengorecki4254 I would lean towards "wrong".
PNG is a container format. The video is like saying “never use a square fridge” … has little to do with the food inside.
Your comparison between the EXR and PNG isn't showing the difference in compression quality. PNG exports with SDR tonemapping, whereas EXR export are linear unclipped HDR data. This means you will see a big difference in the brighter areas, which are squashed down when doing SDR tonemapping. You should have exported the PNG with linear tonemapping and clipped the EXR to a max of 1.0 to get a perfect comparison.
You're absolutely right. That would've been a more fair comparison. But the HDR/SDR difference is one that I feel is relevant and that I wanted to show. But you're right; it definitely doesn't show compression alone. I wouldn't say that breaks the core argument though.
Linearly encoded PNG is still integer and "SDR". Unusable regardless of the encoding, not to mention its inapt "alpha" encoding.
tbh this is one of THE MOST well made video i've ever seen in youtube
i come back to it and watch it from time to time
Learning about DWAA EXRs a few years ago blew my mind. Why this didn't become the gold standard for decently compressed high quality outputs IMMEDIATELY is just mind boggling to me. We've had this format for so long and it's been practically ignored for like half its existence.
You got some of the most comprehensible videos about exporting and storing art files in YT, thanks
DUDE! i have 10 years of blender experience so i didn't learn anything new (except that win+ctrl+shift+B which blew my mind lol), but i still watched every video in this series because the explanation quality was SO high and enjoyable. i'll pass the link to this playlist to all of my students! thanks for you hard work, the community is getting so filled by literally noobs teaching everybody how to do stuff that people like you are a much needed breath of fresh hair!
Thank you so much. Comments like this make my day.
Wow that was amazing!! Seems like small information but huge for the quality and space!! Thank you man, you saved my life!!
Size these days doesn't matter in most cases. PNG is still the most compatable and reliable format. MOST reglar programs don't support DWA or EXR etc. PNG of JPG or svg are the primary formats I use.
Amazingly well laid out, thank you. I have been using .png since my photography days, so this is a game changer for me!
Now that's a well presented and good piece of knowledge!
One issue I've experienced with using exr is that when it's saved in blender, it usually doesn't look like the png file when loaded into a photo manipulation program like krita. This is usually cos of the color management (AGX or Filmic)
Lucky for you, I release a video about that today!
@@robinsquares thanks. Imma check it out
can't find the video.
That was incredibly informative 😮
Very much appriciate your effort. The whole series is a must See and very well done.
Fantastic vid. Ive always used png, now i know better. Greetings from Ecuador, you've earned a sub!
Most the time i want a file that is easy to share and can be edited later. Storage is cheap so 16 bit png is usually fine. If i need hdr then i look at exr.
That's basically a entire lesson on rendering. Nice video !
Watched your other videos, I really love how you explain things and very easy to understand.
My problem with EXR is that the export is in completely different contrast and colors than what the vieweport shows me. I understand that EXR carries a greater depth of color but honestly, I don't have the time and I'm tired of having to adjust contrast and complexly recolor every export.
How can I solve the linear problem? When I import the EXR into PHOTOSHOP, several colors are modified and it becomes more saturated and bright
In about three hours, you'll get a half-hour answer to that question on my channel.
this is what happens when non programmers make a video on a file format 😂
What a great video. Literally, i've been using png for the last 8 years without knowing the real difference. Thanks.
Hey! but importing that exr File in Photoshop makes it look weird
Keep your eyes peeled! I'm solving that in today's video.
Thanks for the video! It’s really hard to find storage for png renders but I can’t figure out how to make EXR look the same with AGX color Blender viewport render. I send it to AE and use opencolorIO but it’s not the same with png renders no matter what I do. Can you make a video about this topic?
Man you've done it the best
the video that i needed years ago, but i'm glad it's here now
great work!
The reason jpeg is smaller is because you loose a lot of information about the Hue even if your setting is acceptable for your eyes that are better at detecting contrasts. If you do professional work please use png as it correctly stores the result of your render, jpeg does not and it would show as soon as you start doing color corections. For your delivery still use png as it's the most accurate output you can give too. If you don't know if you need lossless, you do. Always. As for the test shown with the difference layer on a png, what it was is the color space change. If someone needs a smaller size he can always convert the images. If the goal is to convert the images to video at some point you would have double compression on jpg. Stick to 16bit png for work and delivering with 8bit png is fine.
Thank you for the explanation❤
What about JPG XL or WEBP? AVIF is cool but it used a different colour space I think.
Support would be the answer. Jpg and png have been around for ages and are supported most anywhere. Web p and jpg xl are new kids on the block, no idea what their support is. Sure they are great at compression and bit depth, but if they won’t even open that is not useful
@@ThurstanHethornMost modern systems would I'm sure.
You're wrong about browsers only supporting 8-bit. You can use AVIF to display 10-bit HDR images, it's supported by most browsers. Also Safari supports HEIC.
Absolutely amazing video, great source for the video, and just a great explanation!
"oh i get it... well i guess EXR is only useful if you actually work professionally as aaaaAAAAAAAA DWAA DOES W H A T ! ?"
Can you please drop a 15 minute long tutorial on texture projection? In blender 4.0
amazing video as always
JPEG can't do very slow gradients because there is quantization in YCbCr domain, which is only removed with the new JpegLi codec which no software has. You can see a similar effect in the video encoding on the chart scenes here. They show a grey ellipse with blocky borders instead of a smooth blob. Lossless EXR compression is better/faster than PNG. But it's a very complex format and only pro tools support it fully.
Watching this series now gave me extreme anxiety and makes me don't wanna touch blender ever again cuz it just feels like a lot of work to do.
Pleeease, tell me what is that music playing on the background ?
bro i'm looking for
very interesting, thank you!
Actually JPEG2000 is a better storage format than PNG. It's a more advanced jpeg format that allows for 16-bit integer precision, transparency, and either lossless or lossy compression. The problem with EXR files is that they are not color managed whereas PNG, JPEG, and JPEG2000 can embed that information, you have to know what color space they are intended for which is weird to me, but it is what it is. Also, regarding the 16-bit section, 16-bit can be both integer and floating point, that's an important distinction to make when saving. JPEG is only 8-bit integer, but PNG and JPEG2000 can save 16-bit integer. EXR is floating point in either 16-bit or 32-bit.
Thanks for adding that! I've been curious about JPEG2000, but always considered it too fringe to really use. And you're 100% right about the float and integer point.
I used to hate and avoid exr files because of the ridiculously large file size. Thanks so much for this tip!
Hey, thanks for the In-Depth Video. Love to see more professional knowledge getting to the Blender Community.
You could have added that there is a difference between 16 bit EXR and 16 Bit png. 16bit exr is "half" float meaning that you get 32bit float values where negative colors (lower that 0) or overbrights (brighter that 255 or 1) while having half the precision. 16 bit png and tiffs only have integers values so you dont have negatives or overbrights.
In regards to png vs jpg, png gets smaller file sizes whith the amount of color represent. so a 10k image with only black and white and no greys should be much smaller than the corresponding jpg.
Kepp up the good work :)
What people always fail to mention is that exr doesnt save the color transform. I havent found a way to re apply agx after in photoshop so this is misleading to say the least. Even if you know how tomedit photos is not easy to color correct an exr file
Lucky for you, my next video shows you how to do that. Not misleading; just incomplete.
seeing the comparisons between PNG and JPEG, I feel like an idiot looking at my folders of PNG sequences that take up multiple gigabytes lol
Thank you for the video. Could you make a video explaining the mechanism of packing various images into one exr file? Please.
If you look real close, the whole process is shown in the video. Compositor file output.
Good video, but comparing zoomed in JPEG and PNG should have been done without interpolation, as that defeats the purpose of the comparison.
Short, straight to the point, no beating around the bush. Just what I needed for a video like this to improve my renders, thank you!
This video is incredible and is going to save me so much space it isn't even funny. 🙏🙏🙏
I am a bit unsure about what is meant by deliverable.
Sorry about that. I mean the final product that the audience will see.
One more thing about Exr -- sadly, it ignores Color managament in render properties. Yes, that fine if you know how its work, but if no -- you will cry cuz image will not be the same as render with its AgX/Flimic/whatever transforms.
There is one sad moment about transparent PNG too -- if you are using any post like bloom/glare and others with transparent background, you will loose it cuz PNG doesnt support premultiplied alpha which one Blender uses.
Both of these are very good points. Thanks for adding that. I'll consider supplementing this video with a tutorial on linear transforms some time.
EXR development is not to be mistaken with how (sometimes poorly and non-standardized) implemented EXR is in some software. The same could be said about Alembic or more lately USD 3d file format.
@@SKIENTIA yep, and thats sometimes really stupid, cuz industry standard software cant provide the same implementation of opensource file format with wide capabilities. Wanna sometimes cry about it(
EXR unfornutely is not usable in Photoshop. As you said the color management is ingored. Really bad. Working with multilayer exr's would make my life a lot easier. I switched from Cinema4d , where you can save out multilayer psd files which is a dream for still images.
I want to know usability, plus movie workflow. Because everytime I have used EXR outside of HDRis for Unity, it has been a nightmare to work with.
The problem with EXR is that you can't apply the view transforms in blender like AgX or Filmic otherwise I would always use it. The standard view transform in blender which it uses is quite ugly
If you're bringing it out of Blender and don't have a workflow for getting the same colors, I feel you. TIFF is a good alternative for you
@@robinsquaresplease make a tutorial for agx in affinity/photoshop. My colors are always way off, I've tried creating luts and such, but no success...
Amazing video exactly what i needed for an upcoming project :)))
For compositing or color grading, always go for EXR no brainer. For printing, TIFF is preferable. If you do none of those? PNG or even JPEG is fine.
EXR is basically digital render equivalent of camera RAW format. If you want the best color grading workflow you have to use RAW.
I find it very amusing that the slide about bit-depth had the gradient all stepped to bits both literal and figurative 😂
In the comparison i think we compared 32 bit EXR file with 16 bit PNG file. This can be a reason for the difference in quality.
Btw great video, learned something new.
What color space are you using (agx, standard etc.) on render, and how do you set it up in davinci? There are tons of tuts about color managment but they all cover ACES
For everything photoreal, I work in AgX with a display transform that suits the scene (I typically leave it at the middle contrast level,) and export in AgX log. In Resolve, I've converted the AgX OCIO to LUTs, which I haven't had any accuracy problems with. Sometimes, I use the AgX OCIO directly in Fusion.
But the charts in my videos are typically sRGB, standard tonemapping, to retain my brand colors.
@@robinsquares Thanks for reply. You may consider making tutorial on that topic, that would be great.
My blending is so god damn optimized right now, you have no idea
And yet your mouth is a sewer, so I don't think your 'blending' matters much at all. It is 3D art, and AI will soon destroy many of the jobs.
tell me also
Lol I soooo needed this series for my potato PC! 🤣👍
Honestly, when I was working with 3ds max and vray I always exported exr 32bpc but now I'm using blender an I'm more than happy with the default filmic blender tone mapping 😄 it saves me a lot of time. Now I just save it as a PNG 16bpc, do slight color adjustments and it's done for my use case ✨
Exr rules them all.
If you increase the dwaa compression up to 500 you can have a smaller version almost the same size as a jpg. Very good to render precomps without noise.
Hey, great video! I would really love to get some downloadable graphics i can reference later
Thanks! Is there a way to check my channel's community posts? I've posted the flowchart there. I'll see if I can link it in the description.
(edit: Here's a download for you 1drv.ms/i/s!AuLCSE-VGaTGgY0hfb0SI6w9ijT1dw?e=5gYyTh)
@@robinsquaresthank you! It's really great seeing a channel like yours rising like it should, I hope you continue the great work!
non-HDR formats typically use a color space that applies a gamma function to squeeze more important color data along the bit depth. Thats why you see the colors change doing a diff check on the EXR vs PNG (lossless). DDWA and JPG compressions are very destructive even if you don't think you can see anything change. Also PNG uses zip compression per scan line, so at a point it doesn't matter how high you crank the quality slider, the compression will have a diminishing return on size and will impact load times. I personally don't see why anyone in this day in age would not use lossless, even if your image was horribly compressed blender still unpacks that image in full in memory. maybe you save a bit of time on loading time? but use a NMVe and you'll get 7GB/s transfer speeds and be laughing when your 5GB blend file loads in one second
So when working in Photoshop, how does exr compare to other formats like native psd, tiff, pdf, and basically all the other formats?
It's a disaster
I think it's workable with the EXRIO plugin (free.) But there are better alternatives than Photoshop.
@@robinsquares I use a M1 Mac at home and Mac OS at work so I'm going to need something that isn't Windows exe exclusive
I can recommend Affinity Photo for stills and DaVinci Resolve for video. (Actually, I grade still with Resolve too. The tools are just amazing.) But if you're stuck with Adobe, I get it. My heart goes out to you.@@MStrong95
@@robinsquares Unstucking "yourself" is the ultimate solution.
Fusion Standalone is not only worth it (as much as Nuke) but severely overlooked. Compositing programs are AE + PS + Resolve all at once and few people realize it.
thank you. I have been saying this for years, but because png is significantly slower to write than other formats due to the compression. So much so that I have had cases where it took longer to write the frame to disk, than to render it in the first place.
How insightful and informative! Thank you for making this video! Will look at the whole series!
Oh if only modern formats like .webp and .jxl were more adopted.
Anyone know how to work with EXR DWAA and After Efffects? I gave up with trying to match the colors of exported files to blender color settings.
Thanks, I had no idea that EXR existed but my file size is way smaller now!
Thanks for sharing! I didn't know about the difference between JPG and PNG regarding (with/without) transparency. I did learn about DWAA codec, but probably didn't need 32 bit for my short 😅 good visual charts too.
Thank you! It was informative and of course fun. That comparison between PNG and DXR was a bit unfair since you know that gamma curve is probably different or something.. but again, thanks!
I hope someone can answer this but if I want to color grade my render in davinci should I go for 32bit exr or is it not worth it? For context I do vfx for some medium sized brands.
That is the industry standard, yes. However, you'll find that you don't need 32-bit for grading. Many movie cameras deliver 12-bit.
even if you need transparency you can render in Jpeg the color channel and then the alpha channel separatly, since you'll usually only need alpha in compositing that's be fine too
The more often you use and open a jpg the more the jpg deletes what it considers "junk information". If you're consistently loading a project that opens a jpg and then close the jpg, you're losing image data. Doing this a handful of times won't have a visual difference, but you will eventually start to get banding in similar colors.
That's not quite right. If that were the case, you would see the file size shrink each time you open it. What you're describing happens every time you overwrite the jpeg file, which does not happen by loading it into a project.
So if exr can contain multiple images does that mean you could put say, an albedo map, normal map, roughness map, and AO map in the same texture without having to pack them all into a single image? That could be pretty useful for textuees rhough idk how many game engines allow you to use exrs for environment textures as opposed to png which is compatible with almost everything
Yes, you can store different image like diffuse, AO, specular and many more in single multi-channel EXR file. But loading EXR files take much longer than formats like PNG, JPG, TGA, TIF. You can google what channels the multi-channel EXR file can contain. Hint There are more than 10 channels. And one EXR file can be larger than 100MB which is hardly possible for real-time rendering like 3D games can efficiently render without frame bump. Except your computer is super high end speed.
Nowadays there is technic to pack gray scale images into different color channels in the same file like Roughness into Red channel, Specular into Blue channel, Metalness into Green channel of PNG or JPG file. Newer version of Blender can also do this.
As a photographer I have found first hand that there are images and situations that can’t be properly displayed using a 100% quality jpeg. It is simply not possible in extreme situations to have smooth gradients.
So if you are working in a colorful project I recommend you to test it in some situations.
Also, a lot of screens nowadays are 10 bit. All HDR screens are 10 bit, they have to be. But if your image is not in HDR (does blender even support that?) it might not matter.
10 bit would probably solve the Joe’s banding problem, but jpegs don’t support 10 bit.
EDIT: As others pointed out in other comments, EXR seems to support HDR andin this video HDR seems to be confused with lossless.
I like dark gradient backgrounds but you must know the atrocity UA-cam compression does to it, it very distracting. Anyway, great video!
Would it be better if it were white?
I guess a solid dark background would be just fine in these cases. I like dark gradients but when they are this subtle they are just banded into blobs when compressed.
@@lpcamargo I used a solid color for all the backgrounds, so I guess that's still a problem. I've heard that you can get a better bitrate in 4K?
This is almost certainly UA-cam's fault, but the compression artifacts in the video make comparisons like 2:27 less accurate even at the highest quality setting.
Fantastic work ❤
I feel the only reason I use png is to see the thumbnail while it renders.. having to open EXRs every time is a huge pain..
Outside that, Ill change my default settings now thanks!
If I render to exr and then try to save as png for the deliverables - the colors and brightness are damaged - how to do it the right way?
My only problem with EXR is that if you change the render to "high contrast" in the color management settings, EXR renders will render out with no contrast settings applied. Does anyone know a workaround for this?
what about the other exr compression files? pxr24? dwab? piz? and do they affect the depth?... also nice video , i always render png and dwaa.
Edit: i mean by depth as z depth
There are some small differences between them all, but they all get the job done. I didn't want to get into the details in the video, but here's a summary.
PIZ is best for grainy images
PXR24 changes the bit depth, which can really help with size, but is slightly more confusing to work with
B44 isn't adaptive, so you get more predictable image sizes
There's little to prefer DWAA over DWAB. They compress differently sized blocks of data.
They should all handle Z-depth the same.
@@robinsquaresthanks.. i always wanted to know the difference
Thank you! I'll use this as a guide from now on.
All this time my only rule is that: There's no point using .PNG if it's not indexed.
…I could’ve saved 50 GB of space…if I knew this before..
Well then, when I get my new PC I will be keeping this in mind
I've learned a few things... Great episode!
as much as I love to use Open Exr like people tell me I should every time I take Open Exr multilayer to Davinci resolve I never get a smooth playback and that's if I even get playback at all so I guess I'm stuck with png
Only thing with EXR files i noticed especially inside unity projects.. is that yes they are very small and keep amazing details, but they are also very prone to corrupting a whole project if even a single bit is not uncompressed by the program or shader it is getting loaded in ( had a hard time figuring out why a test build would use up 11 GB of VRAM as it had only the 3D cube and a 130 KB EXR texture.. it was the EXR failing to load into VRAM (switched to a 2 MB png of the same texture and the VRAM usage was 7 MB)
If that was the case, EXR wouldn't be the back-bone format of the industry and for once, a valid standard (unlike many others). The benefit of CGI offline rendering is that any frame can be re-rendered t any time, granted the pipeline is on-par with today's protocols/best conventional habits.
PNG rendering is ***never*** a rational and suitable choice.
👍🏻 Great! Informative! And all in a nutshell.
But the question is How do preview your EXR frame in windows operating system. I used to with a software called DJV but unfortunately it's not working anymore.
DNEG has made their software xStudio open source. I haven't tried it myself, but people say it's nice. Other than that, Blender can obviously open EXRs. The Blender file viewer isn't bad. You can also render to both JPG and EXR to have a preview file.
incredibly interesting and helpful. Thanks a lot. The only thing which is not working for me is saving out one exr file with Multilayers. Basically i want to have the diffusion pas the ao pass the shadow catcher pass stored as layers in one exr. But it always saves out multiple exr files (per pass via output node) or one exr with only one layer which is black (without output node). Any Idea what I am doing wrong? thanks in advance and thanks again for the helpful video
I'd imagine it's mixing up the default composite output with the file output node? If there are any conflicts, it might behave weirdly. Otherwise, make sure to select "OpenEXR Multilayer" as the file type.
@@robinsquares thanks for your quick reply.
I tried all three things:
1. no changes in the compositor tab. just changing the output file to multilayer exr in the render settings
2. adding an output node with the mentioned three layers in the compositor tab (created three different exr files when set to exr which looked correctly and created one file which was completely black when set to multilayer exr)
3. saving a multilayer exr from the renderviewer (also a completely black file.)
Guess I need to dive deeper into my settings, thought I understood how it is working but it seems like I am wrong. :D
@@robinsquares seems like photohop is not able to open exr multilayer by default. There is an plugin calles EXR IO whcih is supposed to allow photoshop to open up exr multilayer files. Unfortunately it seems like the Plugin is not compatible with my version of Photoshop atm. Need to further investigate. Thought i share this information for anyone wondering.
Cool to see we don't need TIFF files anymore.
16 bit dwaa rgba exr have the same size with rgba 32 bit dwaa exr, is there any different?
I'll be frank with you, I gloss over it in the video because I'm confused by that myself. In my tests, they were always the same size, and looked the same. But I suspect I may have done something wrong.
@@robinsquares DWAA & DWAB only support 16bit float, and not 32bit. So no matter if you set it to Full Float in Blender, it will always contain only half precision.
Another note - an additional important reason why we banned png completely from our VFX pipeline ages ago is the fact that they are painfully slow to load due to the decompression algorithm. So handling png sequences for editing or whatnot will bog down the performance.
EXR DWAA is used here 80% of the time, EXR ZIP for the remaining 20% (for example when using data passes like cryptomattes, which will be corrupted when saving them with less than 32bit float). BUT you can even put data passes into DWAA/B EXRs, those passes will get stored with full precision when named correctly. But normally, we just break them out into separate ZIP EXRs for ease of use.
In the rare case when we need a baked in view transform for quick previews, we ALWAYS use tiffs over pngs. They are bigger, but muuuch faster to save and read.
@@tobkum Thanks for that. I'll make an amendment video shortly to address this. I appreciate the explanation.
NB. If you need to use after effects, the reading time of exr is horrible. I mainly use dwaa, but sometimes I have to use png if I want quick iterations on simple graphics in AE. I hate that the exr is so badly optimized so hopefully adobe fix that in near future.
Adobe software are notoriously known from being unsuitable (and flawed) for CGI post. TIFF is to thoughtfully consider as the next choice where/when EXR isn't suitable in those edge cases.
Can one export transparency in EXR??
is there a reason why multilayer exr files are double the size of a png?
Damn dude, insta subscribe, howcome I haven't found you sooner. Known about this, been using EXR. I am only a hobby artist. But your explanation is clear and your video was so pleasant to watch I had to stop on 2 minute mark and make sure I subscribe.
Anyone have an Idea on how to make this work with photoshop? The image is blown out when using EXR, I’m guessing AGX compatibility or gamma is off
There's an OCIO plugin for Photoshop
😂 would love the comparison in video format... My actual pipeline is:
Render in JPGs then add all in a filmstrip in a template file then render as MPEG...
Any tips/advice?
Sounds like you're doing the right thing. If you want to level up your process, use EXR instead of JPEG and Fusion (it's free) to combine it into a video file.