PMREM env map is not supported on some integrated graphic cards

Hi everyone,

My team and I are developing a game using an environment map that is generated by the PMREMGenerator. But recently we’ve noticed that some desktop computer won’t support this feature and return as an error that the WebGL context failed to be created.

Here’s a codepen that replicate the issue: https://codepen.io/Kromahtique/pen/QWjWKRv
While I see the blue sphere, some other users just see a black screen with an error ending with “WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost”.

Here’s the complete log of the error: https://justpaste.it/3j06z

Moreover, there seems to be a pattern where those who can’t run this feature have computers with integrated graphic chips, among which:

  • Intel HD Graphics 620
  • Intel® HD Graphics 520 (from 2 different users)
  • Intel® HD Graphics 630

The result doesn’t seem to depend on the browser being used.

Is there no hope to be able to support the PMREMGenerator on these devices? Or at least being able to test that this feature is supported, so we can use a fallback solution if it is not?

Thank you,
Clément

An other user reported a similar issue some time ago at GitHub. A GPU driver update solved the issue.

If a driver update is not possible, can you please try it with the latest dev version of PMREMGenerator? The dev builds can be found here:

Thank you for your answer and sorry that someone else had already posted about this issue.

Both your solutions are correct, I’ve first tried to update to latest dev version, and it solved the problem for the one with the Intel Graphics 630. But not for the others.

One of them (with Intel Graphics 620) has updated his drivers and it worked as well.
So that’s definitely a solution to the problem.

The issue is now to handle our players who do not support this feature. Would there be an easy way to check this? We will have to find a fallback solution (or just an error message) for this not-so-uncommon case.

Thank you once again!

I’m not aware of an easy solution. The only way I can think of is to do some sort of test rendering and then verify whether the output is as expected or not. Similar to how the WebGL conformance test suite works.

I suppose that’s the path we will take then. Or couldn’t there be a way to extract the PMREM as an image and load it as a texture of the environment map? This way we avoid using the PMREM generator at all.

Our scene is static and wouldn’t need to be updated.

warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them

sounds like something 3js people could fix in the glsl code

This should be actually fixed on the browser side:

https://bugs.chromium.org/p/chromium/issues/detail?id=765576

1 Like