-
-
Notifications
You must be signed in to change notification settings - Fork 21.4k
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
GPUParticles3D
not working on Meta Quest 2 with OpenGL renderer
#83275
Comments
GPUParticles3D
not working on Meta Quest 2GPUParticles3D
not working on Meta Quest 2 with OpenGL renderer
I just tried with Godot 4.2-beta1 (updating to the latest OpenXR loader plugin, of course!) and I'm still seeing the same thing. |
Have you checked for errors? @BastiaanOlij do you know if renderdoc works with the Quest2? |
UPDATE: Using renderdoc I just did a frame capture in an app where I should be staring at a UPDATE 2: I take it back - I am seeing some errors via
Why might this be happening with |
If I run my MRP on my Android phone (using the I'm seeing the same shader cache errors from my last comment in
So, those seem unrelated to the actual problem with the particles not rendering on the Quest, since the particles render fine on my phone? |
@dsnopek in renderdoc there is a tab for "pipeline". If you click on a particle draw call while in the pipeline tab you can select the first sub tab. It's called something like "vertex array" or something like that (all the way on the left, before vertex shader). Once in that tab you can inspect the data that goes in and out of the vertex shader and see if any bogus data is being used |
Ok, so looking at the shader contents in Renderdoc and comparing it with the various glsl files in
Looking at the "VTX" tab on the If I hop over to the And finally on the one that seems to be intended to do tho actual rendering, in the "VTX" tab there's 5 slots, this time not all zeros! Unfortunately, I don't really know how to interpret this data. If I switch over to the "VS" tab, there's 4 uniforms and the SceneData and MultiviewData UBO's. Those all look roughly how I'd expect (of course, I can't really interpret matrices by eye balling them :-)) Sorry, I couldn't make more informed analysis of the data :-/ I've uploaded the capture I saved from Renderdoc, in case you (or someone else) can interpret the data better. |
Alright, I've spent more time staring at the data! This time I ran the MRP with Renderdoc on my desktop using the Looking at data in and out (I figured out how to find the output data :-)) of the draw call that appears to be the one doing the rendering, I'm seeing this locally: Notice the last component of the And here's from the Quest 2: Notice how the 4th component of So, I think this qualifies as "bogus data" :-) |
The weird data on the Quest seems to start with ALL the data ( And then on And from there to the I guess this needs to be tied back to code somehow, but I'm not sure I'll be able to do that :-) |
Hm. Could the crazy huge negative number in the 4th component of those vec4's come from this code in
And, if so, why doesn't the same thing show up when running this on my desktop? Is there some floating-point number trick that's supposed to be happening here that doesn't work on Quest? UPDATE: Or, perhaps, it's the next line not evaluating to
When that evaluates to |
I did another capture with Renderdoc on the Quest 2, and got different results than the saved capture I've been digging deep into. :-/ In this one, I'm seeing all zeros going into But when it gets to the actual rendering of the particles, the So, in conclusion, I have no idea what's going on. :-) I'm going to put this down for now. |
I haven't looked into how GPU particles work on OpenGL but could this be the same issue we had with updating vertex buffers for animations? I.e. the system spitting the dummy because our framebuffer is still current and our framebuffer being multiview, even thought the framebuffer is irrelevant with these functions? You're probably aware @dsnopek but just in case, Meta has a special version of renderdoc with a number of extra features build in specific for Adreno GPUs, worth using. |
While digging into issue #83733, I noticed something interesting. When I load up a scene that uses So, it seems to be something specific to rendering the particles when in multiview. However, this doesn't happen when rendering in multiview with the
Yeah, based what I learned above when trying this with WebXR, that seems possible. Perhaps the particle shaders that do the actual particle simulation are getting thrown off by running in multiview?
Yep, I'm aware, but their fork only has a Windows build and I do 99.99% of my development on Linux, so I haven't tried using it when debugging this issue. |
Based on @BastiaanOlij's suggestion that this problem could be just like PR #79772, I attempted to apply the same solution as used in that PR and... it fixes it! I just posted PR #83756 with the fix |
Godot version
System information
Meta Quest 2, GL Compatibility Renderer
Issue description
When using the GL Compatibility Renderer,
GPUParticles3D
works fine in the editor. But when I deploy to the Meta Quest 2, nothing appears. (FYI, using the Vulkan Mobile renderer, it works fine.)Looking through the issue queue, issue #82419 seemed similar, but the fix doesn't work: I disabled the shader cache, and it didn't fix the problem. In fact, on that issue, the
GPUParticles3D
worked the first time, whereas I've never seen it work. I have uninstalled, re-installed, and even changed the unique ID of the app (so Android treats it as a different app altogether) and this hasn't seemed to make disabling the shader cache do anything useful.I haven't yet had a chance to try Godot 4.2-beta1 to see if the same problem exists there.UPDATE: I just tried with Godot 4.2-beta1 (updating to the latest OpenXR loader plugin, of course!) and I'm still seeing the same thing.
Steps to reproduce
Setting up a Quest app has quite a few steps! So, best to try the MRP. :-) The MRP already has the shader cache disabled.
Minimal reproduction project
You'll need to do "Project" -> "Install Android Build Template..." before exporting to Quest
I've uploaded a Renderdoc capture I saved from running the 4.2 MRP.
The text was updated successfully, but these errors were encountered: