Saya sedang mengerjakan renderer depan-ke-belakang untuk mesin 2D menggunakan proyeksi ortografis. Saya ingin menggunakan buffer kedalaman untuk menghindari penarikan berlebih. Saya memiliki buffer kedalaman 16-bit, kamera pada Z = 100 melihat Z = 0, zNear adalah 1, dan zFar adalah 1000. Setiap sprite yang diberikan mengatur koordinat Z-nya ke nilai yang semakin jauh, yang memungkinkan uji kedalaman untuk melewatkan rendering apa pun yang ada di bawahnya.
Namun saya sadar cara posisi Z berakhir dengan nilai buffer Z adalah non-linear. Saya ingin memanfaatkan resolusi penuh buffer kedalaman 16-bit, yaitu memungkinkan 65536 nilai unik. Jadi untuk setiap sprite yang diberikan, saya ingin menambah posisi Z ke posisi berikutnya untuk berkorelasi dengan nilai buffer kedalaman unik berikutnya.
Dengan kata lain saya ingin mengubah indeks kenaikan (0, 1, 2, 3 ...) dari sprite yang ditarik ke posisi Z yang tepat untuk setiap sprite untuk memiliki nilai buffer kedalaman yang unik. Saya tidak yakin dengan matematika di balik ini. Apa perhitungan untuk melakukan ini?
Catatan Saya bekerja di WebGL (pada dasarnya OpenGL ES 2), dan saya perlu mendukung berbagai perangkat keras, jadi sementara ekstensi seperti gl_FragDepth mungkin membuat ini lebih mudah, saya tidak dapat menggunakannya untuk alasan kompatibilitas.