GLSL: получение минимальной разрешаемой разницы для буфера глубины - PullRequest
1 голос
/ 16 октября 2019

Я бы хотел переместить вершины в шейдере GLSL таким образом, чтобы они гарантированно находились перед другими вершинами с наименьшим необходимым перемещением. Есть ли портативный способ извлечь это значение для данного буфера глубинного вложения либо из вершинного шейдера, либо со стороны процессора, чтобы я мог отправить его в шейдер как константу? Метод должен быть совместим с GLES 3.1.

Спасибо.

1 Ответ

0 голосов
/ 19 октября 2019

Существует ли переносимый способ извлечения этого значения для буфера вложений заданной глубины из вершинного шейдера или со стороны процессора, чтобы я мог отправить его в шейдер как константу?

Это не совсем то, как работают графические процессоры.

Затенение вершин не знает ни о треугольниках, ни о каких-либо операциях на стадии фрагмента. В тот момент, когда вы затеняете свои вершины, текущая глубина кадрового буфера даже не существует - особенно на графических процессорах на основе тайлов, обычно встречающихся на мобильных устройствах - поэтому вы не можете знать, что вы должны быть «перед».

Идея на стороне ЦП еще хуже - вам нужно знать это в тот момент, когда вы отправляете вызовы отрисовки, и в этот момент вы не знаете, где что-то находится - все ваши данные меша будут вПространство объекта.

Также стоит отметить, что минимальное разрешаемое расстояние не является постоянной величиной. Он нелинейный, и распределение значений зависит от положения ближнего и дальнего клипа в перспективном преобразовании и глубины фактического местоположения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...