Во сейчас в справке прочитал про интересный специальный проход -
GrabPass.
Выполняя его Unity читает в текстуру ту область, в которую должен быть выведен объект и эту текстуру можно использовать в следующем проходе.
Ссылка
Пример из справки - сложный пример шейдера, который ничего не выводит
:
Shader "ComplexInvisible" {
SubShader {
// Отрисовка после непрозрачной геометрии
Tags { "Queue" = "Transparent" }
// Захват экрана в _GrabTexture, используя настройки по умолчанию
GrabPass { }
// Отрисовка объекта с текстурой, полученной выше.
Pass {
SetTexture [_GrabTexture] { combine texture }
}
}
}
Надо будет попробовать эффекты искажения сделать с его помощью.