Геометрический шейдер может сделать это тривиально, как вы, наверное, знаете, но в SM3 такого нет.
Вершинному шейдеру трудно идентифицировать треугольник как таковой, поскольку все, что видит вершинный шейдер, это отдельные вершины. Но ... в принципе это возможно.
Если вы установите нулевую координату w, точка будет проецироваться на бесконечность. Установите координаты w всех точек на ноль, и весь треугольник будет на бесконечности, чтобы он не отображался.
В качестве альтернативы, вы могли бы, вероятно, установить gl_ClipDistance на ноль или значение ниже нуля (никогда не использовал их, но я думаю, это должно работать). Это отметило бы вершину как "позади" плоскости отсечения. Если все три вершины находятся за плоскостью отсечения, треугольник не виден.
Вам понадобится способ определить вершины, принадлежащие треугольнику, который вы хотите отбросить, однако ... и это будет нелегко, если у вас нет особой ситуации (например, если вы знаете, что хотите отбросить все треугольники в некоторой заданной ограничительной рамке или все треугольники, в которых атрибут вершины # 5 равен нулю, или что-либо еще).