godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
89.3k stars 20.23k forks source link

Octahedral compression causes rendering issues with animated meshes on Android #54763

Open mbrlabs opened 2 years ago

mbrlabs commented 2 years ago

Godot version

3.4

System information

GLES2, Android 11 (Galaxy S10)

Issue description

This happens when importing animated models with the new default settings (octahedral compression enabled) and running it on Android. When you disble compression (with all options) and reimport the model all looks normal. Also looks fine on Windows:

https://user-images.githubusercontent.com/8750135/140766065-b5b49ba3-9125-4bd6-a321-e0f04a8db4a4.mp4

Steps to reproduce

1) Import an animated mesh (or delete the .import folder so it gets regenerated) 2) Make it play an animation 3) Run it on an Android device

Minimal reproduction project

This is the MRP project form the video above. The model is taken from: https://opengameart.org/content/lowpoly-animated-knight.

CompressionBug.zip

The-O-King commented 2 years ago

I've done some investigation, and I think this may potentially be a driver bug - I've run the given project on my pixel 4 (which has an Adreno 640) and it works no problem, however on my Pixel 6 (which has a Mali-G78) I do see this issue with GLES2

@mbrlabs Could you confirm which chipset your S10 is running on (it seems to differ depending on if you are in the US vs other parts of the world) - I suspect yours is also a Mali chip

I took some traces with RenderDoc and it seems that on my Mali devices the vertex buffer specification is not being setup correctly - Here's a screenshot from the Pixel 6 (Mali) image

And here's a screenshot from it rendering correctly on Pixel 4 (Adreno) image

I'm still investigating a bit, but if others could chime in if they have devices to test/reproduce on that would be helpful :)

mbrlabs commented 2 years ago

Alright, thanks for investigating. Yes, it's an ARM Mali-G76 MP12. This is the model i have: https://www.phonemore.com/specs/samsung/galaxy-s10/sm-g973fds-128gb/.

Edit: Just tested with a couple of more devices: