AgX-Step4: Add and Rename Colorspaces #110941

Merged
Sergey Sharybin merged 19 commits from :AgX-Step4 into main 2023-08-09 18:00:52 +02:00
Contributor

This is step 4 of the AgX implementation as discussed in the original AgX PR

step 4. add more color spaces. Renaming of existing spaces is required, for example, the name Linear makes no sense when there are a bunch of Linear spaces.
Will include aliases for backwards compatibility

I also took the chance to edit some spaces description and family tag, which also involves in putting False Color to inactive_colorspaces instead of using family: display filtering.

The spaces are now:

  • Linear components of the display spaces
    • Linear Rec.709
    • Linear DCI-P3 D65
    • Linear Rec.2020
  • Linear ACES spaces
    • ACES2065-1
    • ACEScg
      (Change from Linear ACEScg to ACEScg since ACEScg already implied a linear transfer function, otherwise using Linear AP1 ACES might make more sense. Same goes for ACES2065-1)
  • Linear FilmLight E-Gamut
    This is for AgX's LUT input encoding. It can potentially be useful for interop.
  • Display spaces
    • sRGB
    • Display P3
    • Rec.1886
    • Rec.2020
  • Filmic Components
    • Filmic Log
    • Filmic sRGB
    • False Color
This is step 4 of the AgX implementation as discussed in [the original AgX PR](https://projects.blender.org/blender/blender/pulls/106355#issuecomment-984699) >step 4. add more color spaces. Renaming of existing spaces is required, for example, the name Linear makes no sense when there are a bunch of Linear spaces. Will include aliases for backwards compatibility I also took the chance to edit some spaces description and family tag, which also involves in putting `False Color` to `inactive_colorspaces` instead of using `family: display` filtering. The spaces are now: - Linear components of the display spaces - Linear Rec.709 - Linear DCI-P3 D65 - Linear Rec.2020 - Linear ACES spaces - ACES2065-1 - ACEScg (Change from `Linear ACEScg` to `ACEScg` since ACEScg already implied a linear transfer function, otherwise using `Linear AP1 ACES` might make more sense. Same goes for ACES2065-1) - Linear FilmLight E-Gamut This is for AgX's LUT input encoding. It can potentially be useful for interop. - Display spaces - sRGB - Display P3 - Rec.1886 - Rec.2020 - Filmic Components - Filmic Log - Filmic sRGB - False Color
Zijun Zhou added 2 commits 2023-08-09 06:59:06 +02:00
a5cbf35f1d Fix mistake in step 3
Accidentally made the official name and the alias identical during  one of the step 3 commits, making the alias pointless. Therefore fixing it as part of step 4
buildbot/vexp-code-patch-coordinator Build done. Details
a53c926c88
Add and rename colorspaces
Add more colorspaces, rename colorspaces and add aliases, as well as edit some descriptions and family tags
Zijun Zhou requested review from Brecht Van Lommel 2023-08-09 07:00:02 +02:00
Zijun Zhou requested review from Sergey Sharybin 2023-08-09 07:00:13 +02:00

@blender-bot package

@blender-bot package
Member

Package build started. Download here when ready.

Package build started. [Download here](https://builder.blender.org/download/patch/PR110941) when ready.

I think native spectral rendering in Cycles should not use illuminant E color spaces on the UI level, and therefore we should not have these illuminant E version of color spaces in our config.

What spectral rendering should do is ignore the illuminant conversion for reflectance colors, but not for emission colors. For the rest of Blender like compositing, file I/O and painting we should use illuminant D65 (or D60 for ACEScg) as usual. It's only the conversion of reflectance colors to/from spectral inside the renderer that needs some special care. From reading papers and course notes, this I believe is also how spectral production renderers do it.

We should then also not have D65 in the name of color spaces where they already have a well defined illuminant.


The reason the ACEScg name exists is exactly to use it in places like this, since AP0 and AP1 are easy to confuse for artists, ACEScg is more recognizable. I'm fine renaming ACES to ACES2065-1, to disambiguate it and follow the same naming as the OpenColorIO cg config.

Ideally we would put all the linear colorspaces in a Linear submenu, and then having Linear in the name is not so important. I don't feel strongly about having Linear in the name for ACES right now or not.


I think we should use "Rec." instead of "BT." in the names. I believe this is a more common, and the OpenColorIO CG config also uses Rec instead of BT.

I think native spectral rendering in Cycles should not use illuminant E color spaces on the UI level, and therefore we should not have these illuminant E version of color spaces in our config. What spectral rendering should do is ignore the illuminant conversion for reflectance colors, but not for emission colors. For the rest of Blender like compositing, file I/O and painting we should use illuminant D65 (or D60 for ACEScg) as usual. It's only the conversion of reflectance colors to/from spectral inside the renderer that needs some special care. From reading papers and course notes, this I believe is also how spectral production renderers do it. We should then also not have D65 in the name of color spaces where they already have a well defined illuminant. --- The reason the ACEScg name exists is exactly to use it in places like this, since AP0 and AP1 are easy to confuse for artists, ACEScg is more recognizable. I'm fine renaming ACES to ACES2065-1, to disambiguate it and follow the same naming as the OpenColorIO cg config. Ideally we would put all the linear colorspaces in a Linear submenu, and then having Linear in the name is not so important. I don't feel strongly about having Linear in the name for ACES right now or not. --- I think we should use "Rec." instead of "BT." in the names. I believe this is a more common, and the OpenColorIO CG config also uses Rec instead of BT.
Zijun Zhou added 1 commit 2023-08-09 12:07:20 +02:00
Brecht Van Lommel requested changes 2023-08-09 12:09:05 +02:00
@ -87,2 +88,3 @@
name: Linear
name: Linear BT.709 D65
aliases: [Linear, Linear BT.709, Linear BT.709 I-D65, Linear Tristimulus, Linear Rec.709, linrec709, Utility - Linear - sRGB, Utility - Linear - Rec.709, lin_srgb, Linear Rec.709 (sRGB), lin_rec709_srgb, lin_rec709, lin_srgb, "CGI: Linear - Rec.709"]
family: linear

Other families are getting renamed to use capitalization. If we do that we should changes family linear to Linear everywhere as well.

Other families are getting renamed to use capitalization. If we do that we should changes family linear to Linear everywhere as well.
Eary marked this conversation as resolved
@ -90,3 +92,3 @@
bitdepth: 32f
description: |
Rec. 709 (Full Range), Blender native linear space
Open Domain (unbounded) Linear BT.709 Tristimulus with illuminant D65 white point

I don't think using the term "Tristimulus" here or other descriptions is helpful, so would leave it out everywhere. OpenColorIO only deals with tristimulus values, it's not making a useful distinction.

Open domain I don't think is a standard term, it might be a term invented by Troy. I don't think we need to mention this at all, in fact the color space itself does not define if it is unbounded or not, also sRGB in Blender permits unbounded values.

I don't think using the term "Tristimulus" here or other descriptions is helpful, so would leave it out everywhere. OpenColorIO only deals with tristimulus values, it's not making a useful distinction. Open domain I don't think is a standard term, it might be a term invented by Troy. I don't think we need to mention this at all, in fact the color space itself does not define if it is unbounded or not, also sRGB in Blender permits unbounded values.
Eary marked this conversation as resolved
@ -125,0 +200,4 @@
equalitygroup:
bitdepth: 32f
description: |
Open Domain (unbounded) Linear E Gamut Tristimulus with illuminant D65 white point

"E Gamut" -> "E-Gamut" also in the description, I have not seen it spelled without the dash elsewhere.

"E Gamut" -> "E-Gamut" also in the description, I have not seen it spelled without the dash elsewhere.
Eary marked this conversation as resolved
@ -126,2 +211,3 @@
name: sRGB
family:
aliases: [sRGB 2.2, sRGB I-D65, srgb_display, sRGB - Display, g22_rec709, Utility - Gamma 2.2 - Rec.709 - Texture, Utility - sRGB - Texture, sRGB - Texture, srgb_tx, srgb_texture, Input - Generic - sRGB - Texture, "sRGB Display: 2.2 Gamma - Rec.709"]
family: Displays/SDR

Can we keep the family name for all these display to just "Display"?

With upcoming EDR support on macOS this one actually works for HDR too. And as long as we don't have HDR displays there is not much point in making a distinction.

Can we keep the family name for all these display to just "Display"? With upcoming EDR support on macOS this one actually works for HDR too. And as long as we don't have HDR displays there is not much point in making a distinction.
Eary marked this conversation as resolved
@ -129,3 +229,3 @@
bitdepth: 32f
description: |
sRGB display space
Display P3 with sRGB compound (piece-wise) encoding transfer function

Is this DCI-P3? If so it would good to put that there in the description, and also mention that it is commonly used for digital cinema.

Is this DCI-P3? If so it would good to put that there in the description, and also mention that it is commonly used for digital cinema.
Author
Contributor

This is actually Apple's Display P3, which is common on Mac devices.

This is actually Apple's Display P3, which is common on Mac devices.
Eary marked this conversation as resolved
@ -138,0 +242,4 @@
equalitygroup:
bitdepth: 32f
description: |
BT.1886 2.4 Exponent EOTF Display

It would be good to mention this is commonly used for TVs.

It would be good to mention this is commonly used for TVs.
Eary marked this conversation as resolved
@ -139,3 +267,3 @@
name: Non-Color
aliases: [Generic Data, Non-Colour Data, Raw, Utility - Raw]
family: raw
family: Data/Generic Data

Data/Generic Data is not a very elegant name. Would go with just Data.

Data/Generic Data is not a very elegant name. Would go with just Data.
Eary marked this conversation as resolved

I don't think Imagery is particularly descripitive, all the other color spaces are used for images as well.

I don't think Imagery is particularly descripitive, all the other color spaces are used for images as well.
Author
Contributor

It's supposed to refer to the view transforms, should the family just go blank or should it be replaced with some other family name?

It's supposed to refer to the view transforms, should the family just go blank or should it be replaced with some other family name?

We don't use them in the UI right now, so it doesn't matter yet. But we may in the future.

For now perhaps put these in the family "Filmic".

We don't use them in the UI right now, so it doesn't matter yet. But we may in the future. For now perhaps put these in the family "Filmic".
Eary marked this conversation as resolved
Zijun Zhou added 1 commit 2023-08-09 12:09:38 +02:00
Zijun Zhou added 1 commit 2023-08-09 12:15:46 +02:00
Member

Illuminant E version of the above spaces for Spectral Cycles to potentially utilize

Adapting colors to white point E will definitely be useful for spectral Cycles, yes. It's needed to interpret colors (e.g. from textures) correctly for use as albedo, etc. I'm sure you're aware of that, but for anyone else reading along.

I do wonder what the best approach is in terms of how the transforms are structured, though. And I think the answer to that may depend on how spectral Cycles ends up approaching things. For example, at what point in the chain does Cycles do that white point adaptation? And will it do white point adaptation automatically based on whether the color is used for an albedo parameter, or is it left up to the user to ensure that the white point is adapted appropriately to the use case? And will it do spectral upsampling directly from RGB (like the Jakob 2019 method) , or will it be done from CIE XYZ (like the Meng 2015 method)?

So these illuminant-E spaces might need to be rethought in the future once we figure those questions out. I don't feel strongly about whether we include them for now or not, though.

If we do include them, however, I think it would be good to document in the descriptions the white point adaptation method (Bradford / Hunt / XYZ scaling) used to generate them. And I think that goes for the CIE-XYZ D65 space as well, now that I think of it. (Edit: and any other white-point-adapted spaces as well.)

(Edit 2: I got distracted in the middle of composing this, and Brecht beat me to the punch. Didn't see that before I posted.)

> Illuminant E version of the above spaces for Spectral Cycles to potentially utilize Adapting colors to white point E will definitely be useful for spectral Cycles, yes. It's needed to interpret colors (e.g. from textures) correctly for use as albedo, etc. I'm sure you're aware of that, but for anyone else reading along. I do wonder what the best approach is in terms of how the transforms are structured, though. And I think the answer to that may depend on how spectral Cycles ends up approaching things. For example, at what point in the chain does Cycles do that white point adaptation? And will it do white point adaptation automatically based on whether the color is used for an albedo parameter, or is it left up to the user to ensure that the white point is adapted appropriately to the use case? And will it do spectral upsampling directly from RGB (like the [Jakob 2019 method](https://rgl.epfl.ch/publications/Jakob2019Spectral)) , or will it be done from CIE XYZ (like the [Meng 2015 method](https://cg.ivd.kit.edu/spectrum.php))? So these illuminant-E spaces might need to be rethought in the future once we figure those questions out. I don't feel strongly about whether we include them for now or not, though. If we do include them, however, I think it would be good to document in the descriptions the white point adaptation method (Bradford / Hunt / XYZ scaling) used to generate them. And I think that goes for the CIE-XYZ D65 space as well, now that I think of it. (Edit: and any other white-point-adapted spaces as well.) (Edit 2: I got distracted in the middle of composing this, and Brecht beat me to the punch. Didn't see that before I posted.)
Zijun Zhou added 1 commit 2023-08-09 12:29:24 +02:00
67cec52d03 Clean up consequence after renaming
Also restore Linear P3's D65 since standard DCI-P3 uses a different white point
Zijun Zhou added 1 commit 2023-08-09 12:32:47 +02:00
Zijun Zhou added 1 commit 2023-08-09 12:34:47 +02:00
Zijun Zhou added 1 commit 2023-08-09 12:37:34 +02:00
Zijun Zhou added 1 commit 2023-08-09 12:39:20 +02:00
Zijun Zhou added 1 commit 2023-08-09 12:41:11 +02:00
Zijun Zhou added 1 commit 2023-08-09 12:43:48 +02:00
Zijun Zhou added 1 commit 2023-08-09 12:45:51 +02:00
Zijun Zhou added 1 commit 2023-08-09 12:49:16 +02:00
Zijun Zhou added 1 commit 2023-08-09 12:55:08 +02:00
Nathan Vegdahl reviewed 2023-08-09 12:59:12 +02:00
@ -124,1 +156,4 @@
- !<ColorSpace>
name: Linear E-Gamut
aliases: [Linear E-Gamut I-D65, "FilmLight: Linear - E-Gamut"]
Member

Is E-Gamut actually used much outside of FilmLight's own tools and configurations? I could very well just be out of the loop on this, but my initial reaction was that it feels kind of specific and maybe not appropriate in a general configuration.

Is E-Gamut actually used much outside of FilmLight's own tools and configurations? I could very well just be out of the loop on this, but my initial reaction was that it feels kind of specific and maybe not appropriate in a general configuration.
Author
Contributor

It's needed for AgX's LUT input encoding. Also there are people using E-Gamut for interop, this repository for example:
https://github.com/gralk/images

It's needed for AgX's LUT input encoding. Also there are people using E-Gamut for interop, this repository for example: https://github.com/gralk/images

We could hide it from the UI and only use it internally. But I guess it can be useful to exchange files with BaseLight and it's not really in the way.

Maybe in the description change "Linear E-Gamut" to "Linear FilmLight E-Gamut" to hint what this is for.

We could hide it from the UI and only use it internally. But I guess it can be useful to exchange files with BaseLight and it's not really in the way. Maybe in the description change "Linear E-Gamut" to "Linear FilmLight E-Gamut" to hint what this is for.
Eary marked this conversation as resolved
Member

Not sure if it should be in this PR or not, but at some point I think it would be good to also add Rec.2100 (both HLG and PQ) as display spaces as well.

Not sure if it should be in this PR or not, but at some point I think it would be good to also add Rec.2100 (both HLG and PQ) as display spaces as well.
Author
Contributor

I have experimented with Rec.2100 but I don't have a finished version of AgX for it. Still experimenting.

I have experimented with Rec.2100 but I don't have a finished version of AgX for it. Still experimenting.
Zijun Zhou added 1 commit 2023-08-09 13:11:41 +02:00
Zijun Zhou added 1 commit 2023-08-09 13:18:08 +02:00
Zijun Zhou added 1 commit 2023-08-09 13:29:24 +02:00
Member

I have experimented with Rec.2100 but I don't have a finished version of AgX for it. Still experimenting.

I don't think their inclusion should be blocked on AgX support. The point is to support the output spaces themselves, even if there isn't yet a good tone mapper / image formation chain / whatever you want to call it for them yet. They can just have Standard for now, and better transforms can be added later.

(Again, maybe that's not for this PR anyway. Just saying AgX isn't a blocker/prerequisite for that IMO.)

> I have experimented with Rec.2100 but I don't have a finished version of AgX for it. Still experimenting. I don't think their inclusion should be blocked on AgX support. The point is to support the output spaces themselves, even if there isn't yet a good tone mapper / image formation chain / whatever you want to call it for them yet. They can just have `Standard` for now, and better transforms can be added later. (Again, maybe that's not for this PR anyway. Just saying AgX isn't a blocker/prerequisite for that IMO.)
Author
Contributor

They can just have Standard for now, and better transforms can be added later.

There are also complications like we need to have multiple versions that are 1000 nits limited and P3 limited etc., I feel more confortable doing so after all things are figured out.

> They can just have Standard for now, and better transforms can be added later. There are also complications like we need to have multiple versions that are 1000 nits limited and P3 limited etc., I feel more confortable doing so after all things are figured out.
Member

I feel more confortable doing so after all things are figured out.

Yeah, that's a good point. Sounds good.

(Edit: to clarify, I'm assuming AgX isn't part of that "all things". I really think these questions are independent of AgX.)

> I feel more confortable doing so after all things are figured out. Yeah, that's a good point. Sounds good. (Edit: to clarify, I'm assuming AgX isn't part of that "all things". I really think these questions are independent of AgX.)

When we add HDR display spaces, we need to ensure there is actually a way to use them for display or file saving. For display we definitely need significant code changes, for file saving maybe there is a file format that happens to work, but most likely this will also need changes in various places to actually work well.

I'm not sure what the most common file formats are for HDR images like that, I see for example WebP and JPEG 2000 support HDR but I would guess they are not the primary file formats for this. Mainly I see references to encoding HDR video, and I imagine ffmpeg integration will need some changes for that.

When we add HDR display spaces, we need to ensure there is actually a way to use them for display or file saving. For display we definitely need significant code changes, for file saving maybe there is a file format that happens to work, but most likely this will also need changes in various places to actually work well. I'm not sure what the most common file formats are for HDR images like that, I see for example WebP and JPEG 2000 support HDR but I would guess they are not the primary file formats for this. Mainly I see references to encoding HDR video, and I imagine ffmpeg integration will need some changes for that.
Brecht Van Lommel approved these changes 2023-08-09 13:46:43 +02:00
Brecht Van Lommel left a comment
Owner

This looks ok to me now, but note:

  • We will need changes in Blender 3.6 for forward compatibility. Renaming Linear to Linear.Rec709 is a significant breaking change.
  • Values in tests/imbuf_io/reference_load will need to be updated for this rename.
  • The new display spaces at this point are only really useful for file saving.
This looks ok to me now, but note: * We will need changes in Blender 3.6 for forward compatibility. Renaming Linear to Linear.Rec709 is a significant breaking change. * Values in `tests/imbuf_io/reference_load` will need to be updated for this rename. * The new display spaces at this point are only really useful for file saving.
Author
Contributor

I believe all comments are addressed. Though I left Linear DCI-P3 D65 to have D65 in its name since we are not using the Theater white point here.

I believe all comments are addressed. Though I left `Linear DCI-P3 D65` to have `D65` in its name since we are not using the Theater white point here.

Love to see we are all in an agreement now :)

The cryptomatte test is failing. It is because the string-based comparison is not enough to see the exr is in scene linear space already. I have a patch for it #110959.

The imbuf tests I think we'll need to update the expected color space.

I'll take care of landing the #110959 (or equivaleent fix to ensure no pixels are touched for cryptomatte), will merge main branch to this PR, and update the expected color space for the imbuf test.

P.S. Will also commit alias to 3.6 for the compatibility.

Love to see we are all in an agreement now :) The cryptomatte test is failing. It is because the string-based comparison is not enough to see the exr is in scene linear space already. I have a patch for it #110959. The imbuf tests I think we'll need to update the expected color space. I'll take care of landing the #110959 (or equivaleent fix to ensure no pixels are touched for cryptomatte), will merge main branch to this PR, and update the expected color space for the imbuf test. P.S. Will also commit alias to 3.6 for the compatibility.

@Eary Ah, do you mind updating the description to reflect the updated state of added and renamed color spaces? That will help a lot for the final commit message :)

@Eary Ah, do you mind updating the description to reflect the updated state of added and renamed color spaces? That will help a lot for the final commit message :)
Author
Contributor

