Tôi đang làm việc trên một trình kết xuất từ trước ra sau cho động cơ 2D bằng cách sử dụng phép chiếu chính tả. Tôi muốn sử dụng bộ đệm sâu để tránh rút tiền. Tôi có bộ đệm độ sâu 16 bit, camera ở Z = 100 nhìn vào Z = 0, zNear là 1 và zFar là 1000. Mỗi kết xuất sprite đặt tọa độ Z của nó thành các giá trị ngày càng xa, cho phép kiểm tra độ sâu bỏ qua kết xuất bất cứ điều gì bên dưới.
Tuy nhiên, tôi biết cách các vị trí Z kết thúc với các giá trị bộ đệm Z là phi tuyến tính. Tôi muốn sử dụng độ phân giải đầy đủ của bộ đệm độ sâu 16 bit, tức là cho phép 65536 giá trị duy nhất. Vì vậy, với mỗi sprite được hiển thị, tôi muốn tăng vị trí Z lên vị trí tiếp theo để tương quan với giá trị bộ đệm độ sâu duy nhất tiếp theo.
Nói cách khác, tôi muốn biến chỉ số tăng dần (0, 1, 2, 3 ...) của sprite được kéo vào vị trí Z thích hợp cho mỗi sprite để có giá trị bộ đệm độ sâu duy nhất. Tôi không chắc chắn về toán học đằng sau này. Tính toán để làm điều này là gì?
Lưu ý Tôi đang làm việc trong WebGL (về cơ bản là OpenGL ES 2) và tôi cần hỗ trợ nhiều loại phần cứng, vì vậy, trong khi các tiện ích mở rộng như gl_FragDepth có thể giúp việc này dễ dàng hơn, tôi không thể sử dụng nó vì lý do tương thích.