2010-03-06 21 views
8

Sollte ich diese Methode immer beim Rendern verwenden? Verlangsamt es viel auf schlechten Grafikkarten?Sollte ich immer GL_CULL_FACE verwenden?

Wenn das Endergebnis nicht viele gekillte Gesichter haben wird, sollte ich diese Methode dann auch verwenden?

+0

Gesichtserkennung sollte generell immer aktiviert sein, wenn Sie kein Gesicht benötigen, das von beiden Seiten sichtbar ist. Es wird wahrscheinlich die Dinge ein wenig beschleunigen, da es Ihnen etwas Füllrate sparen wird. – falstro

Antwort

19

Wenn alle Ihre Modelle korrekt definiert sind (konvex, mit konsistenter Vertex-Wicklung), wird das Culling niemals die Leistung beeinträchtigen und fast immer die Leistung verbessern.

Stellen Sie sich vor, Sie rendern einen Cube, wobei Culling deaktiviert ist. Die Gesichter auf der Rückseite (der entfernten Seite) des Würfels werden gerendert von dir gerendert, und alle von dir ausgewählten Materialattribute der Rückseite werden angewendet. Dann werden die Flächen auf der Vorderseite des Würfels gerendert: Da die gerade wiedergegebenen Rückseiten das Innere des Würfels sind, werden sie zu 100% von den Vorderseiten verdeckt.

Wenn der Würfel anders ausgerichtet war, werden die Vorderseiten möglicherweise zuerst gerastert, aber die Rückseiten werden weiterhin verarbeitet und dann die Fragmente vom Z-Puffer zurückgewiesen.

Nettoergebnis: Sie gerastert 2x so viele Fragmente wie nötig. Dies wird eine große Sache mit einer großen Anzahl von Polygonen oder komplexen Pixel-Shadern. Durch das Ausblenden von Gesichtern können Sie das Rastern von Gesichtern, von denen Sie wissen, dass sie nicht angezeigt werden, vollständig vermeiden.

Wenn Sie ein Zeichenmodell mit ~ 100.000 Polygonen haben, halbiert das Face Culling die Menge an Arbeit, die die Pixelhardware für jeden Frame benötigt. Dies ist eine große Ersparnis, wenn Sie große Oberflächen-Shader haben.

Wenn Sie mit kleinen Modellen und keinen Shadern arbeiten, ist das Aussortieren in diesen Tagen wirklich egal. Aber es ist eine gute Übung, sie trotzdem zu aktivieren.

+0

Ich glaube nicht, dass du diese Frage wirklich beantwortet hast. "Wenn das Endergebnis nicht viele erloschene Gesichter haben wird, sollte ich diese Methode dann auch benutzen?". Ich frage mich auch, ob die Leistung schlechter wird, wenn ich nur Front-Polygone rendere. – Tara

0

Es hängt von den Sachen ab, die Sie rendering. Im Allgemeinen ist das Ausmerzen wünschenswert. Der einzige Grund, den ich mir vorstellen kann, es nicht zu benutzen, ist das Rendern von Modellen mit sichtbaren Rückseiten. Ein anderes Szenario, in dem das Aussortieren nicht erwünscht sein könnte, könnten schlecht modellierte Modelle sein, bei denen die Eckpunkte in der falschen Reihenfolge definiert sind.

+0

was ist mit dem Culting Ratio? Wenn es das Ergebnis nicht wirklich anders macht als das, was es vor dem Ausmerzen war, sollte ich dann auch Culling benutzen? Mit anderen Worten: Gibt es einen großen Einfluss auf die Geschwindigkeit, wenn dies aktiviert ist? – Newbie

6

Die Aktivierung der Gesichtserkennung (in der Regel Rückfläche) hat erhebliche Auswirkungen auf die Renderleistung.

Jetzt ist die zu beantwortende Frage dann "warum ist das Aussortieren nicht standardmäßig aktiviert oder warum wird nicht immer verwendet?" Es gibt mehrere Faktoren, die bestimmen, ob das Aktivieren von Culling möglich ist oder nicht. Eines ist das Modell, das gerendert wird und wie es betrachtet wird.

Wenn für jedes Polygon im Modell nur eine Seite (Vorder- oder Rückseite) sichtbar ist (wenn das Modell aus allen möglichen Winkeln betrachtet wird), können wir die andere Fläche abtasten.

Für Beispiel: "Würfel", egal ob Sie von innen oder von außen schauen, wenn Sie gedreht werden, können Sie nur eine Seite von 6 Polygonen sehen, die den Würfel bilden.

Ein anderes Beispiel: "Segel eines Schiffsmodells" Wie in meinem Sea-Wars (3d) -Spiel sind die Segel eines Schiffsmodells eine Fläche mit mehreren flachen Polygonen. Wenn sich ein Boot im Wasser bewegt, kann man beide Seiten des Segels sehen. In diesem Fall ist das Aussondern einer der beiden Flächen nicht wünschenswert.

Daher kann Culling für alle Modelle in der Szene aktiviert werden, die der Würfelsemantik folgen und für alle anderen Modelle deaktiviert werden.

P.S. Face Culling sollte wann immer möglich verwendet werden.