do you mind updating the description to reflect the updated state of added and renamed color spaces? That will help a lot for the final commit message :)

Sure, done.

> do you mind updating the description to reflect the updated state of added and renamed color spaces? That will help a lot for the final commit message :) Sure, done.
Sergey Sharybin added 1 commit 2023-08-09 16:39:35 +02:00
buildbot/vexp-code-patch-coordinator Build done. Details
1ad060b845
Merge branch 'main' into AgX-Step4

@blender-bot build

@blender-bot build
First-time contributor

I'm not sure what the most common file formats are for HDR images like that, I see for example WebP and JPEG 2000 support HDR but I would guess they are not the primary file formats for this. Mainly I see references to encoding HDR video, and I imagine ffmpeg integration will need some changes for that.

To add a small note on this subject, over the past year there seems to be some convergence around ISO 22028-5 (especially using AVIF or JPEG XL). Apple is adding OS-wide support for HDR images in this format and adding some APIs for general HDR still-image support: https://developer.apple.com/videos/play/wwdc2023/10181/

Adobe has also confirmed that the upcoming HDR mode in Photoshop/Lightroom will also be based around ISO 22028-5 for file I/O: https://community.adobe.com/t5/camera-raw-discussions/p-beta-feature-hdr-output-feedback-thread/m-p/13992463#M22858

