Was sind Shader-Designer-Knoten?

Der Shader-Designer in Visual Studio stellt visuelle Effekte als Diagramm dar. Diese Diagramme werden aus Knoten erstellt, die ausgewählt werden und so miteinander verbunden sind, dass der gewünschte Effekt erreicht wird. Jeder Knoten stellt entweder eine Information oder eine mathematische Funktion dar. Außerdem stellen die Verbindungen dieser Knoten miteinander dar, wie die Informationen durch das Diagramm fließen, um ein Ergebnis zu erzielen. Knotentypen umfassen Filter, Texturen, Parameter, Konstanten, Hilfsprogrammknoten und mathematische Knoten.

Knotenstruktur

Alle Knoten bestehen aus einer Kombination aus gemeinsamen Elementen. Jeder Knoten verfügt auf der rechten Seite über mindestens ein Ausgabeterminal (außer Farbknoten, die die Ausgabe des Shaders darstellen). Knoten, die Berechnungs- oder Textursampler darstellen, verfügen auf der linken Seite über Eingabeterminals. Knoten, die Informationen darstellen, haben hingegen keine Eingabeterminals. Ausgabeterminals sind mit den Eingabeterminals verbunden, damit sie Informationen von einem Knoten an einen anderen verschieben können.

Heraufstufung von Eingaben

Da der Shader-Designer letztendlich HLSL-Quellcode generieren muss, damit der Effekt in einem Spiel oder einer App verwendet werden kann, sind Shader-Designerknoten Teil der Regeln zur Typerweiterung, die HLSL verwendet. Da die Grafikhardware hauptsächlich mit Gleitkommawerten arbeitet, ist die Typerweiterung zwischen verschiedenen Typen (z.B. von int auf float oder von float auf double) eher ungewöhnlich. Da Grafikhardware den gleichen Vorgang auf mehrere Informationspakete gleichzeitig anwendet, findet eine andere Art der Heraufstufung statt, bei der kürzere Eingabewerte erweitert werden, um sie an die längsten Eingabewerte anzugleichen. Auf welche Weise die Eingabe verlängert wird hängt von deren Typ und dem Vorgang an sich ab:

  • Wenn der kleinere Typ ein Skalarwert ist, dann:

    Ist der Wert des Skalars in einen Vektor repliziert, der die gleiche Größe hat wie die größere Eingabe. Beispielsweise wird die Skalareingabe 5,0 zum Vektor (5,0, 5,0, 5,0), wenn die längste Eingabe des Vorgangs ein Drei-Elemente-Vektor ist, unabhängig davon, um welchen Vorgang es sich handelt.

  • Wenn es sich bei dem kleineren Typ um einen Vektor handelt und der Vorgang multiplikativ ist (*, /, % usw.), dann:

    Wird der Wert des Vektors in die führenden Elemente eines Vektors kopiert, der der Größe der größeren Eingabe entspricht, und die nachstehenden Elemente sind auf 1,0 festgelegt. Beispielsweise wird die Vektoreingabe (5,0, 5,0) zum Vektor (5,0, 5,0, 1,0, 1,0), wenn er von einem Vier-Elemente-Vektor multipliziert werden soll. Dabei bleiben jeweils die dritten und vierten Elemente der Ausgabe erhalten, indem das neutrale Element der Multiplikation 1,0 verwendet wird.

  • Wenn es sich bei dem kleineren Typ um einen Vektor handelt und der Vorgang additiv ist (+, –, etc.), dann:

    Der Wert des Vektors wird in die führenden Elemente eines Vektors kopiert, der der Größe der größeren Eingabe entspricht, und die nachstehenden Elemente sind auf 0,0 festgelegt. Beispielsweise wird die Vektoreingabe (5,0, 5,0) zum Vektor (5,0, 5,0, 0,0, 0,0), wenn er von einem Vier-Elemente-Vektor multipliziert werden soll. Dabei bleiben jeweils die dritten und vierten Elemente der Ausgabe erhalten, indem die additive Identität 0,0 verwendet wird.

Knoten und Knotentypen

Der Shader-Designer stellt sechs verschiedene Knotentypen (Filter, Texturknoten, Parameter, Konstanten, Hilfsprogrammknoten und Berechnungsknoten) und einige individuelle Knoten bereit, die zu jedem Typ gehören.

Konstante Knoten

Im Shader-Designer stellen konstante Knoten Literalwerte und interpolierte Vertexattribute in Pixel-Shader-Berechnungen dar. Vertexattribute werden interpoliert und unterscheiden sich daher für jedes Pixel: Jede Pixel-Shader-Instanz empfängt eine andere Version der Konstanten. Dadurch erhält jedes Pixel ein eigenes Aussehen.

Interpolation der Vertexattribute

Das Bild einer 3D-Szene in einem Spiel oder einer App erfolgt durch die mathematische Transformation vieler Objekte in Bildschirmpixeln. Diese Objekte werden durch Scheitelpunkte, Vertexattribute und Definitionen von Primitiven definiert. Alle Informationen, die erforderlich sind, um einem Pixel sein eigenes Aussehen zu verleihen, werden durch Vertexattribute bereitgestellt. Sie vermischen sich je nach Nähe des Pixels zu den verschiedenen Scheitelpunkten, aus denen sein Primitiv besteht. Ein Primitiv ist ein grundlegendes Renderingelement, also eine einfache Form wie ein Punkt, eine Linie oder ein Dreieck. Ein Pixel, das sich in unmittelbarer Nähe eines einzigen Scheitelpunkts befindet, empfängt Konstanten, die mit diesem Scheitelpunkt fast identisch sind. Ein Pixel hingegen, das sich gleichmäßig zwischen allen Konstanten eines Primitivs erstreckt, empfängt Konstanten, die den Durchschnitt aller Scheitelpunkte bilden. In der Grafikprogrammierung werden die Konstanten, die die Pixel empfangen, als interpoliert bezeichnet. Wenn Pixel auf diese Weise konstant Daten erhalten, entsteht dadurch eine gute visuelle Qualität. Gleichzeitig wird weniger Arbeitsspeicher benötigt und der Bedarf an Bandbreite reduziert sich.

