Picking broken on Samsung S24 with Vulkan 1.3.279 in Filament 1.66
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.
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 Thanks for this response, it confirms my analysis
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 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 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.
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
are you using "transparent picking"? we just found a bug that was fixed in #9390 . Can you try?
Must compile by myself for android i suppose ?