> I'm not sure what the most common file formats are for HDR images like that, I see for example WebP and JPEG 2000 support HDR but I would guess they are not the primary file formats for this. Mainly I see references to encoding HDR video, and I imagine ffmpeg integration will need some changes for that. To add a small note on this subject, over the past year there seems to be some convergence around ISO 22028-5 (especially using AVIF or JPEG XL). Apple is adding OS-wide support for HDR images in this format and adding some APIs for general HDR still-image support: https://developer.apple.com/videos/play/wwdc2023/10181/ Adobe has also confirmed that the upcoming HDR mode in Photoshop/Lightroom will also be based around ISO 22028-5 for file I/O: https://community.adobe.com/t5/camera-raw-discussions/p-beta-feature-hdr-output-feedback-thread/m-p/13992463#M22858
Sergey Sharybin merged commit 6923f7a153 into main 2023-08-09 18:00:52 +02:00
Sergey Sharybin deleted branch AgX-Step4 2023-08-09 18:00:54 +02:00
First-time contributor

This isnt mentioned in the Python API bit of the release notes, despite changing the API in such a way it crashes scripts if not modified.

This isnt mentioned in the Python API bit of the release notes, despite changing the API in such a way it crashes scripts if not modified.

@Simarilius That is a fair point. We should mention it.