Obwohl jede Pixel-Shader-Instanz nur einen Satz von konstanten Werten empfängt, die nicht geändert werden können, erhalten unterschiedliche Pixel-Shader-Instanzen auch unterschiedliche konstante Datensätze. Aufgrund dieses Designs kann ein Shader-Programm für jedes Pixel in der Primitive eine unterschiedliche Farbausgabe erzeugen.

Verzeichnis konstanter Knoten

Node Details Eigenschaften
Kameravektor Der Vektor, der sich vom aktuellen Pixel bis zur Kamera im Raum erstreckt.

Damit können Sie Reflektionen im Raum berechnen.

Ausgabe

Output: float3
Der Vektor vom aktuellen Pixel bis zur Kamera
Keine
Farbkonstante Ein konstanter Farbwert

Ausgabe

Output: float4
Der Farbwert.
Ausgabe
Der Farbwert.
Konstante Ein konstanter Skalarwert

Ausgabe

Output: float
Der Skalarwert.
Ausgabe
Der Skalarwert.
2D-Konstante Eine Zwei-Komponenten-Vektorkonstante

Ausgabe

Output: float2
Der Vektorwert.
Ausgabe
Der Vektorwert.
3D-Konstante Eine Drei-Komponenten-Vektorkonstante

Ausgabe

Output: float3
Der Vektorwert.
Ausgabe
Der Vektorwert.
4D-Konstante Eine Vier-Komponenten-Vektorkonstante

Ausgabe

Output: float4
Der Farbwert.
Ausgabe
Der Vektorwert.
Normalisierte Position Die Position des aktuellen Pixels, ausgedrückt in normalisierten Gerätekoordinaten.

Die X-und die Y-Koordinate sind Werte im Bereich von [-1, 1]. Die Z-Koordinate verfügt über einen Wert im Bereich [0, 1], und die W-Komponente enthält den Punkttiefenwert im Anzeigebereich; W ist nicht normalisiert.

Ausgabe

Output: float4
Die Position des aktuellen Pixels
Keine
Punktfarbe Die diffuse Farbe des aktuellen Pixels, die eine Kombination der diffusen Materialfarbe und den Vertexfarbattributen darstellt

Ausgabe

Output: float4
Die diffuse Farbe des aktuellen Pixels.
Keine
Punkttiefe Die Tiefe des aktuellen Pixels im Anzeigebereich

Ausgabe

Output: float
Die Tiefe des aktuellen Pixels
Keine
Normalisierte Punkttiefe Die Tiefe des aktuellen Pixels, ausgedrückt in normalisierten Gerätekoordinaten.

Das Ergebnis hat einen Wert im Bereich [0, 1].

Ausgabe

Output: float
Die Tiefe des aktuellen Pixels
Keine
Bildschirmposition Die Position des aktuellen Pixels, ausgedrückt in Bildschirmkoordinaten.

Die Bildschirmkoordinaten basieren auf dem aktuellen Anzeigebereich. Die X- und die Y-Komponenten enthalten die Bildschirmkoordinaten, die Z-Komponente enthält die Tiefe normalisiert auf einen Bereich von [0, 1], und die W-Komponente enthält den Wert für die Tiefe im Anzeigeraum.

Ausgabe

Output: float4
Die Position des aktuellen Pixels
Keine
Oberflächennormale Die Oberflächennormale des aktuellen Pixels im Objektraum.

Damit können Sie Lichteinwirkungen und Reflexionen im Objektraum berechnen.

Ausgabe

Output: float3
Die Oberflächennormale des aktuellen Pixels
Keine
Tangentialraum-Kameravektor Der Vektor, der sich vom aktuellen Pixel bis zur Kamera im Tangentialraum erstreckt.

Damit können Sie Reflektionen im Tangentialraum berechnen.

Ausgabe

Output: float3
Der Vektor vom aktuellen Pixel bis zur Kamera
Keine
Tangentialraum-Lichtrichtung Der Vektor, der die Richtung definiert, in der Licht einer Lichtquelle im Bereich der Tangente des aktuellen Pixels umgewandelt wird.

Damit können Damit können Sie Licht- und Glanzlichteinwirkungen im Tangentialraum berechnen.

Ausgabe:

Output: float3
Der Vektor vom aktuellen Pixel bis zu einer Lichtquelle.
Keine
Globale Normale Die Oberflächennormale des aktuellen Pixels im Raum.

Damit können Sie Lichteinwirkungen und Reflexionen im Raum berechnen.

Ausgabe

Output: float3
Die Oberflächennormale des aktuellen Pixels
Keine
World-Position Die Position des aktuellen Pixels im Raum.

Ausgabe

Output: float4
Die Position des aktuellen Pixels
None

Parameterknoten

Im Shader-Designer stellen die Parameterknoten Eingaben für den Shader dar, die unter der Kontrolle der Anwendung auf einer pro-Zeichnen Grundlage sind, z.B. Materialeigenschaften, direktionale Beleuchtung, Kameraposition und Zeit. Da Sie diese Parameter mit jedem Zeichenaufruf ändern können, können Sie den gleichen Shader verwenden, um einem Objekt eine andere Darstellung zu geben.

Parameterknotenverweis

Node Details Eigenschaften
World-Position (Kamera) Die Position der Kamera im Raum.

Ausgabe:

Output: float4
Die Kameraposition.
Keine
Lichtrichtung Der Vektor, der die Richtung von Licht aus einer Lichtquelle im Tangentialraum definiert.

Damit können Sie Licht- und Glanzlichteinwirkungen im Tangentialraum berechnen.

Ausgabe:

