-
-
Notifications
You must be signed in to change notification settings - Fork 35.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rendering issue with normals and DoubleSided materials on some Adreno GPU series #15850
Comments
In general, certain mobile devices do not support Can you please verify with one of your problematic devices how the following demo renders: https://jsfiddle.net/15r8372z/show Do you see a moire pattern on the geometries? |
Thanks for the reply. webglreport.com reports: It's very interesting that the material renders 'correctly' as long as it has no normal map. |
Um, okay. If the devices actually support
The lighting equations related to normal maps use derivate functions ( |
@Mugen87 The OP is demonstrating @donmccurdy I wonder if the reintroduction of tangent support can be used to solve problems with low-precision mobile by avoiding the use of screen-space derivatives. |
@WestLangley I just try to find out if it's a precision related issue. |
@Mugen87 That's cool. :-) |
@ignazkevenaar what tool was used to create the second model? Do you know if it can write a |
@Mugen87 The provided test passes @donmccurdy The model was exported from Reallusion iClone Character Creator 3 as an FBX, then converted using FBX2glTF with flags |
Ok, thanks. FBX does support tangents, but I have no idea whether that particular tool would include them – most likely not, as you say. In the meantime I don't have a way to test whether the |
@ignazkevenaar On what Android version are the mentioned devices? We had once an issue that was introduced by a system upgrade which also upgrades the graphics driver. Just to clarify things: Just using an environment map works, right? But adding the normal map is problematic? Do you also see the glitches with just normal map (so without an env map)? |
@Mugen87 The android versions are 7.1.2, 8.0.0 and '9' We've done some more digging and I have good news and bad news... My initial diagnosis of the problem was wrong. Good thing you asked! That got me thinking, the highlights are where the shadows should be. Here is the kicker: It renders perfectly on "affected" devices now! |
It seems so, but you are not sure? So the problem is device specific? And occurs with double side only? |
I would really like to know why this happens 🤔 |
I've decided to do some more debugging and finally found out that the thing that causes the issue is In fact - at least on my phone - using I've looked at an alternative to |
Fix normal map rendering issue on Adreno GPUs #15850
Update here @WestLangley & @Mugen87 Same issue here on Info:
Temporary solution:
Hope this can help. Here a screenshot with on the left - FrontFace, and on the right a DoubleSide |
@dghez said
What is the issue, exactly? What are we supposed to observe in your screenshot? Are you using |
Hey @WestLangley , sorry if I wasn't totally clear. If you look at the screenshot you can see 2 armours, one is GOLD (that's how it should look) and one is SILVER, both with the same Regarding the |
That may not be temporary... |
@dghez We're currently using that solution as well in production specifically targeting Adreno GPUs.
Hope this helps! |
@mrdoob and @JordyvanDortmont yeah, to me is fine to use that, no problem. Anyway, thanks both. |
It appears this is still happening. I'm noticing this issue on double sided materials (Pixel 3 phone) |
@arodic I have some rendering issues on Snapdragon 845 and 855 too .. 865 seems to fix the issue |
Hello All, Thank you for your great work version 126 resolved everything ! |
Description of the problem
Hi, I'm working with a small team on implementing a THREE scene with glTF and PBR/IBL.
It all works great except when testing on specific mobile devices we've come across a weird rendering issue.
It is easily reproducable (though only on some hardware!) by opening the MeshStandardMaterial example and setting the
material.side
toTHREE.DoubleSide
.Steps to reproduce:
viewer
iframe in the console.scene.children[1].children[0].material.side = THREE.DoubleSide
,scene.children[1].children[0].material.needsUpdate = true
The models will appear as follows:
The gun model from the examples
The model that caused the initial problem
Is there anything we can do to provide more info? Anything blatantly obvious we've overlooked? Thank you in advance.
Some things of note
envMap
is required. Both LDR and HDR envMaps are affected.normalMap
, the material renders correctly (roughness, metallic) albeit without the normal map affecting the lighting ;)Three.js version
Browser
OS
Hardware Requirements (graphics card, VR Device, ...)
Android Device with Qualcomm Snapdragon SOC with an Adreno 500 series GPU: We've tested on 505, 506 and 530
The text was updated successfully, but these errors were encountered: