I use EXRLoader to make a texture, and then sets the color space of that texture to be SRGBColorSpace, then feed it to PMREMGenerator, and keep the colorSpace of resulting texture to be intact (SRGBLinear) as it looks like PMREMGenerator has a reason to produce a texture with SRGBLinear. I use the resulting texture to scene.background and scene.environment where the renderer is using the default values of outputColorSpace and ColorManagement.enabled. It still came out like this:
I use EXRLoader to make a texture, and then sets the color space of that texture to be SRGBColorSpace, then feed it to PMREMGenerator, and keep the colorSpace of resulting texture to be intact (SRGBLinear) as it looks like PMREMGenerator has a reason to produce a texture with SRGBLinear…
An OpenEXR texture is very unlikely to be in the sRGB color space. Typically they are Linear-sRGB, which is also the default EXRLoader will choose. This applies to most HDR textures as well.
I think if you leave the defaults alone you should be OK here, or you can equivalently set THREE.LinearSRGBColorspace.
If the colors appear right but the scene is over-exposed or blown-out, you may want to enable tone mapping on your renderer. This is a good idea in general for lit scenes.
Thanks for the info for the example. The example controls toneMappigExposure of the renderer (as you suggested) and probably that is how I need to go with. My app is a construction framework so there will be many different use cases. I think we have to get into the habit of setting exposure in case by case basis.