Должен ли я всегда использовать gl_cull_face?

StackOverflow https://stackoverflow.com/questions/2393429

  •  25-09-2019
  •  | 
  •  

Вопрос

Должен ли я всегда использовать этот метод при рендеринге? Это сильно замедляется на плохих видеокартах?

Если конечный результат не будет иметь много избранных лиц, я должен даже использовать этот метод тогда?

Это было полезно?

Решение

Если все ваши модели определяются правильно (выпуклые, с постоянной намоткой вершины), отказ никогда не повредит производительностью и почти всегда поможет производительности.

Представьте, что вы рендерируете кубик, с отключенным отключенным. Лица на задней части (далекой стороне) куба оказываются обращены от вас, и каким бы ни были приложены атрибуты материала для лица, которые вы выбрали. Затем грани на передней части куба получаются: поскольку задние лица, которые только что визуализированы, являются внутренней частью куба, они на 100% окклюзированы передними лицами.

Если куб был ориентирован по-другому, передние лица могут быть расторизованы первыми, но задние лица все еще будут обработаны, а затем фрагменты, отклоняемые Z буфер.

Чистый результат: вы растиризованы 2 раза столько фрагментов по мере необходимости. Это становится большой сделкой с большим количеством многоугольников или сложных пиксельных шейдеров. Украшение лица позволяет вам полностью избежать растирации лица, которые вы знаете, не появится.

Если у вас есть модель символов с ~ 100 000 многоугольниками, лицо, выложившись половинки, величина работы. Это большая экономия, если у вас большие поверхностные шейдеры.

Если вы работаете с небольшими моделями, и никаких шейдеров, Корпинг действительно не имеет значения в эти дни. Но все равно хорошо включить.

Другие советы

Включение корпуса лица (обычно обратно) оказывает значительное влияние на производительность рендеринга.

Сейчас вопрос, который нужно ответить, - это тогда «Почему не включено по умолчанию, а почему не всегда используется?» Существует несколько факторов, которые определяют, возможен ли возможность отбрасывания или нет. Одним из них является оказываемая модель и как оно рассматривается.

Для каждого многоугольника в модели, если видна только одно лицо, либо спереди, либо на спине (когда модель рассматривается со всех возможных углов), то мы можем обложить другое лицо.

Для бывшего: «Куб», независимо от того, если вы смотрите изнутри или снаружи, при повернуте, вы можете увидеть только одну сторону каждые 6 полигонов, которые состоят из куба.

Другое бывшее: «Парусы модели корабля», как в моей морской войне (3D) игре, паруса модели корабля - это поверхность, построенная с несколькими плоскими полигонами. Когда лодка движется в воде, можно увидеть обе стороны паруса. В этом случае отбрасывание либо лица не желательно.

Следовательно, отбрасывание может быть включено для всех моделей на сцене, которая следуют семантике кубиков и отключение для всех других моделей.

PS Face Chulding следует использовать, когда это возможно.

Это зависит от того, что вы рендерируете. В общем отбрасывание желательно. Единственная причина, по которой я могу себе представить, чтобы не использовать ее, - это сделать моделями, которые имеют видимые обратные обязательства. Другим сценарием, где откажуще, возможно, не хотеть, могут быть плохо смоделированы модели, в которых вершины определены в неправильном порядке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top