However, if you do "hard-coded" assignments, even prior to the changes we did the script will fail for people with custom OCIO configuration. This is why people shouldn't really assign hard-coded colorspaces. It does seem that we need to expose couple of functionality in the API in order to do things properly:

  • A way to assign color space in a way that alias is resolved.
  • A way to query default roles from the python code

Can you describe your use-case a bit more, so that we know that changes we are planing to do will support your case?

@Simarilius That is a fair point. We should mention it. However, if you do "hard-coded" assignments, even prior to the changes we did the script will fail for people with custom OCIO configuration. This is why people shouldn't really assign hard-coded colorspaces. It does seem that we need to expose couple of functionality in the API in order to do things properly: * A way to assign color space in a way that alias is resolved. * A way to query default roles from the python code Can you describe your use-case a bit more, so that we know that changes we are planing to do will support your case?
First-time contributor

I'm one of the contributors to the Wolvenkit Cyberpunk Import plugin (https://github.com/WolvenKit/Cyberpunk-Blender-add-on) which imports Cyberpunk assets to Blender and tries to reproduce the in game shaders. One of the shaders was setting an image texture node to LINEAR in the plugin, when I did the update for B4 I initially missed updating this as it wasnt in the release notes so figured I should mention it.

I'm one of the contributors to the Wolvenkit Cyberpunk Import plugin (https://github.com/WolvenKit/Cyberpunk-Blender-add-on) which imports Cyberpunk assets to Blender and tries to reproduce the in game shaders. One of the shaders was setting an image texture node to LINEAR in the plugin, when I did the update for B4 I initially missed updating this as it wasnt in the release notes so figured I should mention it.

