Freigeben über


Textur-Wrap

Durch das Textur-Wrapping wird die grundlegende Art und Weise geändert, wie Direct3D texturierte Polygone mithilfe der für jeden Vertex angegebenen Texturkoordinaten rastert. Beim Rastern eines Polygons interpoliert das System zwischen den Texturkoordinaten an den Eckpunkten des Polygons, um die Texel zu bestimmen, die für jedes Pixel des Polygons verwendet werden sollen. Normalerweise behandelt das System die Textur als 2D-Ebene und interpoliert neue Texel, indem es die kürzeste Route von Punkt A innerhalb einer Textur zu Punkt B nimmt. Wenn Punkt A die u-, v-Position (0,8, 0,1) darstellt und Punkt B an der Position (0,1, 0,1) ist, sieht die Interpolationslinie aus wie das folgende Diagramm.

Diagramm einer Linie zur Interpolation zwischen zwei Punkten

Beachten Sie, dass der kürzeste Abstand zwischen A und B in dieser Abbildung ungefähr durch die Mitte der Textur verläuft. Durch die Aktivierung von U-Textur- oder V-Texturkoordinatenumbruch ändert sich die Wahrnehmung von Direct3D hinsichtlich der kürzesten Route zwischen Texturkoordinaten in U-Richtung und V-Richtung. Das Textur-Wrapping bewirkt, dass der Rasterizer die kürzeste Route zwischen Texturkoordinatensätzen nimmt, wobei angenommen wird, dass 0,0 und 1,0 übereinstimmen. Der letzte Teil ist der schwierige: Sie können sich vorstellen, dass die Aktivierung des Texturumbruchs in eine Richtung bewirkt, dass das System eine Textur so behandelt, als wäre sie um einen Zylinder gewickelt. Betrachten Sie beispielsweise das folgende Diagramm.

Diagram einer Textur und zweier Punkte, die um einen Zylinder gewickelt sind

Die vorangehende Abbildung zeigt, wie sich der Umbruch in der U-Richtung auf die Interpolation der Texturkoordinaten des Systems auswirkt. Wenn Sie dieselben Punkte wie im Beispiel für normale oder nicht gewrappten Texturen verwenden, können Sie sehen, dass die kürzeste Route zwischen den Punkten A und B nicht mehr in der Mitte der Textur liegt; sie verläuft jetzt über die Grenze, wo 0,0 und 1,0 zusammen vorhanden sind. Das Umbrechen in v-Richtung ist ähnlich, mit der Ausnahme, dass sie die Textur um einen Zylinder umschließt, der sich auf seiner Seite befindet. Die Wicklung in der u-Richtung und in der v-Richtung ist komplexer. In dieser Situation können Sie sich die Textur als Torus oder Krapfen vorstellen.

Die häufigste praktische Anwendung von Textur-Wrapping ist die Umgebungsabbildung. In der Regel erscheint ein Objekt, das mit einer Umgebungskarte strukturiert ist, sehr reflektierend und zeigt ein gespiegeltes Bild der Umgebung des Objekts in der Szene. Für diese Diskussion stellen Sie einen Raum mit vier Wänden dar, die jeweils mit einem Buchstaben R, G, B, Y und den entsprechenden Farben bemalt wurden: Rot, Grün, Blau und Gelb. Die Umgebungskarte für einen so einfachen Raum könnte wie die folgende Abbildung aussehen.

Abbildung von vertikalen Streifen in Rot, Grün, Blau und Gelb

Stellen Sie sich vor, dass die Decke des Raums durch eine perfekt reflektierende, vierseitige Säule gehalten wird. Die Zuordnung der Umgebungs-Texturkarte zur Säule ist einfach; es ist jedoch nicht so einfach, die Säule so aussehen zu lassen, als ob sie die Buchstaben und Farben widerspiegelt. Das folgende Diagramm zeigt einen Drahtrahmen der Säule mit den entsprechenden Texturkoordinaten, die in der Nähe der oberen Scheitelpunkte aufgeführt sind. Die Naht, an der die Umhüllung die Kanten der Textur kreuzt, wird durch eine gepunktete Linie angezeigt.

Diagramm eines Rechtecks mit einer gepunkteten Linie

Wenn der Umbruch in der U-Richtung aktiviert ist, zeigt die texturierte Säule die Farben und Symbole aus der Umgebungsmap korrekt an, und an der Nahtstelle in der Textur wählt der Rasterizer ordnungsgemäß die kürzeste Route zwischen den Texturkoordinaten aus, wobei angenommen wird, dass die U-Koordinaten 0,0 und 1,0 dieselbe Position bedeuten. Die texturierte Säule sieht wie in der folgenden Abbildung aus.

Abbildung einer Säule, die aus roten, grünen, blauen und gelben Quadranten besteht

Wenn Textur-Wrapping nicht aktiviert ist, interpoliert der Rasterizer nicht in die Richtung, die zum Erzeugen eines glaubwürdigen, reflektierten Bilds erforderlich ist. Vielmehr enthält der Bereich an der Vorderseite des Pfeilers eine horizontal komprimierte Version der Texel zwischen den u-Koordinaten 0,175 und 0,875, wenn sie die Mitte der Textur durchlaufen. Der Umbrucheffekt ist verloren.

Verwechseln Sie den Texturumbruch nicht mit den ähnlich benannten Modi der Texturadressierung. Das Textur-Wrapping wird vor der Texturadressierung ausgeführt. Stellen Sie sicher, dass die Textur-Wrap-Daten keine Texturkoordinaten außerhalb des Bereichs von [0.0, 1.0] enthalten, da dadurch undefinierte Ergebnisse erzeugt werden. Weitere Informationen zur Texturadressierung finden Sie unter Texturadressierungsmodi.

Verschiebungskartenumwicklung

Displacement-Maps werden von der Tessellations-Engine interpoliert. Da der Umbruchmodus für das Tessellationsmodul nicht angegeben werden kann, kann die Texturwicklung nicht mit Verdrängungskarten ausgeführt werden. Eine Anwendung kann eine Reihe von Scheitelpunkten nutzen, die das Überlappen der Interpolation in jede beliebige Richtung erzwingen. Die Anwendung kann auch die Interpolation angeben, die als einfache lineare Interpolation durchgeführt werden soll.

Texturen