Frage

Als Lernerfahrung, Ich schreibe einen Immediate-Modus DirectX 9-Anwendung verwaltet.

Ich bin der Berechnung manuell Vertex Normalen über alle Dreiecke in einer Szene glatt Gouraud-Schattierung zu ermöglichen.

Das funktioniert wie erwartet, aber ich vermute, dies ist nicht der effizienteste Ansatz. Ist es möglich, die GPU zu tun dies für mich zu bekommen?

War es hilfreich?

Lösung

Überprüfen Sie dieser und diese .

Andere Tipps

Sie könnte theoretisch die Vertex-Normalen in der Vertex-Shader erzeugen. Dazu gehört die Berechnung jedes einzelne Mal, wenn Sie ein Netz machen, obwohl diese Shader verwendet, also warum sie nicht im Voraus generieren.

Wenn Sie meinen, Sie sie im Voraus von Rendering erzeugen wollen, aber die GPU statt der CPU verwenden, würde ich sagen, dass es nicht wert ist etwas, das die Mühe zu beschleunigen Sie nur einmal tun werden. Außerdem bin ich nicht sicher, ob DX9 einen Weg hat berechnete Scheitelinformation zurück von einem Shader zu bekommen (DX10 dem Fall ist).

Alles in allem das Beste, was in den meisten Fällen zu tun ist, das traditionelle Compute-Vertex-Normalen in dem Programm, das die Datendateien speichert, die die Maschen enthalten - tut es als Pre-Berechnungsschritt. Normalerweise haben Sie sie, wenn das Netz kommt von einem 3D-Paket wie Max oder Maya, weil es künstlerische Informationen in dem Normalen, es sei denn, wissen Sie, das ganze Gitter sollen vollkommen glatt sein (oder facettiert), es ist nicht berechenbar im allgemeinen Fall .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top