Ortografik bir projeksiyon kullanarak bir 2D motor için önden arkaya oluşturucu üzerinde çalışıyorum. Aşırı çekilmeyi önlemek için derinlik tamponunu kullanmak istiyorum. 16 bit derinlik arabelleğe sahibim, Z = 100'de Z = 0, zNear 1 ve zFar 1000 olan bir kamera var. altında olan herhangi bir şey.
Ancak Z pozisyonlarının Z tampon değerleri ile sonuçlanma biçiminin doğrusal olmadığını biliyorum. 16 bit derinlik arabelleğinin tam çözünürlüğünü kullanmak, yani 65536 benzersiz değerlere izin vermek istiyorum. Bu nedenle, oluşturulan her hareketli grafik için, Z konumunu bir sonraki benzersiz derinlik tampon değeri ile ilişkilendirmek için bir sonraki konuma yükseltmek istiyorum.
Diğer bir deyişle, her hareketli grafiğin benzersiz bir derinlik tampon değeri olması için hareketli grafiğin artan bir indeksini (0, 1, 2, 3 ...) uygun Z konumuna çevirmek istiyorum. Bunun arkasındaki matematikten emin değilim. Bunu yapmak için hesaplama nedir?
Not WebGL'de çalışıyorum (temelde OpenGL ES 2) ve geniş bir donanım yelpazesini desteklemem gerekiyor, bu nedenle gl_FragDepth gibi uzantılar bunu daha kolay hale getirebilse de, uyumluluk nedenleriyle kullanamıyorum.