Output: float3
Der Vektor vom aktuellen Pixel bis zu einer Lichtquelle.
Keine
Material (Umgebung) Der Beitrag der verschwommene Farbe des aktuellen Pixels, der indirekter Beleuchtung zugeordnet ist.

Die verschwommene Farbe eines Pixels simuliert die Interaktion zwischen Beleuchtung und groben Flächen. Sie können den Parameter „Material (Umgebung)“ nutzen, um ungefähr anzugeben, wie indirekte Beleuchtung zur Darstellung eines Objekts in der realen Welt beiträgt.

Ausgabe:

Output: float4
Die diffuse Farbe des aktuellen Pixels aufgrund indirekter Beleuchtung, d.h. Umgebungsbeleuchtung.
zugreifen
Öffentlich, sodass die Eigenschaft im Modell-Editor festgelegt werden kann, andernfalls Privat.

Wert
Die diffuse Farbe des aktuellen Pixels aufgrund indirekter Beleuchtung, d.h. Umgebungsbeleuchtung.
Material (Diffus) Eine Farbe, die beschreibt, wie das aktuelle Pixel die direkte Beleuchtung streut.

Die verschwommene Farbe eines Pixels simuliert die Interaktion zwischen Beleuchtung und groben Flächen. Können Sie den Parameter „Material (Diffus)“ verwenden, um zu ändern, wie das aktuelle Pixel direkte Beleuchtung streut, d.h. direktionale, Punkt- und Spotbeleuchtung.

Ausgabe:

Output: float4
Eine Farbe, die beschreibt, wie das aktuelle Pixel die direkte Beleuchtung streut.
zugreifen
Öffentlich, sodass die Eigenschaft im Modell-Editor festgelegt werden kann, andernfalls Privat.

Wert
Eine Farbe, die beschreibt, wie das aktuelle Pixel die direkte Beleuchtung streut.
Material (Selbstleuchtend) Der Farbbeitrag des aktuellen Pixels, der selbstleuchtender Beleuchtung zugeordnet ist.

Damit können Sie ein leuchtendes Objekt simulieren; d.h. ein Objekt, das sein eigenes Licht bereitstellt. Dieses Licht wirkt sich nicht auf andere Objekte aus.

Ausgabe:

Output: float4
Die Farbeinwirkung des aktuellen Pixels aufgrund der selbsterzeugten Beleuchtung.
zugreifen
Öffentlich, sodass die Eigenschaft im Modell-Editor festgelegt werden kann, andernfalls Privat.

Wert
Die Farbeinwirkung des aktuellen Pixels aufgrund der selbsterzeugten Beleuchtung.
Material (Glanz) Eine Farbe, die beschreibt, wie das aktuelle Pixel die direkte Beleuchtung reflektiert.

Die glänzende Farbe eines Pixels simuliert die Interaktion zwischen Beleuchtung und reibungslosen und spiegelähnlichen Flächen. Sie können den Parameter Glanzmaterial verwenden, um zu ändern, wie das aktuelle Pixel direkte Beleuchtung streut, d.h. direktionale, Punkt- und Spotbeleuchtung.

Ausgabe:

Output: float4
Eine Farbe, die beschreibt, wie das aktuelle Pixel die direkte Beleuchtung reflektiert.
zugreifen
Öffentlich, sodass die Eigenschaft im Modell-Editor festgelegt werden kann, andernfalls Privat.

Wert
Eine Farbe, die beschreibt, wie das aktuelle Pixel die direkte Beleuchtung reflektiert.
Material (Glanzkraft) Ein Skalarwert, der die Intensität von Glanzlichtern beschreibt.

Je größer die Glanzkraft, desto intensiver und weitreichender die Glanzlichter.

Ausgabe:

Output: float
Der Exponent, mit dem die Intensität von Glanzlichtern auf dem Material des aktuellen Pixels definiert wird.
zugreifen
Öffentlich, sodass die Eigenschaft im Modell-Editor festgelegt werden kann, andernfalls Privat.

Wert
Der Exponent, mit dem die Intensität von Glanzlichtern auf dem aktuellen Pixel definiert wird.
Normalisierte Zeit Die Zeit in Sekunden, normalisiert auf den Bereich [0, 1], damit auf 0 zurückgesetzt wird, wenn die Zeit 1 erreicht.

Sie können dies als Parameter in Shaderberechnungen verwenden, z.B. um Texturkoordinaten, Farbwerte oder andere Attribute zu animieren.

Ausgabe:

Output: float
Die normalisierte Zeit in Sekunden.
Keine
Time Die Zeit in Sekunden.

Sie können dies als Parameter in Shaderberechnungen verwenden, z.B. um Texturkoordinaten, Farbwerte oder andere Attribute zu animieren.

Ausgabe:

Output: float
Die Zeit in Sekunden.
None

Texturknoten

Im Shader Designer beproben Texturknoten verschiedene Texturtypen und Geometrien und erzeugen ider transformieren Texturkoordinaten. Texturen bieten Farb- und Beleuchtungsdetails auf Objekten.

Übersicht über Texturknoten

Node Details Eigenschaften
Cubemap-Beispiel Entnimmt ein Farbsample aus einer Cubemap an den angegebenen Koordinaten.

Sie können mithilfe einer Cubemap Farbdetails für Reflektionseffekte bereitstellen oder Texturen auf ein kugelförmiges Objekt anwenden und dabei weniger Verzerrung als bei einer 2D-Textur erzielen.

Eingabe:

UVW: float3
Ein Vektor, der die Position auf dem Texturcube, auf dem das Sample entnommen wurde. Das Sample wird am Schnittpunkt des Vektors mit dem Cube erfasst.

Ausgabe:

Output: float4
Farbbeispiel.
Struktur
Das Texturregister, das dem Sampler zugeordnet ist.
Normalmap-Sample Entnimmt ein Normalsample von einer 2D-Normalmap an den angegebenen Koordinaten

Sie können mit einer Normalmap die Darstellung der zusätzlichen geometrischen Details auf der Oberfläche eines Objekts simulieren. Normalmap enthalten gepackte Daten die einen Einheitsvektor anstelle von Farbdaten darstellen

