Need some insight on optimizing a custom render pass
I have a system which renders meshes on a transparent wall in 3D space. The items have an index that can be changed at runtime and will decide the render order. These items are sorted per wall, and then rendered twice, first rendering color with depth write off, and then only depth write so that other items on other walls can depth test correctly. This works great, but performance is horrendous. There are usually around 500 items on the wall per scene and that equals 500 drawcalls on a mobile device, each setting a buffer and shader accordingly. The items have vastly different shaders and any attempt to unify them has failed. I initially thought about something like OpenGL multi draw but that too seems to require a single shader. Is there anyway to improve this or is this a limitation?