A viable solution could be to use dithering instead of transparency for the fish. That way they are alpha tested, where pixels are either opaque or invisible, nothing in between. This is used in a lot of applications to circumvent transparency sorting, and is generally cheaper too because there is no overdraw involved. If the transition happens fast enough it's difficult to tell the difference between dithering and transparency. https://media.giphy.com/media/d1FL4DPUtW1eO8Qo/source.gif Amplify Shader Editor has a dither node for something like this. Shader Forge has this functionality as well. I had tested a few months ago with a layer filtering feature for the intersection. But this required a secondary camera and essentially meant re-rendering all the scene geometry twice, which is very poor design. This could still be doable for use cases where that is no problem, and water is super important. So I may just add this functionality back in, and make it optional. My to-do list keeps growing I'm hoping the vertex painting option I posted yesterday provides a decent solution for most people. But this would make the effect static. Meaning it would only show where painted, and not on any "new" objects that intersect with the water at runtime. But that's a concession that has to be made. I'm also working on a tool to pre-compute the intersection, so this doesn't have to be manually painted.