🔽 The full playlist: Master Optimization in Blender 🔽 • Master Optimization in... The article that sparked the video 👉 skientia.co/cgi/image-formats... Downloadable image of the decision tree 👉 1drv.ms/i/s!AuLCSE-VGaTGgY0hf...
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.
As a consumer of a lot of online renders, I've learned that some image sharing websites will do extra compression of JPGs. That's why people "accuse" JPG of being low quality, because like it or not, a lot of places will take the opportunity to compress it "a little bit", which when the image is reshared, websites will compress it "a little bit" again. That's why terms like "Needs more JPEG" exists. Trying to do the same thing with PNG would only make the PNG load slower, but no quality reduction (though nowadays some sites seem to convert to JPG anyway). Additionally, I have one friend who does 2D art and was told to render in JPG "due to its lower quality" to try to sell the "full, proper quality" elsewhere like a patron subscription service. It's much harder to deliver a low-quality PNG than a JPG.
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.
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.
It's hard to find channels that provide actual information these days. I get why clickbait-y titles are needed but most of the popular Blender youtubers are just pumping videos filled with memes that give little to no info about the topic they are supposed to be on. So it was refreshing to see a video that provides knowledge. Great video!
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!
This series was phenomenal, I learned so many new things and re-learned others that I had misunderstood before. Thanks for such a concise and valuable tutorials! ❤
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.
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.
Perfect explanation, amazing editing, beautiful graphic design, congratulations and thank you, this is the perfect example of what a RU-vid video should be!
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!
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 :)
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.
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 ✨
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)
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.
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 saved a 16k normal map from one of my projects in PNG RGBA 0% compress and EXR DWAA 16bit and the DWAA version ended up being 11MB LARGER than the PNG.
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?
Appreciate your work! One more thing, Do you think there's no such differences on saving time? I often do render animations which get me to render over 2,000-3,000 frames. Heard TIFF and EXR format save faster than PNG though. What's your thought about saving time for EXR (DWAA, 16 bit)?
You're right, EXR both saves and loads faster than PNG does. Compressing and de-compressing a file takes time, and EXR does that much more cleverly. Although bigger files can sometimes load slowly if they're on a slow hard-drive. I did some quick preliminary tests on loading time (which I assume are comparable to saving time,) and it seemed to depend much more on bit-depth than file type. Which makes sense. Can't tell you much more than that.
Which would be best to use as an overlay in video editing? I used to use Tiff image files, but it had its problems with giving me a white edge, so I switched over to PNG (ping) images and the white edge issue was gone!
this is great for still images, but when i want to import an animation i am not using exr because the image doesnt look the same. I need to transform the colours with a special LUT for Agx, but i havent found one yet that correctly transforms the colours
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.
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
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.
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.
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)
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
Awesome stuff, please, does this apply when rendering an image sequence for a video? I've always used png, and most times the "alpha" is not necessary. Can i use jpeg at 90% quality instead?
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.
Time to bring in WEBP!I know some devs are already working on using it in their addons to minimize RAM usage. Next, there must be an addon that automatically converts and relinks all my assets 😂
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.
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.