Eingabe:

UV: float2
Die Koordinaten, an denen das Sample entnommen wird.

Ausgabe:

Output: float3
Normalsample
Achsenanpassung
Der Faktor zum Anpassen der Händigkeit des Normalmap-Samples.

Struktur
Das Texturregister, das dem Sampler zugeordnet ist.
Schwenken-UV Schwenkt die angegebenen Texturkoordinaten in Abhängigkeit von der Zeit.

Damit können Sie eine Textur oder die Normalmap auf der Oberfläche eines Objekts verschieben.

Eingabe:

UV: float2
Zu schwenkende Koordinaten

Time: float
Die Zeitdauer in Sekunden des Schwenkvorgangs.

Ausgabe:

Output: float2
Geschwenkte Koordinaten
Geschwindigkeit X
Die Anzahl von Texeln, die pro Sekunde entlang der X-Achse verschoben werden.

Geschwindigkeit Y
Die Anzahl von Texeln, die pro Sekunde entlang der Y-Achse verschoben werden.
Parallaxen-UV Verschiebt die angegebenen Texturkoordinaten in Abhängigkeit von Höhe und Anzeigewinkel.

Der Effekt wird als Parallaxenmapping oder virtuelles Verschiebungsmapping bezeichnet. Damit können Sie Illusion von Tiefe auf einer flachen Oberfläche erzeugen.

Eingabe:

UV: float2
Zu verschiebende Koordinaten

Height: float
Der den UV-Koordinaten zugeordnete Heightmap-Wert.

Ausgabe:

Output: float2
Verschobene Koordinaten
Tiefenebene
Referenztiefe für den Parallaxeneffekt. Der Standardwert ist 0,5. Kleinere Werte heben die Textur an; größere Werte, die senken sie auf die Oberfläche.

Tiefenskala
Die Skalierung des Parallaceneffekts. Dadurch wird die optische Tiefe mehr oder weniger ausgeprägt. Die Werte stammen normalerweise auf dem Bereich von 0,02 bis 0,1.
Drehen-UV Dreht die angegebenen Texturkoordinaten in Abhängigkeit von der Zeit um einen Mittelpunkt.

Damit können Sie eine Textur oder die Normalmap auf der Oberfläche eines Objekts drehen.

Eingabe:

UV: float2
Zu drehende Koordinaten

Time: float
Die Zeitdauer in Sekunden des Schwenkvorgangs.

Ausgabe:

Output: float2
Gedrehte Koordinaten
X zentrieren
Die X-Koordinate, die den Mittelpunkt der Drehung definiert.

Y zentrieren
Die Y-Koordinate, die den Mittelpunkt der Drehung definiert.

Geschwindigkeit
Der Winkel im Bogenmaß, in dem sich die Textur pro Sekunde dreht.
Texturkoordinate Die Texturkoordinaten des aktuellen Pixels.

Die Texturkoordinaten werden durch die Interpolation zwischen den Attributen der Texturkoordinatenattribute von benachbarten Scheitelpunkten bestimmt. Sie können sich dies als die Position des aktuellen Pixels im Texturraum vorstellen.

Ausgabe:

Output: float2
Texturkoordinaten
Keine
Texturdimensionen Gibt die Breite und Höhe einer 2D-Texturmap aus.

Sie können die Texturdimensionen verwenden, um die Breite und Höhe der Textur in einem Shader zu berücksichtigen.

Ausgabe:

Output: float2
Die Breite und Höhe der Textur, ausgedrückt als Vektor. Die Breite wird als das erste Element des Vektors gespeichert. Die Höhe wird in das zweite Element gespeichert.
Struktur
Das Texturregister, das den Texturdimensionen zugeordnet ist.
Texeldelta Gibt das Delta (Abstand) zwischen den Texeln einer 2D-Texturmap aus.

Sie können mit dem Texeldelta benachbarte Texelwerte in einem Shader sampeln.

Ausgabe:

Output: float2
Das Delta (Abstand) von einem zum nächsten Texel (diagonal in positiver Richtung verschieben), ausgedrückt als Vektor im normalisierten Texturraum. Sie können die Positionen aller benachbarten Texel ableiten, indem Sie selektiv entweder die U- oder die V- Koordinate des Deltas ignorieren oder negieren.
Struktur
Das Texturregister, das dem Texel zugeordnet ist.
Texturbeispiel Entnimmt ein Farbsample aus einer 2D-Texturmap an den angegebenen Koordinaten.

Mit einer Texturmap können Sie Farbdetails auf der Oberfläche eines Objekts bereitstellen.

Eingabe:

UV: float2
Die Koordinaten, an denen das Sample entnommen wird.

Ausgabe:

Output: float4
Farbbeispiel.
Struktur
Das Texturregister, das dem Sampler zugeordnet ist.

Berechnungsknoten

Im Shader-Designer führen Berechnungsknoten algebraische, logische, trigonometrische und andere mathematische Vorgänge aus.

Hinweis

Wenn Sie mit Berechnungsknoten im Shader-Designer arbeiten, macht sich die Typerweiterung besonders bemerkbar. Weitere Informationen darüber, wie sich die Typerweiterung auf Eingabeparameter auswirkt, gehen Sie in den Abschnitt Promotion of inputs (Heraufstufung von Eingaben).

Berechnungsknotenverweis

Node Details Eigenschaften
Abs Berechnet den absoluten Wert der angegebenen Eingabe pro Komponente.

Für jede Komponente der Eingabe X werden negative Werte in positive umgewandelt, sodass alle Komponenten des Ergebnisses einen positiven Wert aufweisen.

Eingabe:

X: float, float2, float3 oder float4
Die Werte, für die der absolute Wert bestimmt wird.

Output:

Output: identisch mit der Eingabe X
Der absolute Wert pro Komponente.
Keine
Add (Hinzufügen) Berechnet die komponentenbezogene Summe der angegebenen Eingaben pro Komponente.

