openvr icon indicating copy to clipboard operation
openvr copied to clipboard

Color Space Correctness?

Open mbechard opened this issue 5 months ago • 2 comments

Hey,

I see there is the EColorSpace which allows control of the transfer function for the content (sRGB gamma or linear). But is there no notion of how to show the color values coming from different gamuts (Rec2020 etc) correctly on the devices? Is the assumption just that the displays are always sRGB/Rec709 gamut, and we should remap/clip content to that?

Thanks

mbechard avatar Jul 17 '25 01:07 mbechard

Most VR apps render to 8 bits per channel textures, which use sRGB encoding to avoid banding in the low end. Apps using higher bit depth textures instead submit images in linear color space, and it's up to the runtime to convert to an appropriate display color space, but typically that's just sRGB.

aleiby avatar Aug 04 '25 20:08 aleiby

Hey, thanks for the reply.

The sRGB encoding only defines the non-linear<->linear transfer, which as you say is used for banding reduction for 8-bit data. It doesn't necessarily imply the full color space including the gamut primaries. For example Display P3 color space also uses an sRGB transfer. I'm sure many VR headsets are sRGB color space, but many are not as well.

I'm wondering about something like: https://registry.khronos.org/OpenXR/specs/1.0/man/html/XrColorSpaceFB.html or the ovrColorSpace/ovr_GetHmdColorDesc/ovr_SetClientColorDesc from the Oculus/Meta SDK.

Thanks

mbechard avatar Aug 06 '25 14:08 mbechard