06:56:42 RRSAgent has joined #hdr 06:56:46 logging to https://www.w3.org/2023/09/13-hdr-irc 06:56:46 RRSAgent, do not leave 06:56:46 RRSAgent, make logs public 06:56:47 Meeting: HDR on the web 06:56:47 Chair: Christopher Cameron 06:56:48 Agenda: https://github.com/w3c/tpac2023-breakouts/issues/74 06:56:50 clear agenda 06:56:52 agenda+ Pick a scribe 06:56:54 agenda+ Reminders: code of conduct, health policies, recorded session policy 06:56:56 agenda+ Goal of this session 06:56:58 agenda+ Discussion 06:57:00 agenda+ Next steps / where discussion continues 06:57:07 Ian has left #hdr 07:15:22 Ian has joined #hdr 07:15:26 Ian has left #hdr 15:19:41 RRSAgent has joined #hdr 15:19:41 logging to https://www.w3.org/2023/09/13-hdr-irc 15:19:41 present+ 15:19:55 present+ Chris_Needham 15:19:57 Present+ 15:20:07 Present+ 15:20:08 Xiaohan has joined #hdr 15:20:15 annevk has joined #hdr 15:20:15 present+ Nigel_Megitt 15:20:15 present+ 15:20:29 present+ Xiaohan 15:20:30 present+ 15:20:42 JT has joined #hdr 15:20:43 bialpio has joined #hdr 15:20:49 cabanier has joined #hdr 15:21:05 scribe+ cpn 15:21:07 myles has joined #hdr 15:21:12 chris has joined #hdr 15:21:33 rrsagent, here 15:21:33 See https://www.w3.org/2023/09/13-hdr-irc#T15-21-33 15:21:37 ccameron: we want to solve two problems: images and video, make sure it looks good and predictable across browsers 15:21:58 ... the second problem is enabling dynamic HDR content, with canvas 15:22:07 nick_lansley_gs1 has joined #hdr 15:22:07 .. Are there problems? Yes 15:22:11 present+ 15:22:17 ... HDR media can be unpredictable how it looks, jarring 15:22:25 ... For HDR canvas it doesn't exist yet 15:22:27 eeeps has joined #hdr 15:22:48 ... Goal is to converge on the approach, some things are block, so can we unblock them? 15:23:02 ... Slide shows the set of things we need to solve 15:23:48 ... HDR definition: A display is HDR if it can draw brighter than white, FFF in CSS 15:24:01 ... Quantify the HDR headroom, how many times greater than white can it display? 15:24:30 ... It varies across devices, and with the display brightness, ambient light 15:24:47 ... It's queryable on all operating systems 15:24:50 greater in absolute luminance, I assume; and also peak not full-screen luminance 15:25:11 ccameron: There is a dynamic range media query, returning "standard" or "high" 15:25:37 ... In terms of out for HDR stuff, lots of discussion of nits, but devices don't do nits, they do pixel values 15:25:43 q+ 15:25:49 ... SDR is range 0 to 1, then extended headroom 15:26:04 ChrisL: Does 2X mean in linear light? 15:26:12 ccameron: Yes 15:26:30 ??: As someone encodes for a specific number of nits, how should I think about this? 15:26:59 ccameron: With PQ in particular, you can write a video frame at 400 nits, but that's on a reference monitor in a reference environment 15:27:01 s/??/nigel/ 15:27:10 ... That doesn't apply so much on the web 15:28:01 ccameron: Convert to the pixel space, is the rough trajectory. Everything goes into the SDR relative floating point space 15:28:20 NigelM: Is this definition in the proposal, or is it scene setting? 15:29:11 ccameron: This is what I want to do for the web, a proposal, aligning with what's in the desktop computing environment, so the broadcast concepts are brought into this world 15:29:24 ??2: I think it's the right terminology 15:29:32 s/??2/myles/ 15:29:57 Timo: So you're converting, need a convresion that maintains the intent, which is difficult 15:30:22 ccameron: We'll need to address that. 15:30:34 ... There's an ISO work item, on gainmap images 15:30:50 ... They have a defined rendering into the SDR space 15:31:38 ... HDR images, all browsers do something a bit different. What are the problems? 15:31:42 ack svgeesus 15:31:57 ... First is the rendering is undefined, and other is it's unclear whether to serve SDR or HDR 15:32:20 s/nigel: As someone/??: As someone 15:32:22 ... There's a spec for rendering HLG and PQ, many specs... end result is some number of nits 15:32:56 ... More concretely, if I have a HLG or PQ image, draw to a canvas, and read back, we need to agree, don't want non-deterministic 15:33:16 https://github.com/whatwg/html/issues/9112 15:33:24 ... In ISO we're working on a non-normative recommendation for converting HLG and PQ to SDR pixels for use in SDR colour managed ecosystem 15:33:34 ... Then we point web specs at it, and write WPT tests 15:33:45 ... So you get the same thing on every browser 15:34:01 ... Second thing: HLG/PQ image in an img tag on an HDR monitor, what do I see? 15:34:10 ... Want that to be a function of HDR headroom as well 15:34:29 ... In discussion on HDR spec, want to also define conversion to full range, and interpolate based on HDR headroom 15:35:14 ... Second issue is HDR can be too bright 15:35:30 https://github.com/w3c/csswg-drafts/issues/9074 15:36:01 ... CSS property to let you set a dynamic range: standard to not go beyond SDR white, constrained-high which goes to 2x, or 'high' which uses full capability 15:36:21 ... what should the default be? Some browsers go full blast on video, others on images 15:36:32 ... Existing dynamic range media query isn't expressive enough 15:36:42 https://github.com/w3c/csswg-drafts/issues/9306 15:36:45 ... "standard" or "high" 15:37:00 Meeting: TPAC Breakout: HDR 15:37:15 ccameron: don't want to serve PQ to some devices with not enough headroom, use SDR instead 15:37:15 Agenda: https://www.w3.org/events/meetings/009a5b81-0459-4ae4-9b33-f88dd9a9d89f/ and https://github.com/w3c/tpac2023-breakouts/issues/74 15:37:18 Chair: ccameron 15:37:52 ... want to propose exposign something more about HDR headroom to the web. Value in having 1,2,4,8, one more bit of information, but solves the problem I see. That's a proposal 15:38:09 ... The dynamic range limit is something implementers are exceited about 15:38:30 ... Next topic is HDR canvas, using WebGL, WebGPU and 2D canvas 15:39:03 ... 2D WebGL, SDR or display-p3. But limited to 8-bit back buffers, so can't do HDR 15:39:19 ... WebGPU allows a floating point backbuffer. But the spec says the buffer will be composited as SDR 15:39:30 ... anything beyond that is clamped 15:39:41 ... I have a plan I've developed with people here 15:39:53 https://github.com/ccameron-chromium/webgpu-hdr/blob/main/EXPLAINER.md 15:40:18 ... First part is WebGPU extended range. When you draw pixels, you can use the full capability of the display 15:40:30 ... This unlocks building apps brighter than SDR 15:40:46 ... Step 2 is WebGL with Canvas float support 15:41:00 ... 2D canvas has a proposal that's stuck on what getImageData should do 15:41:09 https://github.com/KhronosGroup/WebGL/pull/3222 15:41:10 ... Part 3 is ?? 15:41:34 https://github.com/whatwg/html/issues/8708 15:41:41 Part 4 is tone mapped canvases, then specify HDR content with a defined tone map algorithm 15:41:48 s/??/apply the colorMetadata to WebGL and 2D canvas as well/ 15:42:13 ... With this you can create a canvas and render an HLG or PQ image same as via img tag 15:43:05 ... In summary, standardise rendering of HDR content - this is moving forward 15:43:39 ... Dynamic range limit is disussed in CSSWG, converging 15:43:52 ... 2d Canvas is stalled 15:44:06 ... once dependencies are solved, we can then get into tone mapping HLG/PQ 15:44:15 ... Not sure what to do with HDR CSS color 15:44:54 https://drafts.csswg.org/css-color-hdr/ 15:45:03 q+ 15:45:03 Topic: Discussion 15:45:10 q+ 15:45:14 ccameron: WHat are the points of interest or contention? 15:45:19 q? 15:45:35 ack ada 15:46:14 Ada: For WebXR you render to a different display with possibly different color space, so the canvas would need to be configured with the colorspace of the device 15:46:27 ... Would this work or cause problems in this model? 15:46:50 ccameron: The canvases should all work as offscreen canvases, so if you can get info about the screen you could use it 15:47:32 Ada: We're discussing in the Immersive Web WG, but we're not HDR experts 15:48:04 ccameron: You'd need to know what kind of screen you're plugging into, media queries, don't know about multiscreen APIs 15:48:04 ChrisL: You mentioned a tone mapping thing 15:48:17 ISO 22028-5:2023 15:48:21 ccameron: The main issue is it's for images, used in non-HDR contexts. We need a standard way of ending up with the same result for how images look 15:48:55 ... Take metadata available, use a simple/predictable curve. I'm proposing a Reinhard curve, there are other options. No one curve is best for all content. Fools errand to try 15:49:38 ... For images you can include an ICC profile with defined mapping to SDR 15:49:38 q+ 15:50:09 ack svgeesus 15:50:09 q? 15:50:24 q- dbaron 15:50:42 Timo has joined #hdr 15:50:52 dbaron: one thought about HDR and CSS, it's not clear to me how much it matters where you do the conversion 15:51:11 ... There's a point where you map the HDR thing to what the device's HDR headroom is 15:51:53 ... If you're going to do HDR in CSS, is it desirable to control at what level in the DOM tree where it happens, e.g., whole compsiting pipeline, different performance characteristics 15:52:07 .. COuld have a CSS property to identify a container for the convresion 15:52:25 ccameron: That's a reasonable idea, create a container to tell the OS to map to the display capabilities 15:52:39 ... I like the idea of having CSS all assumed to be SDR, and opt-in to HDR 15:52:40 q+ 15:53:00 ... Didn't have so many use cases for this, so no proposals, but I think that makes a lot of sense 15:53:15 q- ccameron just answered my question 15:53:18 q- 15:53:24 q- mfoltzgoogle 15:53:53 mfoltz: You talked about addressing HDR, encoded vs dynamic media, but there are ways to go back and forth, capture from canvas etc 15:54:03 ... How to maintain fidelity of HDR rendering with capture APIs? 15:54:17 ccameron: Video generally has to be HDR or PQ, no other options 15:54:39 q+ to ask more about opt-in vs opt-out 15:54:45 ... Need to get the maths sorted out. If you have canvas and pulling in HDR video, want to be able to choose between tonemap to SDR or use full HDR 15:55:41 ... and then when you take an element and go to convert it to SDR, tone map in the same way, or somehow specify you want to capture it as HDR with conversion to HLG or PQ 15:56:13 ... with the extended linear space, I'd like it to be defined so it's round trippable, that's about defining the math 15:56:23 q? 15:56:48 q- myles 15:56:50 ... I think canvas will be HLG or PQ, not the extended space 15:57:27 myles: on opt-in for CSS, could opt-in apply to canvas and img and everything else? 15:58:02 ccameron: my sense is make all video full HDR by default, and do the same thing for video and images 15:58:08 ... canvas is opt-in 15:58:34 ... Hard for me to say, could be assume HDR unless said otherwise. But could go the other way 15:58:44 ChrisL: What problem are you seeing? 15:59:13 ccameron: Don't think we've defined how color 2,2,2 should be twice as bright as SRGB linear 1,1,1 15:59:32 ChrisL: You can specify the color now, but what happens is not defined 16:00:15 ccameron: It means changing the buffer from implementation point of view 16:00:29 ChrisL: Might make sense, effectively you've created an offscreen context 16:01:48 q+ to ask what's the most surprising consequence of this for a page author 16:01:48 q? 16:02:19 Timo: If the display is 5x or 10x more, if you change the relative value of the SDR light, do you ?? 16:02:19 ... could end up with signal represnetations at a few thousand nits 16:03:01 ccameron: Think that's OK. Rephrasing, if I darken the monitor, you could do 16x brightness, but if you can do 50x brightness, take 203 nits map to 1.0, that's now a 10,000 nit display 16:03:23 ... Don't think it's a problem, HLG and PQ is mapped to that relative space 16:03:44 ... and the max HLG on the display is always where 5x white is 16:04:18 q? 16:04:51 Timo: It's not wrong, but a different way of looking at the problem. You need a good perceptual colour volume mapper to avoid messing up the image 16:05:29 ccameron: The relative space is in the reference environment, not specifying colorimetry 16:05:46 q+ to wonder about changes to ootf as headroom changes 16:05:58 ... I expect monitors as they change brightness monitor that so things don't change how they look, but that's outside the remit of the UA 16:06:10 Timo: I'm concerned about making that someone else's problem 16:06:19 q- nigel 16:07:13 Nigel: There could be surprises for the page author ... what do you think may be the biggest suprise is? 16:08:03 Myles: Key is if all browsers implement this, the author will change their site 16:08:05 q- svgeesus 16:08:18 Nigel: Depending on the monitor they use 16:08:53 ChrisL: Headroom, making display brighter, what about overall OOTF? 16:09:39 ... In the cpntext display brightness changes 16:09:51 s/There could be surprises/I'm wondering about situations like overlaying semi-transparent elements in rgb 0..1 range colours. There could be surprises 16:09:51 ccameron: I see it as responsibility of the display and OS 16:10:41 ... Right now, OS's try to do that right 16:10:48 i/Myles: Key is/ccameron: Overlaying translucent elements is going to be one of the weirder behaviours. 16:11:37 Anne: Action items from this meeting? 16:11:43 i/ChrisL: Headroom/annevk: That's true, and it could change over time. 16:12:07 ccameron: goal was to see where there's disagreement. Any general concerns on the approach 16:12:16 Timo: can work if we get the mapping part right 16:12:37 myles: You've deferred all the hard questions. Immediate steps seem right 16:12:54 s/steps/next steps/ 16:13:16 ccameron: We're not painting ourselves in a corner doing that now 16:14:02 myles: I'm less sure on the specific media queries 16:14:25 ... Not impossible to solve in a privacy preserving way 16:15:34 ccameron: I think we can make progress on all three of the green issues today 16:15:34 Eric: I think exposing another bit of information about the user will be a hard sell 16:15:57 q+ 16:16:21 (They're also bits that might change over time which makes them a *little* less problematic.) 16:17:45 Nigel: Is the alternative to keep colors in a standard range, and carry other information and let the OS figure out what to do 16:18:05 ccameron: could be, but some apps don't want that, e.g., games renderers 16:18:19 ... alternative is let the user agent ramp it down 16:18:25 Anne: Or ask the user 16:19:24 myles: Ask once and persist it, but it is more friction 16:19:39 [adjourned] 16:19:42 rrsagent, draft minutes 16:19:43 I have made the request to generate https://www.w3.org/2023/09/13-hdr-minutes.html cpn 16:19:58 rrsagent, make log public 17:15:13 eeeps has joined #hdr 18:36:03 eeeps has joined #hdr 21:06:40 eeeps has joined #hdr 21:42:02 eeeps has joined #hdr 21:45:21 eeeps has joined #hdr 22:04:43 eeeps has joined #hdr 22:35:56 eeeps has joined #hdr