Für jede Komponente des Ergebnisses werden die entsprechenden Komponenten der Eingaben X und Y zusammenaddiert.

Eingabe:

X: float, float2, float3 oder float4
Einer der Werte, der addiert wird.

Y: identisch mit der Eingabe X
Einer der Werte, der addiert wird.

Ausgabe:

Output: identisch mit der Eingabe X
Die Summe pro Komponente.
Keine
Ceil Berechnet den nach oben gerundeten Wert des Eingabewerts pro Komponente.

Die Obergrenze eines Werts ist die kleinste ganze Zahl, die größer als oder gleich dieses Werts ist.

Eingabe:

X: float, float2, float3 oder float4
Der Wert, für den die Obergrenze berechnet werden soll.

Ausgabe:

Output: identisch mit der Eingabe X
Die Obergrenze pro Komponente.
Keine
Clamp Begrenzt die einzelnen Komponenten der angegebenen Eingabe auf einen vordefinierten Bereich.

Für jede Komponente des Ergebnisses bleiben Werte, die im Bereich liegen, unverändert, Werte, die darüber liegen, werden auf den Maximalwert des Bereichs zurückgesetzt, Werte unterhalb des Bereichs an dessen Minimum angeglichen.

Eingabe:

X: float, float2, float3 oder float4
Die zu bindenden Werte.

Ausgabe:

Output: identisch mit der Eingabe X
Der gebundene Wert pro Komponente.
Max
Stellt den größtmöglichen Wert im Bereich dar.

Min
Stellt den kleinstmöglichen Wert im Bereich dar.
Cos Berechnet den Kosinus der angegebenen Eingabe im Bogenmaß pro Komponente.

Für jede Komponente des Ergebnisses wird der Kosinus der entsprechenden Komponente, die im Bogenmaß (Radiant) bereitgestellt wird, berechnet. Das Ergebnis besteht aus Komponenten, die über Werte im Bereich von [-1, 1] verfügen.

Eingabe:

X: float, float2, float3 oder float4
Die Werte, von denen der Kosinus im Bogenmaß berechnet wird.

Ausgabe:

Output: identisch mit der Eingabe X
Der Kosinus pro Komponente.
Keine
Cross Berechnet das Kreuzprodukt der angegebenen Vektoren mit drei Komponenten.

Sie können das Kreuzprodukt verwenden, um die Normale einer Oberfläche zu berechnen, die von zwei Vektoren definiert ist.

Eingabe:

X: float3
Der Vektor auf der linken Seite des Kreuzprodukts

Y: float3
Der Vektor auf der rechten Seite des Kreuzprodukts

Ausgabe:

Output: float3
Das Kreuzprodukt.
Keine
Entfernung Berechnet den Abstand zwischen den angegebenen Punkten.

Das Ergebnis ist ein positiver skalarer Wert.

Eingabe:

X: float, float2, float3 oder float4
Einer der Punkte, um den Abstand dazwischen zu bestimmen.

Y: identisch mit der Eingabe X
Einer der Punkte, um den Abstand dazwischen zu bestimmen.

Ausgabe:

Output: identisch mit der Eingabe X
Der Abstand.
Keine
Dividieren Berechnet den komponentenbezogenen Quotienten der angegebenen Eingaben.

Für jede Komponente des Ergebnisses wird die entsprechende Komponente der Eingabe X durch die entsprechende Komponente der Eingabe Y geteilt.

Eingabe:

X: float, float2, float3 oder float4
Die Werte der Dividenden.

Y: identisch mit der Eingabe X
Die Werte des Divisors.

Ausgabe:

Output: identisch mit der Eingabe X
Der Quotient pro Komponente.
Keine
Punkt Berechnet das Skalarprodukt (Punktprodukt) der angegebenen Vektoren.

Das Ergebnis ist ein Skalarwert. Mithilfe des Skalarprodukts können Sie den Winkel zwischen beiden Vektoren bestimmen.

Eingabe:

X: float, float2, float3 oder float4
Einer der Begriffe.

Y: identisch mit der Eingabe X
Einer der Begriffe.

Ausgabe:

Output: float
Das Skalarprodukt.
Keine
Etage Berechnet den nach unten gerundeten Wert der angegebenen Eingabe pro Komponente.

Für jede Komponente des Ergebnisses ist der zugehörige Wert der größte ganzzahlige Wert, der kleiner oder gleich der entsprechenden Komponente der Eingabe ist. Jede Komponente des Ergebnisses ist eine ganze Zahl.

Eingabe:

X: float, float2, float3 oder float4
Der Wert, für den die Untergrenze berechnet werden soll.

Ausgabe:

Output: identisch mit der Eingabe X
Die Untergrenze pro Komponente.
Keine
Fmod Berechnet das komponentenbezogene Modul (Rest) der angegebenen Eingaben.

Für jede Komponente des Ergebnisses wird ein integrales Vielfaches, m, der entsprechenden Komponente der Eingabe Y von der entsprechenden Komponente von Eingabe X substrahiert, wobei ein Rest zurück bleibt. Das Vielfache, m, wird so ausgewählt, dass der Rest weniger beträgt als die entsprechende Komponente der Eingabe Y und das gleiche Vorzeichen aufweist wie die entsprechende Komponente der Eingabe X. Zum Beispiel: fmod(-3,14; 1,5) ist -0,14.

Eingabe:

X: float, float2, float3 oder float4
Die Werte der Dividenden.

Y: identisch mit der Eingabe X
Die Werte des Divisors.

Ausgabe:

Output: identisch mit der Eingabe X
Das Modul pro Komponente.
Keine
Frac Entfernt den integralen Teil (ganze Zahl) der angegebenen Eingabe pro Komponente.

