Я пытаюсь визуализировать (для целей отладки) глубину сцены на текстурированном квадре (я хочу отобразить глубину водоема на поверхности воды). Итак, я делаю рендеринг сцены с точки зрения камеры в буфер глубины, а затем привязываю тот же буфер глубины, что и ресурс шейдера, к шейдеру воды. Но когда я пробую текстуру, я всегда получаю полную белую текстуру. Я использовал pow(value, 100.0)
, и я получил небольшое изменение, которое корректно следит за глубиной рельефа под водой, поэтому я должен предположить, что некоторые значения есть, но они находятся в небольшом диапазоне около 1,00. Поэтому я попытался нормализовать значения, инвертировав преобразование перспективы для z (из пространства клипа обратно в пространство глаза) с помощью следующего уравнения:
float linearDepth = near * far / (far - depth * (far - near));
но опять же, белый. Формула мне кажется правильной (я нашел ее в книге Фрэнка Луны, и даже если сам вычислю матрицу проекции, я ее получу).
Дальний и ближний плоскости находятся в диапазоне 0,1 300,0, но даже игра с этими значениями никуда меня не приведет.
Все это потому, что я хочу наложить мягкие края на моей воде и мне нужны значения глубины, но я хочу визуализировать их раньше, чтобы знать, что я делаю это правильно.