Я не знаю насколько часто применяются вертекс шейдеры изменяющие геометрию. Могут ли они стать тормозом для такого метода, их ведь надо будет применять в обоих проходах? Даже если шейдер сложный, как скининг например, всеравно видяха его посчитает быстрее чем ЦПУ, поэтому тут особого выбора то и нет. Как бы могут, но на последних видяхах шейдера унифицированы на уровне железа, тобиш разгружая пиксельный шейдер легче будет дышать и вертексному.
Не возникает ли проблем при отрисовке второго прохода из-за того, что глубина уже как-бы занята первым проходом. Т.е. видяха считает, что не нужно отрисовывать пиксели даже ближайшего объекта, ведь у них точно такая же глубина как у уже отрисованых? Хотя я бы попробовал уменьшить немного фар плейн для второго прохода. На втором проходе делаеться только тест глубины, запись в буфер не делаеться. А видяха сама отсекает не прошедшие тест фрагменты еще до пиксельного шейдера. Есть ряд условий при которых автоматический кулинг работать не будет. Более подробно в GPU Programming guide 7xxx от Нвидии.
Насколько данный способ оптимизации сравним с сортировкой объектов по расстоянию до камеры, есть ли смысл использовать сортировку, если используется рендер глубины? Это разные вещи, сортировка в первую очередь нужна для блендинга полупрозрачной геометрии и кулинга на уровне боундинг боксов. Ничто не мешает использовать оба варианта сразу. |