Für jede Komponente des Ergebnisses wird der integrale Teil der entsprechenden Komponente der Eingabe entfernt, es werden jedoch ein Bruchteil und ein Vorzeichen beibehalten. Dieser anteilige Wert liegt im Bereich [0, 1). Beispielsweise wird der Wert -3,14 zum Wert -0,14.

Eingabe:

X: float, float2, float3 oder float4
Der Wert, für den der Bruchteil berechnet werden soll.

Ausgabe:

Output: identisch mit der Eingabe X
Der Bruchteil pro Komponente.
Keine
Lerp Lineare Interpolation. Berechnet den komponentenbezogenen gewichteten Durchschnitt der angegebenen Eingaben.

Für jede Komponente des Ergebnisses wird der komponentenbezogene gewichtete Durchschnitt der entsprechenden Eingaben X und Y berechnet. Die Gewichtung erfolgt über Percent, einem Skalar, und wird gleichmäßig auf alle Komponenten angewendet. Damit können Sie zwischen Punkten, Farben, Attributen und anderen Werten interpolieren.

Eingabe:

X: float, float2, float3 oder float4
Der ursprüngliche Wert. Wenn Percent null ist, entspricht das Ergebnis dieser Eingabe.

Y: identisch mit der Eingabe X
Der Terminalwert. Wenn Percent eins ist, entspricht das Ergebnis dieser Eingabe.

Percent: float
Eine skalare Gewichtung, die als Prozentsatz der Entfernung von der Eingabe X zur Eingabe Y ausgedrückt ist.

Ausgabe:

Output: identisch mit der Eingabe X
Ein Wert, der mit den angegebenen Eingaben kollinear ist.
Keine
Multiplizieren Addieren Berechnet die komponentenbezogene Operation „Multiplizieren Addieren“ der angegebenen Eingaben.

Für jede Komponente des Ergebnisses werden die entsprechenden Komponenten der Eingaben M und A zur entsprechenden Komponente der Eingabe B addiert. Diese Operationssequenz kommt in allgemeinen Formeln vor, z.B. in der Punktsteigerungsformel einer Linie und in der Formel zum Skalieren und anschließenden Verzerren einer Eingabe.

Eingabe:

M: float, float2, float3 oder float4
Einer der Werte, die miteinander multipliziert werden.

A: identisch mit der Eingabe M
Einer der Werte, die miteinander multipliziert werden.

B: identisch mit der Eingabe M
Die Werte, die dem Produkt der anderen zwei Eingaben hinzugefügt werden.

Ausgabe:

Output: identisch mit der Eingabe M
Das Ergebnis der „Multiplizieren-Addieren“-Operation pro Komponente.
Keine
Max Berechnet das komponentenbezogene Maximum der angegebenen Eingaben.

Für jede Komponente des Ergebnisses wird die größere der entsprechenden Komponenten der Eingaben verwendet.

Eingabe:

X: float, float2, float3 oder float4
Der Wert, für den das Maximum berechnet werden soll.

Y: identisch mit der Eingabe X
Der Wert, für den das Maximum berechnet werden soll.

Ausgabe:

Output: identisch mit der Eingabe X
Der maximale Wert pro Komponente.
Keine
Min Berechnet das komponentenbezogene Minimum der angegebenen Eingaben.

Für jede Komponente des Ergebnisses wird die kleinste der entsprechenden Komponenten der Eingaben verwendet.

Eingabe:

X: float, float2, float3 oder float4
Der Wert, für den das Minimum berechnet werden soll.

Y: identisch mit der Eingabe X
Der Wert, für den das Minimum berechnet werden soll.

Ausgabe:

Output: identisch mit der Eingabe X
Der minimale Wert pro Komponente.
Keine
Multiplizieren Berechnet das komponentenbezogene Produkt der angegebenen Eingaben.

Für jede Komponente des Ergebnisses werden die entsprechenden Komponenten der Eingaben X und Y miteinander multipliziert.

Eingabe:

X: float, float2, float3 oder float4
Einer der Werte, die miteinander multipliziert werden.

Y: identisch mit der Eingabe X
Einer der Werte, die miteinander multipliziert werden.

Ausgabe:

Output: identisch mit der Eingabe X
Das Produkt pro Komponente.
Keine
Normalisieren Normalisiert den angegebenen Vektor.

Ein normalisierter Vektor behält die Richtung des ursprünglichen Vektor, aber nicht dessen Größe. Normalisierte Vektoren können verwendet werden, um Berechnungen zu vereinfachen, bei denen die Größe eines Vektors nicht wichtig ist.

Eingabe:

X: float2, float3 oder float4
Der zu normalisierende Vektor.

Ausgabe:

Output: identisch mit der Eingabe X
Der normalisierte Vektor.
Keine
Eins Minus Berechnet den Unterschied zwischen 1 und der angegebenen Eingabe pro Komponente.

Für jede Komponente des Ergebnisses wird die entsprechende Komponente der Eingabe von 1 substrahiert.

Eingabe:

X: float, float2, float3 oder float4
Das Argument, von dem von 1 subtrahiert werden soll.

Ausgabe:

Output: identisch mit der Eingabe X
Der Unterschied zwischen 1 und der angegebenen Eingabe pro Komponente.
Keine
Energie Berechnet die komponentenbezogene Potenzierung (Potenz) der angegebenen Eingaben.

Für jede Komponente des Ergebnisses wird die entsprechende Komponente der Eingabe X auf die Potenz der entsprechenden Komponente der Eingabe Y erhöht.

Eingabe:

X: float, float2, float3 oder float4
Die Basiswerte

Y: identisch mit der Eingabe X
Die Exponentenwerte.

Ausgabe:

Output: identisch mit der Eingabe X
Die Potenzierung pro Komponente.
Keine
Sättigen Bindet jede Komponente der angegebenen Eingabe an den Bereich [0, 1].

Sie können diesen Bereich verwenden, um Prozentsätze und andere relative Maßangaben in Berechnungen darzustellen. Für jede Komponente des Ergebnisses werden die entsprechenden Werte der Eingabe, die kleiner als 0 sind, zu gleich 0 umgewandelt. Werte, die größer als 1 sind, werden zu gleich 1 umgewandelt, und Werte, die sich im Bereich befinden, werden nicht verändert.

