Я працюю над рендером назад для двигуна 2D за допомогою ортографічної проекції. Я хочу використовувати буфер глибини, щоб уникнути перевитрати. У мене буфер 16-бітної глибини, камера на Z = 100, яка дивиться на Z = 0, zNear - 1, а zFar - 1000. Кожен виправлений спрайт встановлює свої Z-координати на все більш віддалені значення, що дозволяє тесту глибини пропускати візуалізацію все, що знаходиться під ним.
Однак я знаю, як Z позиції в кінці значень буфера Z нелінійні. Я хочу використовувати повну роздільну здатність 16-бітового буфера глибини, тобто дозволяючи 65536 унікальних значень. Отже, для кожного наданого спрайту я хочу збільшити позицію Z до наступної позиції, щоб співвіднестись до наступного унікального значення буфера глибини.
Іншими словами, я хочу перетворити інкрементний індекс (0, 1, 2, 3 ...) спрайта, що втягується, у відповідне положення Z для кожного спрайту, щоб мати унікальне значення глибини буфера. Я не впевнений у математиці, що стоїть за цим. Який розрахунок для цього робити?
Зауважте, що я працюю в WebGL (в основному OpenGL ES 2), і мені потрібно підтримувати широкий спектр апаратних засобів, тому, хоча розширення типу gl_FragDepth можуть полегшити це, я не можу використовувати його з міркувань сумісності.