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