Good looking transparency is a nightmare, and in most cases it needs raytracing.
There is a faster algorithm, but it requires elements to be drawn starting from the most distant one and ending with the closest one. Drawing all back faces before all front faces is a kind of sorting. Of course, it is not a panacea. Another fast algorithm is to disable the use of depth buffer (with turning off either depthTest
or depthWrite
or both). A third algorithm is playing with custom blending of pixel colors.