Unity 6.3
0 онлайн 8 гостей 3 в системе
Вход

Вывод текстуры глубины с камеры

Используйте DepthTextureMode для вывода текстуры глубины или текстуры глубины-нормальных из камеры.

Текстура DepthTextureMode.Depth

Это создает текстуру глубины экранного размера.

Текстура глубины отображается с использованием тех же проходов шейдера, которые используются для отображения рычага тени (тип проходаShadowCaster). Таким образом, если шейдер не поддерживает рычаг тени (i.e. нет прохода рычага тени в шейдере или в любом из резервов), то объекты, использующие этот шейдер, не будут отображаться в текстуре глубины.

  • Сделайте ваш шейдер резервным для какого-нибудь другого шейдера, который имеет пропуск для бросания теней, или
  • Если вы используете поверхностные шейдерыс добавлением addshadow директива заставит их также генерировать пропуск тени.

Обратите внимание, что только “непрозрачные” объекты (те, которые имеют свои материалы и шейдеры настроены для использования очередь отображения <= 2500) отображаются в текстуре глубины.

Текстура DepthTextureMode.DepthNormals

Это создает текстуру экранного размера 32 бит (8 бит/канал), где нормы пространства зрения кодируются в R&G каналы, а глубина кодируется в B&A каналы. Нормы кодируются с помощью стереографической проекции, а глубина представляет собой 16-битное значение, упакованное в два 8-битных канала.

UnityCG.cginc включает файл имеет вспомогательную функцию DecodeDepthNormal для декодирования глубины и нормали из закодированного значения пикселя. Возвращаемая глубина находится в диапазоне 0..1.

Примеры использования текстуры глубины и нормалей см. в Замена шейдеров во время выполнения или Ambient Occlusion в Последующая обработка и эффекты полноэкранного режима.

Дополнительные ресурсы