4 ms·
> This does seem to be very specific to Game Maker though. Good point. I was going to point out that in general comparing 6-bit color to float color should not
by dahart 1y ago
> This does seem to be very specific to Game Maker though.
Good point. I was going to point out that in general comparing 6-bit color to float color should not result in a change in brightness, tonemapping, or anything other than maybe some visible quantizing in the 6-bit version. That first example makes sense to me if we’re talking about what Game Maker does with 6bpp vs float, and wasn’t meant to be a conceptual comparison of bit depths for shaders in any environment. So maybe GM doesn’t use the same color pipeline with LDR vs HDR colors, perhaps HDR is tonemapped and LDR isn’t? The first paragraph implies this, but doesn’t say it explicitly. Or is tonemapping in GM a user choice not determined by color format?
> Similarly HDR doesn’t mean exceeding 1.0
True, but it’s harder to see the point of HDR without having to deal with colors that are brighter than the display can handle.
There are lots of different ideas & suggested definitions around for what HDR means, but I like to think the important one is the idea of storing colors in absolute physical units, as opposed to relative units where 1.0 means one times the brightest color the display is capable of. Which, of course, you can do with any bit depth, but HDR tends to pair well with higher bit depths.
- kllrnohj 1y ago> True, but it’s harder to see the point of HDR without having to deal with colors that are brighter than the display can handle. 1.0 is a completely arbitrary value that has no meaning. When used with sRGB 1.0 means "users brightness setting." When used with PQ, 1.0 means 10,000 nits. When used with HLG 1.0 means "idk maybe 1000 nits? nobody knows!" You need the colorspace to be defined to know what 1.0 means and whether or not it represents an SDR or HDR value. Or if it's neither even and maps directly to the current display range. Presumably game maker has fixed opinions here, but that gets back to "this is very game maker specific" > but I like to think the important one is the idea of storing colors in absolute physical units, That is not only the least important aspect of PQ HDR, it's downright wrong and the industry is fixing that bug :)
- dahart 1y agoWait, I’m confused by that, what is wrong with the idea of using physical units? Nits are an absolute physical unit. The fact that 1.0 in PQ = 10k nits and that 1.0 represents an absolute physical brightness, not a relative one, is a critically important and defining feature of that color space. You’re saying PQ is “downright wrong”? Why? How is the TV industry fixing it? Using nits as the basis for PQ’s mapping is the entire reason PQ can stop at 1.0, because setting the max possible brightness at 10k nits is considered enough to handle what the vast majority of TVs will be able to display for the time being. If someone makes an HDR TV that handles 100k nits, PQ won’t work anymore. Using a colorspace based on an absolute physical unit like nits was the core idea behind the invention of HDR for people like Greg Ward, for photographers who capture sun in their shots, and for scientists that use digital imaging. PQ is a color space that’s intended for TV display and distribution, but not the HDR space that production people work in, not good for HDR photography, and not really intended to be used for storage of HDR source material. If you use PQ and capture the sun in your shot and then want to re-expose it, you’re probably out of luck. If you increase brightness, you lose color resolution in the dark colors, and if you decrease it, you’ll clamp the sun to less than 10k nits. Either way, you end up with the exact same problems as re-exposing LDR images. Besides physical units, another often important feature of HDR for production CG work is linearity. PQ’s limited bit depth and nonlinear transfer function get in the way and make it not the color space of choice for production pipelines. This is to say that PQ, while being an interesting example worthy of discussion, and a good choice for some goals, does not represent HDR as a whole nor does it serve all HDR needs, it’s not my first choice for the definition of HDR nor the canonical example of why HDR exists. Like many color spaces, PQ comes with tradeoffs and is only intended for a subset of color workflows. > You need the colorspace to be defined to know what 1.0 means and whether or not it represents an SDR or HDR value. Absolutely! I was really referring to the LDR color spaces where 1.0 is relative to the max brightness, which is why I qualified my statement with “relative units”. Aside from PQ, nearly all the old color spaces that stop at 1.0 are relative, not absolute… all the non-physical, non-perceptual color spaces like RGB, CMYK, HSL, HSV… and even some perceptual spaces like CIE’s XYZ, xyY, and LAB are all relative with 1.0 meaning max brightness. Color spaces for print are naturally relative and why it never makes sense to have something greater than 100%.
- kllrnohj 1y ago> You’re saying PQ is “downright wrong”? Why? Yes, PQ is downright wrong because users view content in differing ambient environments. 50 nits in a movie theater and 50 nits on a sunny day are extremely different perceptually. > How is the TV industry fixing it? Who said anything about the TV industry fixing it? Mobile is what really highlights how broken PQ is in practice to such an extent that none of the mobile OS's ever show PQ as the spec demands. BT 2048 arguably redefines PQ into a relative colorspace by defining that 203 nits == "graphics white" which OS' are starting to just treat as SDR white to redefine PQ as a relative colorspace instead of an absolute one. Wayland also adopted this. But even the TV industry is starting to recognize that. The recently Dolby Vision 2.0 focuses a lot on similarly retroactively redefining PQ as a relative colorspace, as is SMPTE ST 2094-50. > Absolutely! I was really referring to the LDR color spaces where 1.0 is relative to the max brightness, which is why I qualified my statement with “relative units”. Aside from PQ, nearly all the old color spaces that stop at 1.0 are relative, not absolute… all the non-physical, non-perceptual color spaces like RGB, CMYK, HSL, HSV… and even some perceptual spaces like CIE’s XYZ, xyY, and LAB are all relative with 1.0 meaning max brightness Just because 1.0 is the max value in a relative colorspace doesn't mean it's necessarily LDR / SDR. Consider for example linear vs. non-linear sRGB. The value 0.5 in both of those means "half of max", yet they represent wildly different perceptual values, right? In that same way, the 1.0 max of any given working colorspace does not have to map to an "LDR" value. Consider for example being able to write directly to the display. 1.0 max value now maps to the max brightness of that display, and whether or not that's "HDR" depends on the display & ambient conditions more than anything else. For internal passes you almost certainly want to work in something consistent, typically linear, and then yes 1.0 would be SDR white. But the output swapchain is ~never linear, and what 1.0 means depends entirely on what is communicated to the consumer of that swapchain. It has no inherent meaning, no inherent SDR/LDR/HDR-ness. Just like 1.0 of an sRGB swapchain and 1.0 of a Display P3 swapchain have different colors, you can also have different luminance ranges depending on what the specific platform supports and the specifics of the output mode.
- dahart 1y agoI thought you were saying the TV industry is fixing it, maybe I misunderstood. PQ is a television standard, people don’t really use it in other scenarios. I thought you were defending PQ. If not, then I’m not sure why we’re talking about PQ, Game Maker doesn’t use PQ, does it? I’m not sure what you mean about different ambient environments leading to the conclusion that PQ is wrong. No color space can fix that problem, that’s not a color space problem. You seemed to argue with the idea of keeping track of physical units. I guess I’m not understanding your point. For the rest it sounds like we’re mostly in full agreement. Of course the output of HDR work isn’t linear, transfer functions and tonemapping guarantee that. I mentioned linear HDR workflows because you brought up PQ, which is primarily a delivery display color space for HDR displays. I agree that what 1.0 means depends on what the color space defines it to mean, especially when you don’t use a relative color space. We only have the 2 kinds, one that’s relative and where 1.0 is defined to mean the max brightness (or reflectivity) of the display medium, and one where you somewhere define an absolute reference point. My point was only, and still is, that for the relative color spaces, 1.0 always means the same thing. It’s true you can have values above 1 in a relative color space, if you want, but you can’t print or display them; that would only be useful for pre-output color processing.