filament icon indicating copy to clipboard operation
filament copied to clipboard

Picking broken on Samsung S24 with Vulkan 1.3.279 in Filament 1.66

Open LionelMyFit opened this issue 2 months ago • 8 comments

Describe the bug Picking renderables does not work on the Samsung Galaxy S24 when using Vulkan 1.3.279. The same application works correctly on the same device with Vulkan 1.3.231.

To Reproduce Steps to reproduce the behavior:

Use Filament 1.66 on an Android project (also reproduced on all versions above 1.53)

Run the app on a Samsung Galaxy S24 with Vulkan driver 1.3.279.

Try to perform object picking (e.g., raycasting or tap selection).

Observe that picking does not register correctly, the picking returns always ID 0

Expected behavior Object picking should work as it does on Vulkan 1.3.231 on the same device.

Screenshots N/A (the issue is functional, not visual).

Logs No relevant logs

Smartphone:

  • Device: Samsung Galaxy S24
  • OS: Android 15

Additional context The issue only occurs with Vulkan driver version 1.3.279.

The issue does not occur with Vulkan 1.3.231 on the same device.

Picking works correctly on other devices tested with Vulkan 1.3.279.

LionelMyFit avatar Oct 21 '25 14:10 LionelMyFit

Im using ARCore + Sceneview. The filament engine reported: 12:58:59.733 V [Samsung Electronics Co., Ltd.], [ANGLE (Samsung Xclipse 540) on Vulkan 1.3.279], [OpenGL ES 3.2 Driver version: 24.1.265 git hash: 24f47ea4b93e], [OpenGL ES GLSL ES 3.20 (ANGLE git hash: 24f47ea4b93e)]

And Im currently using 1.52.0 so I can confirm its a vulkan issue. All my other devices and other samsung versions work, except for A56 with this vulkan version.

bennysway avatar Oct 24 '25 11:10 bennysway

@bennysway Thanks for this response, it confirms my analysis

LionelMyFit avatar Oct 24 '25 12:10 LionelMyFit

Well I hope this help you @LionelMyFit , I was sampling textures for shader data (vertex, texture, texelFetch etc). Changing my Sampler to min = NEAREST, max = NEAREST; made it work.

setParameter(
                    "productData",
                    productDataTexture!!,
                    TextureSampler(
                        TextureSampler.MinFilter.NEAREST,
                        TextureSampler.MagFilter.NEAREST,
                        TextureSampler.WrapMode.CLAMP_TO_EDGE,
                    ).apply {
                        anisotropy = 1.0f
                    },
                )

I do not know your usecase, but try tweaking these. Its funny that this version of Vulkan only has this weirdness. Sluths needed

bennysway avatar Oct 24 '25 14:10 bennysway

@bennysway I have changed to NEAREST but it doesn't work. Here is my code :

private val textureSampler = TextureSampler(
       TextureSampler.MinFilter.NEAREST,
       TextureSampler.MagFilter.NEAREST,
       TextureSampler.WrapMode.CLAMP_TO_EDGE,
   ).apply {
       anisotropy = 1.0f
   }

context.readUncompressedAsset("materials/flat$FILAMAT_EXTENSION").run {
           return@run Material.Builder().payload(this, this.remaining()).build(engine)
               .createInstance()
               .also { materialInstance ->
                   materialInstance.setParameter(
                       CAMERA_TEXTURE,
                       createTexture(cameraStreamTextureId, engine, stream),
                       textureSampler
                   )
               }

LionelMyFit avatar Oct 27 '25 11:10 LionelMyFit

@LionelMyFit I can't help much, I'm just seeing how hopeless this vulkan bug is: https://forums.beamdog.com/discussion/89478/android-ports-unplayable-after-android-15-one-ui-7-update-on-samsung-galaxy-a55/p2

Same version. Unfortunately I don't know your usecase. And I don't know much about filament.

bennysway avatar Oct 27 '25 12:10 bennysway

I just updated the Samsung S24 to One UI 8, but it doesn’t fix the problem since the Vulkan version is still the same

LionelMyFit avatar Oct 28 '25 09:10 LionelMyFit

are you using "transparent picking"? we just found a bug that was fixed in #9390 . Can you try?

pixelflinger avatar Oct 31 '25 20:10 pixelflinger

Must compile by myself for android i suppose ?

LionelMyFit avatar Nov 04 '25 08:11 LionelMyFit