2010-03-06 27 views
8

¿Debería siempre estar utilizando este método al representar? ¿Se ralentiza mucho en las tarjetas gfx malas?¿Debería siempre usar GL_CULL_FACE?

Si el resultado final no tiene muchas caras seleccionadas, ¿debería incluso utilizar este método?

+0

En general, la eliminación de caras siempre debe habilitarse si no necesita una cara para ser visible desde ambos lados. Probablemente acelerará un poco las cosas, ya que le ahorrará algo de velocidad de relleno. – falstro

Respuesta

19

Si todos sus modelos están definidos correctamente (convexos, con un bobinado de vértices constante), el sacrificio nunca afectará el rendimiento, y casi siempre ayudará al rendimiento.

Imagine que está procesando un cubo, con la eliminación desactivada. Las caras en la parte posterior (lado más alejado) del cubo se vuelven hacia usted y se aplican los atributos de material de la cara posterior que haya elegido. Luego se renderizan las caras en la parte frontal del cubo: dado que las caras traseras que se acaban de representar son el interior del cubo, están 100% ocluidas por las caras frontales.

Si el cubo se orientó de forma diferente, las caras frontales se pueden rasterizar primero, pero las caras posteriores seguirán procesándose y luego los fragmentos rechazados por el búfer z.

Resultado neto: rasterizó 2 veces tantos fragmentos como fuera necesario. Esto llega a ser un gran problema con un gran número de polígonos o sombreadores de píxeles complejos. La eliminación de caras le permite evitar por completo las caras rastrilladas que usted sabe que no se mostrarán.

Si tiene un modelo de caracteres con ~ 100,000 polígonos, la eliminación de caras reduce a la mitad la cantidad de trabajo que el hardware de píxeles tiene que hacer en cada fotograma. Este es un gran ahorro si tiene sombreadores de superficies grandes.

Si está trabajando con modelos pequeños y sin sombreadores, el sacrificio realmente no importa en estos días. Pero es una buena práctica habilitar de todos modos.

+0

No creo que realmente hayas respondido esta pregunta "Si el resultado final no tendrá muchas caras seleccionadas, ¿debería incluso utilizar este método?". También me pregunto si el rendimiento empeorará si SÓLO renderizo polígonos frontales. – Tara

0

Depende de las cosas que está procesando. En general, el desecho es deseable. La única razón por la que puedo imaginar que no la usaré es para representar modelos que tienen caras traseras visibles. Otro escenario en el que el descarte podría no ser deseado podrían ser modelos pobremente modelados donde los vértices están definidos en el orden incorrecto.

+0

¿qué pasa con la relación de sacrificio? si realmente no hace que el resultado sea diferente de lo que era antes de sacrificar, ¿debería usar el descarte? en otras palabras: ¿hay mucho impacto en la velocidad cuando esto está habilitado? – Newbie

6

Habilitar la eliminación de caras (generalmente en la parte posterior) tiene un impacto significativo en el rendimiento de la representación.

Ahora la pregunta que debe responderse es "¿por qué no está habilitada la eliminación por defecto o por qué no se usa siempre?" hay varios factores que determinan si la habilitación de la eliminación es factible o no. Uno es el modelo que se está representando y cómo se ve.

Para cada polígono en el modelo, si solo una cara frontal o posterior es visible (cuando se ve el modelo desde todos los ángulos posibles), entonces podemos eliminar la otra cara.

Por ejemplo: "Cube", no importa si mira desde dentro o desde fuera, al girar, solo puede ver un lado de cada 6 polígonos que componen el cubo.

Otro ejemplo: "Velas de un modelo de barco" como en mi juego Sea-Wars (3d), las velas de un modelo de barco es una superficie construida con varios polígonos planos. Cuando un barco se mueve en el agua, uno puede ver ambos lados de la vela. En este caso, desechar cualquiera de las caras no es deseable.

Por lo tanto, la eliminación selectiva se puede habilitar para todos los modelos de la escena que siguen la semántica de los cubos y la desactivación para todos los demás modelos.

P.S. Face Culling se debe usar siempre que sea posible.

Cuestiones relacionadas