Некоторые модели видны даже после прохождения z-теста в пользовательском шейдере маски глубины UNITY.
При использовании некоторых 3D-моделей шейдер глубинной маски, имеющий z-критерий "LEqual", должен нормально работать, как на скриншоте1
Но это дает результат, который показывает градации серого, выделенные для той части 3d-модели, где ее необходимо скрыть. [Взять ссылку на скриншот2]
Мы попытались изменить ZTest с LEqual на Always, что немного решает проблему, но опять же объект частично виден.
Shader "Custom/mask" {
SubShader {
Tags {
"Queue" = "Geometry+10"
"RenderType" = "Opaque"
}
Lighting Off
ZTest LEqual
Cull Back
ZWrite On
ColorMask 0
Blend One One
Pass {Fog {Mode Off}}
} }
1 ответ
Похоже, вы делали ранний Z-проход из сорбирующего меша, который, я думаю, является реконструированным или отслеживаемым движением лицом? так очки отшлифованы со стандартным материалом правильно?
Материал маски должен быть нарисован рано, поэтому очередь должна быть Geometry-10 или что-то в этом роде. Все остальные теги не имеют значения, кроме ColorMask 0.
Lighting и Fog устарели, а Blend бесполезен, так как вы все равно не рисуете в буфер цвета (используя ColorMask 0, он только рисует глубину).