2011-01-15 6 views

Antwort

1

Der Vorteil ist, dass Sie einen berechneten Vertex normal an Ihren Shader übergeben können und der Shader diese Informationen im Render verwenden kann. Sie können z. B. eine glattere Beleuchtung verwenden, die gekrümmten Flächen näher kommt, indem Sie die Normalen über jedes Dreieck interpolieren Verwenden dieser interpolierten Normale für die Beleuchtung anstelle der Normalen des Dreiecks.

Ich nehme an, Sie könnten diese Informationen für die Culling verwenden, aber es ist nicht allgemein, wofür es verwendet wird. Sie brauchen keine Vertex-Normalen, um sie auszusortieren, da dies im Allgemeinen einfach durch Berechnung der Richtung der Normalen des Dreiecks und nicht durch jede Ecke geschieht.

Wenn Sie sagen, "wendet die GPU Culling an ..." denken Sie daran, dass die Tage der festen Pipeline-Verarbeitung weg sind, die GPU tut, was Sie in Ihrem Shader-Code tun. Am Ende des Tages können Sie die gewünschten Informationen in Ihren Vertex-Stream einfügen und diese Informationen in Ihrem Shader verwenden. Die Möglichkeiten sind endlos.

+0

Vielen Dank. Und ich nehme an, wenn ich überhaupt keine Shader-Arbeit mache, muss ich mich nicht mit den normalen Scheitelpunkten beschäftigen? – Bevin

+0

Sie müssen einen Shader verwenden, aber vermutlich verwenden Sie nur einen der Standard-Shader. Wenn dieser Shader keine Normalität benötigt, dann müssen die Informationen nicht gesendet werden, also können Sie einfach das VertexPositionTexture-Vertex-Format verwenden. –

+0

Nur noch eine Frage; ist es weniger effizient, den Vertex mit Normalen zu verwenden, da er mehr Daten enthält? – Bevin