@Simarilius What is the format of the image?

@Simarilius What is the format of the image?
First-time contributor

It'll be a PNG, I'm not even 100% sure it needs to be set/changed from default, just already was and the existing code crashed when it wasn't something the release notes warned needed fixing.

It'll be a PNG, I'm not even 100% sure it needs to be set/changed from default, just already was and the existing code crashed when it wasn't something the release notes warned needed fixing.

PNG is default to sRGB. If it stores some non-color data (maybe direct light) then it needs to eb set to Non-Color, and it it is somehow contains linear color then its space is to the corresponding linear space (perhaps, scene linear).

In any case, it all falls under ability to query roles from the OCIO configuration. While the actual color space name could vary, the name of the role is expected to be the same. Basically, you'd asking "hey, OCIO, what's the color space name for non-color data?". We'll first need to implement this, but it was good to confirm that it actually will solve your use-case in a portable manner.

P.S. I've added a note in the Python API breaking changes about the color space names. And renaming and removal is also mentioned in the Color Management section of the release notes.

PNG is default to sRGB. If it stores some non-color data (maybe direct light) then it needs to eb set to `Non-Color`, and it it is somehow contains linear color then its space is to the corresponding linear space (perhaps, scene linear). In any case, it all falls under ability to query roles from the OCIO configuration. While the actual color space name could vary, the name of the role is expected to be the same. Basically, you'd asking "hey, OCIO, what's the color space name for non-color data?". We'll first need to implement this, but it was good to confirm that it actually will solve your use-case in a portable manner. P.S. I've added a note in the Python API breaking changes about the color space names. And renaming and removal is also mentioned in the Color Management section of the release notes.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
7 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#110941
No description provided.