Estoy trabajando en un renderizador de adelante hacia atrás para un motor 2D usando una proyección ortográfica. Quiero usar el búfer de profundidad para evitar el sobregiro. Tengo un búfer de profundidad de 16 bits, una cámara en Z = 100 mirando Z = 0, zNear es 1 y zFar es 1000. Cada sprite renderizado establece sus coordenadas Z en valores cada vez más distantes, lo que permite que la prueba de profundidad omita el renderizado todo lo que hay debajo.
Sin embargo, soy consciente de que la forma en que las posiciones Z terminan con valores de buffer Z no es lineal. Quiero hacer uso de la resolución completa del búfer de profundidad de 16 bits, es decir, permitir 65536 valores únicos. Entonces, por cada sprite renderizado, quiero incrementar la posición Z a la siguiente posición para correlacionar con el siguiente valor de búfer de profundidad único.
En otras palabras, quiero convertir un índice incremental (0, 1, 2, 3 ...) del sprite que se dibuja en la posición Z adecuada para que cada sprite tenga un valor de búfer de profundidad único. No estoy seguro de las matemáticas detrás de esto. ¿Cuál es el cálculo para hacer esto?
Tenga en cuenta que estoy trabajando en WebGL (básicamente OpenGL ES 2), y necesito admitir una amplia gama de hardware, por lo que si bien las extensiones como gl_FragDepth pueden facilitarlo, no puedo usarlo por razones de compatibilidad.