@freds72 - thanks for the comments. I can see that you could speed things up a bit using the normal to determine front/back facing tris, are you using this to select only visible vertices to project into screenspace? Looking at your gif, there are some very dark tris on the body/feet - I thought they might be holes (but I can see some shading), maybe there is an issue with some of your calculated normals?

OO is just the way I think - so its easier for me to write code that way. I did at one point try to strip this out, but it didn't make a massive difference. I think the issue as far as there is one is that OO code uses more tokens.

Btw, I have just updated the depth sorting algorithm from quicksort to radix sort. This gives a big speed improvement (10-15%), so it might be something you want to look into. Per-vertex shading is now > 30fps.