В статье представлен код простого двухпроходного шейдера и демонстрация его работы. Первый проход отрисовывает пиксели, если расстояние от объекта до камеры больше значения в ZBuffer, второй проход - если расстояние меньше или равно значению из ZBuffer. Вершинные шейдеры трансформируют координаты и нормали, считают направление от точки до камеры и трансформируют UV координаты. Фрагментные шейдеры идентичны, за исключением первого прохода, где используется ZTest Greater.