Eingabe:

X: float, float2, float3 oder float4
Die zu sättigenden Werte.

Ausgabe:

Output: identisch mit der Eingabe X
Der gesättigte Wert pro Komponente.
Keine
Sin Berechnet den Sinus der angegebenen Eingabe im Bogenmaß pro Komponente.

Für jede Komponente des Ergebnisses wird der Sinus der entsprechenden Komponente, die im Bogenmaß (Radiant) bereitgestellt wird, berechnet. Das Ergebnis besteht aus Komponenten, die über Werte im Bereich [-1, 1] verfügen.

Eingabe:

X: float, float2, float3 oder float4
Die Werte, von denen der Sinus im Bogenmaß berechnet wird.

Ausgabe:

Output: identisch mit der Eingabe X
Der Sinus pro Komponente.
Keine
Sqrt Berechnet die Quadratwurzel der angegebenen Eingabe pro Komponente.

Für jede Komponente des Ergebnisses wird die Quadratwurzel der entsprechenden Komponente berechnet.

Eingabe:

X: float, float2, float3 oder float4
Der Wert, für den die Quadratwurzel berechnet werden soll.

Ausgabe:

Output: identisch mit der Eingabe X
Die Quadratwurzel pro Komponente.
Keine
Subtrahieren Berechnet die komponentenbezogene Differenz der angegebenen Eingaben.

Für jede Komponente des Ergebnisses wird die entsprechende Komponente der Eingabe Y von der entsprechenden Komponente der Eingabe X subtrahiert. Damit können Sie den Vektor berechnen, der sich von der ersten Eingabe bis hin zur zweiten erstreckt.

Eingabe:

X: float, float2, float3 oder float4
Die Werte, von denen subtrahiert werden soll.

Y: identisch mit der Eingabe X
Die Werte, die von der Eingabe X substrahiert werden sollen.

Ausgabe:

Output: identisch mit der Eingabe X
Die Differenz pro Komponente.
Keine
3D-Vektor transformieren Transformiert den angegebenen 3D-Vektor in einen anderen Raum.

Damit können Sie Punkte oder Vektoren in einen gemeinsamen Raum platzieren, sodass Sie sie zum Durchführen aussagekräftiger Berechnungen verwenden können.

Eingabe:

Vector: float3
Der zu transformierende Vektor.

Ausgabe:

Output: float3
Der transformierte Vektor.
Ursprungssystem
Der ursprüngliche Raum des Vektors.

Zielsystem
Der Raum, in den der Vektor transformiert werden soll.

Hilfsprogrammknoten

Im Shader-Designer stellen Hilfsprogrammknoten allgemeine, nützliche Shader-Berechnungen dar, die sich den anderen Kategorien nicht eindeutig zuordnen lassen. Einige Hilfsprogrammknoten führen einfache Operationen durch, z.B. Anfügen von Vektoren oder bedingte Auswahl von Ergebnissen, während andere komplexe Vorgänge ausführen, z.B. Lichteinwirkungen entsprechend den gängigen Beleuchtungsmodellen berechnen.

Übersicht über Hilfeprogrammknoten

Node Details Eigenschaften
Vektor anfügen Erstellt einen Vektor, indem die angegebenen Eingaben zusammen angefügt werden.

Eingabe:

Vector: float, float2 oder float3
Die Werte, an die er angefügt wird.

Value to Append: float
Der anzufügende Wert.

Ausgabe:

Output: float2, float3 oder float4, je nach Art der Eingabe Vector.
Der neue Vektor.
Keine
Fresnel Berechnet den Fresnel-Verlauf auf der Grundlage der angegebenen Oberflächennormalen.

Der Wert des Fresnel-Verlaufs drückt aus, wie exakt die Oberflächennormale des aktuellen Pixels mit dem Ansichtsvektor zusammenfällt. Wenn die Vektoren ausgerichtet sind, ist das Ergebnis der Funktion 0. Das Ergebnis erhöht sich, wenn die Vektoren weniger ähnlich werden, und erreicht sein Maximum, wenn die Vektoren orthogonal sind. Sie können dies nutzen, um einen Effekt zu erzielen, der mehr oder weniger sichtbar ist, je nach Beziehung zwischen der Ausrichtung des aktuellen Pixels und der Kamera.

Eingabe:

Surface Normal: float3
Die Oberflächennormale des aktuellen Pixels, definiert im Tangentialraum des aktuellen Pixels. Damit können Sie die sichtbare Oberflächennormale wie beim Normal Mapping stören.

Ausgabe:

Output: float
Das Reflexionsvermögen des aktuellen Pixels.
Exponent
Der Exponent zum Berechnen des Fresnel-Verlaufs.
If Wählt abhängig von Bedingungen eines der drei möglichen Ergebnisse pro Komponente aus. Dabei wird die Bedingung durch die Beziehung zwischen zwei anderen angegebenen Eingaben definiert.

Für jede Komponente des Ergebnisses wird die entsprechende Komponente von einem der drei möglichen Ergebnisse ausgewählt, basierend auf der Beziehung zwischen den entsprechenden Komponenten der ersten beiden Eingaben.

Eingabe:

X: float, float2, float3 oder float4
Der zu vergleichende Wert auf der linken Seite.

Y: gleiche Art wie Eingabe X
Der zu vergleichende Wert auf der rechten Seite.

X > Y: gleiche Art wie Eingabe X
Die Werte, die ausgewählt werden, wenn X größer als Y ist.

X = Y: gleiche Art wie Eingabe X
Die Werte, die ausgewählt werden, wenn X gleich Y ist.

X < Y: gleiche Art wie Eingabe X
Die Werte, die ausgewählt werden, wenn X kleiner als Y ist.

Ausgabe:

