Hello Mali devs,
We are are observing what appear to be tiling artifacts when sampling a depth texture after it has been rendered as part of a water murk effect. The particular sequence of operations is:
1) Render main scene to depth/color texture.
2) Render water murk (sampling depth rendered in main scene) with depth buffer disabled and frame buffer set to colour only.
3) Resture depth/color framebuffer and render rest of the scene.
It appears this is somehow timing related as the artifacting varies based on camera angle/framerate. I've attached a screenshot showing these artifacts taken on a Mali-T628 device.
Has anyone else observed this? Anything in the sequence of operations described above that may be incompatible with TBDR?
Thanks!
Stephane
Hi Stephane,
Thanks for reporting.
> Anything in the sequence of operations described above that may be incompatible with TBDR?
No - what you describe should work fine (TBR should be transparent to the application).
A couple of initial questions to try and narrow down the area which is causing problems.
The fact you see an artifact in the bottom right corner is consistent with a lack of precision in the texture coordinates - so as a first step can you try using highp for the texture coordinate varyings if if you are not already.
If possible can you post a reproducing test case (Android binaries are fine) - it makes it much easier for us to investigate what issue you are running in to.
Thanks,Pete
Hi Peter,
Thanks for the response.
Here are the answers to your questions:
1. depth texture contents are sensible but contain the tiling artifacts.
2. 1280x800
3. 24/8 depth stencil.
4. texture coordinates were originally mediump. Promoting them to high had no effect.
We can definitely share a binary, however, as this product isn't released yet, we would need to setup a private share (also, the game is almost 1GB).
Thanks for the answers - one of our ecosystem guys will be in touch to see how we could exchange a reproducer.
One last question - you mention this is timing sensitive - if you do a glFinish after every call to eglSwapBuffers (i.e. serialize frames) does it go away?
Pete
Interestingly, similar artefacts are also visible in the rock above, especially at around (1152,144) and thereabouts. The effect is most visible for pixels to the right of the x=1024 line, but happens at other places too - (863,272) is a good example. This suggests to me that it's not the water that's the problem. Are you applying a resolve shader or other effect to the screen as a whole?