Output: float3
Das ausgewählte Ergebnis pro Komponente.
Keine
Lambert Berechnet die Farbe des aktuellen Pixels entsprechend dem Lambert-Beleuchtungsmodell unter Verwendung der angegebenen Oberflächennormalen.

Diese Farbe ergibt sich aus der Summe von Umgebungslicht und diffuser Beleuchtungseinwirkungen unter direkter Beleuchtung. Das Umgebungslicht entspricht ungefähr der Gesamteinwirkung von indirekter Beleuchtung, sieht jedoch ohne die Hilfe zusätzlicher Beleuchtung flach und matt aus. Diffuse Beleuchtung kann einem Objekt zusätzliche Form und Tiefe geben.

Eingabe:

Surface Normal: float3
Die Oberflächennormale des aktuellen Pixels, definiert im Tangentialraum des aktuellen Pixels. Damit können Sie die sichtbare Oberflächennormale wie beim Normal Mapping stören.

Diffuse Color: float3
Die diffuse Farbe des aktuellen Pixels, in der Regel die Punktfarbe. Wenn keine Eingabe erfolgt, ist der Standardwert weiß.

Ausgabe:

Output: float3
Die diffuse Farbe des aktuellen Pixels.
Keine
Maskierungsvektor Maskiert Komponenten des angegebenen Vektors.

Damit können Sie bestimmte Farbkanäle aus einem Farbwert entfernen oder verhindern, dass sich bestimmte Komponenten auf nachfolgenden Berechnungen auswirken.

Eingabe:

Vector: float4
Der zu maskierende Vektor.

Ausgabe:

Output: float4
Der maskierte Vektor.
Rot / X
FALSE zum Ausblenden der Rot-(x-)Komponente, andernfalls TRUE.

Grün / Y
FALSE zum Ausblenden der Grün-(y-)Komponente, andernfalls TRUE.

Blau / Z
FALSE zum Ausblenden der Blau-(w-)Komponente, andernfalls TRUE.

Alpha / W
FALSE zum Ausblenden der Alpha-(w-)Komponente, andernfalls TRUE.
Reflektionsvektor Berechnet den Reflektionsvektor für den aktuellen Pixel im Tangentialraum basierend auf der Kameraposition.

Damit können Sie Reflektionen, Cubemap-Koordinaten und Glanzlichteinwirkungen berechnen.

Eingabe:

Tangent Space Surface Normal: float3
Die Oberflächennormale des aktuellen Pixels, definiert im Tangentialraum des aktuellen Pixels. Damit können Sie die sichtbare Oberflächennormale wie beim Normal Mapping stören.

Ausgabe:

Output: float3
Der Reflektionsvektor.
Keine
Glänzend Berechnet die Glanzlichteinwirkung entsprechend dem Phong-Beleuchtungsmodell, unter Verwendung der angegebenen Oberflächennormalen.

Glanzlicht gibt einem Objekt eine leuchtende, spiegelnde Erscheinung, z.B. Wasser, Kunststoff oder Metalle.

Eingabe:

Surface Normal: float3
Die Oberflächennormale des aktuellen Pixels, definiert im Tangentialraum des aktuellen Pixels. Damit können Sie die sichtbare Oberflächennormale wie beim Normal Mapping stören.

Ausgabe:

Output: float3
Die Farbeinwirkung von Glanzlichtern.
None

Filterknoten

Filterknoten wandeln im Shader-Designer Eingabe, z.B. ein Farb- oder Texturbeispiel, in einen figurativen Farbwert. Diese figurativen Farbwerte werden häufig für nicht fotorealistisches Rendering oder als Komponenten in anderen visuellen Effekten verwendet.

Referenz zu Filterknoten

Node Details Eigenschaften
Blur Zeichnet die Pixel in einer Textur mit einer Gauß-Funktion weich.

Damit können Sie die Farbdetails oder das Rauschen in einer Textur reduzieren.

Eingabe:

UV: float2
Die Koordinaten für das zu testende Texel

Ausgabe:

Output: float4
Der weichgezeichnete Farbwert
Struktur
Das Texturregister, das dem Sampler zugeordnet ist, der während der Weichzeichnung verwendet wird
Desaturate Verringert die Farbintensität der angegebenen Farbe.

Beim Entsättigen der Farbe nähert sich der Farbwert seinem Graustufenäquivalent.

Eingabe:

RGB: float3
Die zu entsättigende Farbe

Percent: float
Der Prozentsatz, um den die Farbsättigung verringert werden soll, ausgedrückt als normalisierter Wert im Bereich [0, 1].

Ausgabe:

Output: float3
Die entsättigte Farbe
Sättigung
Die Gewichtungen, die den Rot-, Grün- und Blau-Farbkomponenten zugeordnet sind
Edge Detection Erkennt Kanten in einer Textur mit dem Canny-Algorithmus. Kantenpixel werden als weiß ausgegeben, Nicht-Kantenpixel als schwarz.

Dadurch können Sie Kanten in einer Textur identifizieren und zusätzliche Effekte verwenden, um auf diese Kanten anzuwenden.

Eingabe:

UV: float2
Die Koordinaten für das zu testende Texel

Ausgabe:

Output: float4
Die Ausgabe ist weiß, wenn sich das Texel auf einer Kante befindet, andernfalls ist sie schwarz.
Struktur
Das Texturregister, das dem Sampler zugeordnet ist, der während der Kantenerkennung verwendet wird.
Sharpen Zeichnet eine Textur scharf.

Damit können Sie genaue Details in einer Textur hervorheben.

Eingabe:

UV: float2
Die Koordinaten für das zu testende Texel

Ausgabe:

Output: float4
Der weichgezeichnete Farbwert
Struktur
Das Texturregister, das dem Sampler zugeordnet ist, der während der Scharfzeichnung verwendet wird.

Nächste Schritte

Weitere Informationen finden Sie unter Erstellen von Shadern mit dem Shader-Designer in Visual Studio.