Co jsou uzly Návrháře shaderu?

Návrhář shaderu v sadě Visual Studio představuje vizuální efekty jako graf. Tyto grafy jsou sestavené z uzlů, které jsou vybrány a propojeny přesnými způsoby, jak dosáhnout zamýšleného efektu. Každý uzel představuje buď část informací, nebo matematickou funkci a propojení mezi nimi představují způsob, jakým informace procházejí grafem, aby vznikl výsledek. Mezi typy uzlů patří filtry, textury, parametry, konstanty, uzly utility a matematické uzly.

Struktura uzlu

Všechny uzly se skládají z kombinace společných prvků. Každý uzel má na pravé straně alespoň jeden výstupní terminál (s výjimkou konečného barevného uzlu, který představuje výstup shaderu). Uzly, které představují výpočty nebo vzorkovače textury, mají vstupní terminály na levé straně, ale uzly, které představují informace, nemají vstupní terminály. Výstupní terminály jsou připojeny ke vstupním terminálům pro přesun informací z jednoho uzlu do druhého.

Propagace vstupů

Vzhledem k tomu, že Návrhář shaderu musí nakonec vygenerovat zdrojový kód HLSL, aby se efekt mohl použít ve hře nebo aplikaci, uzly Shader Designer podléhají pravidlům povýšení typu, která HLSL používá. Vzhledem k tomu, že grafický hardware pracuje primárně s hodnotami s plovoucí desetinou čárkou, je povýšení typu mezi různými typy ( například od int do float, nebo do floatdouble) neobvyklé. Vzhledem k tomu, že grafický hardware používá stejnou operaci na více informacích najednou, může dojít k jinému druhu povýšení, ve kterém je kratší počet vstupů delší tak, aby odpovídal velikosti nejdelšího vstupu. Jak se prodlužuje, závisí na typu vstupu a také na samotné operaci:

  • Pokud je menší typ skalární hodnota, pak:

    Hodnota skaláru se replikuje do vektoru, který je roven většímu vstupu. Například skalární vstup 5,0 se stane vektorem (5,0, 5,0, 5,0), když největší vstup operace je vektor se třemi prvky bez ohledu na to, co operace je.

  • Pokud je menší typ vektor a operace je multiplikativní (*, /, %atd.), pak:

    Hodnota vektoru se zkopíruje do úvodních prvků vektoru, který se rovná velikosti většího vstupu, a koncové prvky jsou nastaveny na hodnotu 1,0. Například vektorový vstup (5,0, 5,0) se stane vektorem (5,0, 5,0, 1,0, 1,0), když se vynásobí vektorem čtyř prvků. Tím se zachová třetí a čtvrtý prvek výstupu pomocí násobené identity 1,0.

  • Pokud je menší typ vektor a operace je sčítá (+, -atd.), pak:

    Hodnota vektoru se zkopíruje do úvodních prvků vektoru, který je roven většímu vstupu, a koncové prvky jsou nastaveny na hodnotu 0,0. Například vektorový vstup (5,0, 5,0) se stane vektorem (5,0, 5,0, 0,0, 0,0), když se přidá do vektoru se čtyřmi prvky. Tím se zachová třetí a čtvrtý prvek výstupu pomocí doplňkové identity 0,0.

Uzly a typy uzlů

Návrhář shaderu poskytuje šest různých typů uzlů – filtry, uzly textury, parametry, konstanty, uzly utility a matematické uzly – a několik jednotlivých uzlů patří každému typu.

Uzly konstanty

V Návrháři shaderu představují konstantní uzly hodnoty literálů a interpolované atributy vrcholů ve výpočtech pixel-shader. Vzhledem k tomu, že atributy vrcholů jsou interpolované – a proto se pro každý pixel liší – každá instance pixel-shader přijímá jinou verzi konstanty. Každý pixel tak získá jedinečný vzhled.

Interpolace atributů vrcholů

Obrázek 3D scény ve hře nebo aplikaci se vytváří matematicky transformací mnoha objektů – které jsou definovány vrcholy, atributy vrcholů a primitivní definice – na pixely na obrazovce. Všechny informace potřebné k poskytnutí jedinečného vzhledu pixelu jsou poskytovány prostřednictvím atributů vrcholů, které se vzájemně prolínají v závislosti na blízkosti pixelu s různými vrcholy, které tvoří jeho primitiv. Primitivní je základní vykreslovací prvek; to znamená jednoduchý obrazec, například bod, čáru nebo trojúhelník. Pixel, který je velmi blízko jen jednomu z vrcholů, přijímá konstanty, které jsou téměř identické s tímto vrcholem, ale pixel, který je rovnoměrně rozložený mezi všemi vrcholy primitiv přijímá konstanty, které jsou průměrem těchto vrcholů. Při programování grafiky se říká, že konstanty, které přijímají pixely, jsou interpolované. Poskytování konstantních dat pixelů tímto způsobem vytváří dobrou vizuální kvalitu a zároveň snižuje nároky na paměť a šířku pásma.

I když každá instance pixel-shader přijímá pouze jednu sadu konstantních hodnot a nemůže změnit tyto hodnoty, různé instance pixel-shader přijímají různé sady konstantních dat. Tento návrh umožňuje programu shaderu vytvořit jiný barevný výstup pro každý pixel v primitivu.

Odkaz na konstantní uzel

Uzel Detaily Vlastnosti
vektor Kamera Vektor, který se rozšiřuje z aktuálního pixelu na kameru ve světě.

Můžete ho použít k výpočtu odrazů ve světovém vesmíru.

Výstup

Output: float3
Vektor z aktuálního pixelu na kameru.
Nic
Barevná konstanta Konstantní hodnota barvy.

Výstup

Output: float4
Hodnota barvy.
Výstup
Hodnota barvy.
Konstantní Konstantní skalární hodnota.

Výstup

Output: float
Skalární hodnota.
Výstup
Skalární hodnota.
2D konstanta Vektorová konstanta se dvěma součástmi.

Výstup

Output: float2
Vektorová hodnota.
Výstup
Vektorová hodnota.
3D konstanta Třísložková vektorová konstanta.

Výstup

Output: float3
Vektorová hodnota.
Výstup
Vektorová hodnota.
4D konstanta Čtyřsložková vektorová konstanta.

Výstup

Output: float4
Hodnota barvy.
Výstup
Vektorová hodnota.
Normalizovaná pozice Pozice aktuálního pixelu vyjádřená v normalizovaných souřadnicích zařízení.

Souřadnice x a souřadnice y mají hodnoty v rozsahu [-1, 1], souřadnice z má hodnotu v rozsahu [0, 1] a w komponenta obsahuje hodnotu hloubky bodu v oblasti pohledu; w není normalizován.

Výstup

Output: float4
Pozice aktuálního pixelu.
Nic
Barva bodu Difuzní barva aktuálního pixelu, což je kombinace vlastností barvy difuzního materiálu a vrcholů.

Výstup

Output: float4
Difuzní barva aktuálního pixelu.
Nic
Hloubka bodu Hloubka aktuálního pixelu v prostoru zobrazení.

Výstup

Output: float
Hloubka aktuálního pixelu.
Nic
Normalizovaná hloubka bodu Hloubka aktuálního pixelu vyjádřená v normalizovaných souřadnicích zařízení.

Výsledek má hodnotu v rozsahu [0, 1].

Výstup

Output: float
Hloubka aktuálního pixelu.
Nic
Pozice obrazovky Pozice aktuálního pixelu vyjádřená v souřadnicích obrazovky.

Souřadnice obrazovky jsou založeny na aktuálním zobrazení. Součásti x a y obsahují souřadnice obrazovky, komponenta z obsahuje hloubku normalizovanou do rozsahu [0, 1] a w komponenta obsahuje hloubkovou hodnotu v prostoru zobrazení.

Výstup

Output: float4
Pozice aktuálního pixelu.
Nic
Surface Normal Normální povrch aktuálního pixelu v prostoru objektu.

Můžete ho použít k výpočtu světelných příspěvků a odrazů v prostoru objektů.

Výstup

Output: float3
Normální povrch aktuálního pixelu.
Nic
Tangens space Kamera Vector Vektor, který se rozšiřuje z aktuálního pixelu na kameru v tangens prostoru.

Můžete ho použít k výpočtu odrazů v tangens prostoru.

Výstup

Output: float3
Vektor z aktuálního pixelu na kameru.
Nic
Tangens space light direction Vektor, který definuje směr, ve kterém se světlo přetypuje ze zdroje světla v tangensovém prostoru aktuálního pixelu.

Můžete ho použít k výpočtu světelných a spekulárních příspěvků v tangens prostoru.

Výstup:

Output: float3
Vektor z aktuálního pixelu do zdroje světla.
Nic
Svět normální Normální povrch aktuálního pixelu ve světovém prostoru.

Můžete ho použít k výpočtu světelných příspěvků a odrazů ve světě.

Výstup

Output: float3
Normální povrch aktuálního pixelu.
Nic
Pozice světa Pozice aktuálního pixelu ve světovém prostoru.

Výstup

Output: float4
Pozice aktuálního pixelu.
Nic

Uzly parametru

V Návrháři shaderu představují uzly parametrů vstupy do shaderu, který je pod kontrolou aplikace na bázi kreslení, například vlastnosti materiálu, směrová světla, umístění kamery a čas. Vzhledem k tomu, že tyto parametry můžete změnit při každém volání kreslení, můžete použít stejný shader k tomu, abyste objektu dali různé vzhledy.

Referenční informace k uzlu parametru

Uzel Detaily Vlastnosti
Kamera pozice světa Pozice kamery ve světovém vesmíru.

Výstup:

Output: float4
Pozice kamery.
Nic
Směr světla Vektor, který definuje směr, ve kterém se světlo přetypuje ze zdroje světla ve světě.

Můžete to použít k výpočtu osvětlení a specifika příspěvků ve světě vesmíru.

Výstup:

Output: float3
Vektor z aktuálního pixelu do zdroje světla.
Nic
Okolí materiálu Difuzní barevný příspěvek aktuálního pixelu, který je přiřazen nepřímým osvětlením.

Difuzní barva pixelu simuluje, jak osvětlení komunikuje s hrubými povrchy. Pomocí parametru Material Ambient můžete odhadnout, jak nepřímé osvětlení přispívá k vzhledu objektu v reálném světě.

Výstup:

Output: float4
Difuzní barva aktuálního pixelu, která je způsobená nepřímým osvětlením – tedy okolím.
Přístup
Public to enable the property to be set from the Model Editor; otherwise, Private.

Hodnota
Difuzní barva aktuálního pixelu, která je způsobená nepřímým osvětlením – tedy okolím.
Materiál difuzní Barva, která popisuje, jak aktuální pixel difuzní přímé osvětlení.

Difuzní barva pixelu simuluje, jak osvětlení komunikuje s hrubými povrchy. Pomocí parametru Material Difuzor můžete změnit způsob, jakým aktuální pixel difuzní přímé osvětlení – to znamená směrové, bodové a bodové světlo.

Výstup:

Output: float4
Barva, která popisuje, jak aktuální pixel difuzní přímé osvětlení.
Přístup
Public to enable the property to be set from the Model Editor; otherwise, Private.

Hodnota
Barva, která popisuje, jak aktuální pixel difuzní přímé osvětlení.
Materiál Emissive Barevný příspěvek aktuálního pixelu, který je přiřazen k osvětlení, které dodává sám sobě.

Můžete ho použít k simulaci záře objektu; to znamená objekt, který dodává své vlastní světlo. Toto světlo nemá vliv na jiné objekty.

Výstup:

Output: float4
Barevný příspěvek aktuálního pixelu, který je způsoben vlastním osvětlením.
Přístup
Public to enable the property to be set from the Model Editor; otherwise, Private.

Hodnota
Barevný příspěvek aktuálního pixelu, který je způsoben vlastním osvětlením.
Material Specular Barva, která popisuje, jak aktuální pixel odráží přímé osvětlení.

Specifikovaná barva pixelu simuluje, jak osvětlení komunikuje s hladkými zrcadlovými povrchy. Pomocí parametru Material Specular můžete změnit způsob, jakým aktuální pixel odráží přímé osvětlení – to znamená směrové, bodové a bodové světlo.

Výstup:

Output: float4
Barva, která popisuje, jak aktuální pixel odráží přímé osvětlení.
Přístup
Veřejná , aby byla vlastnost nastavena z Editoru modelů, jinak private.

Hodnota
Barva, která popisuje, jak aktuální pixel odráží přímé osvětlení.
Materiálový specifika výkonu Skalární hodnota, která popisuje intenzitu specifikátorů.

Čím větší je specularová síla, tím silnější a dalekosáhlý specular zvýraznění se stane.

Výstup:

Output: float
Exponenciální termín, který popisuje intenzitu specifikátorů na aktuálním pixelu.
Přístup
Public to enable the property to be set from the Model Editor; otherwise, Private.

Hodnota
Exponent, který definuje intenzitu specifikátorů na aktuálním pixelu.
Normalizovaný čas Doba v sekundách normalizovaná do rozsahu [0, 1], tak, že když čas dosáhne 1, obnoví se na 0.

Můžete ho použít jako parametr ve výpočtech shaderu, například k animaci souřadnic textury, hodnot barev nebo jiných atributů.

Výstup:

Output: float
Normalizovaný čas v sekundách.
Nic
Time Doba v sekundách.

Můžete ho použít jako parametr ve výpočtech shaderu, například k animaci souřadnic textury, hodnot barev nebo jiných atributů.

Výstup:

Output: float
Čas v sekundách.
Nic

Uzly textury

V Návrháři shaderu vzorují uzly textury různé typy textur a geometrie a vytvářejí nebo transformují souřadnice textury. Textury poskytují barevné a osvětlení podrobností o objektech.

Odkaz na uzel textury

Uzel Detaily Vlastnosti
Ukázka mapy datové krychle Vezme vzorek barvy z mapy datové krychle na zadaných souřadnicích.

Mapu datové krychle můžete použít k poskytnutí barevných podrobností pro efekty odrazu nebo použití u kulového objektu textury, která má menší zkreslení než 2D textura.

Vstupní:

UVW: float3
Vektor, který určuje umístění v datové krychli textury, kde se odebere vzorek. Vzorek se používá tam, kde tento vektor protíná datovou krychli.

Výstup:

Output: float4
Ukázka barvy.
Textury
Registr textury, který je přidružený k vzorkovníku.
Ukázka normální mapy Vezme normální vzorek z 2D normální mapy na zadaných souřadnicích.

Pomocí normální mapy můžete simulovat vzhled dalších geometrických podrobností na povrchu objektu. Normální mapy obsahují zabalená data, která představují vektor jednotky místo barevných dat.

Vstupní:

UV: float2
Souřadnice, ve kterých je vzorek pořízen.

Výstup:

Output: float3
Normální vzorek.
Úprava osy
Faktor, který se používá k úpravě šikovnosti normálního vzorku mapy.

Textury
Registr textury, který je přidružený k vzorkovníku.
Pan UV Posune zadané souřadnice textury jako funkci času.

Můžete ho použít k přesunutí textury nebo normální mapy přes povrch objektu.

Vstupní:

UV: float2
Souřadnice, které se mají posunout.

Time: float
Doba posouvání v sekundách.

Výstup:

Output: float2
Posunované souřadnice.
Rychlost X
Počet texelů, které jsou posunuty podél osy x za sekundu.

Rychlost Y
Počet texelů, které jsou posunuty podél osy y za sekundu.
ParalaxNÍ UV Přestěhuje zadané souřadnice textury jako funkci výšky a úhlu pohledu.

Účinek, který se vytvoří, se označuje jako mapování paralaxů nebo mapování virtuálního přesunutí. Můžete ho použít k vytvoření iluze hloubky na rovném povrchu.

Vstupní:

UV: float2
Souřadnice pro přemístění.

Height: float
Hodnota mapy výšky, která je přidružená ke UV souřadnicím.

Výstup:

Output: float2
Vytěsněné souřadnice.
Hloubka roviny
Hloubka odkazu pro paralaxní efekt. Ve výchozím nastavení je hodnota 0,5. Menší hodnoty zdvižou texturu; větší hodnoty se ponoří do povrchu.

Hloubkové měřítko
Měřítko paralaxního efektu. Díky tomu je zjevná hloubka více nebo méně výrazná. Typické hodnoty jsou v rozsahu od 0,02 do 0,1.
Otočit UV Otočí zadané souřadnice textury kolem centrálního bodu jako funkce času.

Můžete ho použít ke otočení textury nebo normální mapy na povrchu objektu.

Vstupní:

UV: float2
Souřadnice, které se mají otočit.

Time: float
Doba posouvání v sekundách.

Výstup:

Output: float2
Otočené souřadnice.
Střed X
Souřadnice x, která definuje střed otáčení.

Střed Y
Souřadnice y, která definuje střed otáčení.

Rychlost
Úhel v radiánech, o který se textura otočí za sekundu.
Souřadnice textury Souřadnice textury aktuálního pixelu.

Souřadnice textury jsou určeny interpolací mezi atributy souřadnic textury blízkých vrcholů. Můžete si to představit jako pozici aktuálního pixelu v prostoru textury.

Výstup:

Output: float2
Souřadnice textury.
Nic
Rozměry textury Vypíše šířku a výšku 2D texturové mapy.

Rozměry textury můžete použít k zvážení šířky a výšky textury ve shaderu.

Výstup:

Output: float2
Šířka a výška textury vyjádřená jako vektor. Šířka je uložena v prvním prvku vektoru. Výška je uložena ve druhém prvku.
Textury
Registr textury, který je spojený s rozměry textury.
Texel Delta Výstupem je rozdíl (vzdálenost) mezi texely 2D texturové mapy.

Pomocí texel delta můžete vzorek sousedních hodnot texelu v shaderu.

Výstup:

Output: float2
Delta (vzdálenost) od texelu k dalšímu texelu (pohybující se diagonálně ve kladném směru) vyjádřená jako vektor v normalizovaném prostoru textury. Pozice všech sousedních texelů můžete odvodit selektivním ignorováním nebo negováním souřadnic U nebo V delta.
Textury
Registr textury, který je spojený s texel delta.
Ukázka textury Vezme vzorek barvy z 2D texturové mapy na zadaných souřadnicích.

Pomocí mapy textury můžete poskytnout podrobnosti o barvě na povrchu objektu.

Vstupní:

UV: float2
Souřadnice, ve kterých je vzorek pořízen.

Výstup:

Output: float4
Ukázka barvy.
Textury
Registr textury, který je přidružený k vzorkovníku.

Matematické uzly

Matematické uzly v Návrháři shaderů provádějí algebraické, logické, trigonometrické a další matematické operace.

Poznámka:

Při práci s matematickými uzly v Návrháři shaderu je povýšení typu zvlášť zřejmé. Další informace o tom, jak povýšení typu ovlivňuje vstupní parametry, naleznete v části Povýšení vstupů .

Referenční informace k matematickému uzlu

Uzel Detaily Vlastnosti
Abs Vypočítá absolutní hodnotu zadaného vstupu na komponentu.

Pro každou komponentu vstupu Xjsou záporné hodnoty kladné, takže každá komponenta výsledku má kladnou hodnotu.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty, pro které chcete určit absolutní hodnotu.

Output:

Output: stejné jako vstup X
Absolutní hodnota na součást.
Nic
Přidat Vypočítá součet zadaných vstupů na komponentu.

Pro každou komponentu výsledku se sčítají odpovídající komponenty vstupu X a vstupu Y .

Vstupní:

X: float, float2, float3nebo float4
Jedna z hodnot, které se mají sečíst.

Y: stejné jako vstup X
Jedna z hodnot, které se mají sečíst.

Výstup:

Output: stejné jako vstup X
Součet na součást.
Nic
Ceil Vypočítá strop zadaného vstupu na komponentu.

Strop hodnoty je nejmenší celé číslo, které je větší nebo rovno této hodnotě.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty, pro které se má vypočítat strop.

Výstup:

Output: stejné jako vstup X
Strop na součást.
Nic
Svorku Uchytá každou součást zadaného vstupu do předdefinovaného rozsahu.

Pro každou komponentu výsledku se hodnoty, které jsou pod definovaným rozsahem, rovná minimální hodnotě v oblasti, hodnoty nad definovanou oblast se vytvoří stejně jako maximální hodnota v oblasti a hodnoty, které jsou v rozsahu, se nezmění.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty, které se mají upínat.

Výstup:

Output: stejné jako vstup X
Upínací hodnota na součást.
Max
Největší možná hodnota v rozsahu.

Min.
Nejmenší možná hodnota v rozsahu.
Protože Vypočítá kosinus zadaného vstupu v radiánech na komponentu.

Pro každou součást výsledku se vypočítá kosinus odpovídající komponenty, která je poskytována v radiánech. Výsledek obsahuje komponenty, které mají hodnoty v rozsahu [-1, 1].

Vstupní:

X: float, float2, float3nebo float4
Hodnoty pro výpočet kosinusu v radiánech.

Výstup:

Output: stejné jako vstup X
Kosinus na součást.
Nic
Kříž Vypočítá křížový součin zadaných vektorů se třemi komponentami.

Křížový součin můžete použít ke výpočtu normálního povrchu definovaného dvěma vektory.

Vstupní:

X: float3
Vektor na levé straně křížového výrobku.

Y: float3
Vektor na pravé straně křížového výrobku.

Výstup:

Output: float3
Křížový produkt.
Nic
Vzdálenost Vypočítá vzdálenost mezi zadanými body.

Výsledkem je kladná skalární hodnota.

Vstupní:

X: float, float2, float3nebo float4
Jeden z bodů k určení vzdálenosti mezi.

Y: stejné jako vstup X
Jeden z bodů k určení vzdálenosti mezi.

Výstup:

Output: stejné jako vstup X
Vzdálenost.
Nic
Rozdělit Vypočítá podíl komponentně-moudrý podíl zadaných vstupů.

Pro každou součást výsledku je odpovídající komponenta vstupu X rozdělena odpovídající komponentou vstupu Y.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty dividend.

Y: stejné jako vstup X
Hodnoty dělitele.

Výstup:

Output: stejné jako vstup X
Podíl na komponentě.
Nic
Dot Vypočítá tečkovaný součin zadaných vektorů.

Výsledkem je skalární hodnota. K určení úhlu mezi dvěma vektory můžete použít tečkovaný součin.

Vstupní:

X: float, float2, float3nebo float4
Jeden z podmínek.

Y: stejné jako vstup X
Jeden z podmínek.

Výstup:

Output: float
Tečkovaný produkt.
Nic
Podlaze Vypočítá podlahu zadaného vstupu na součást.

Pro každou součást výsledku je jeho hodnota největší celé celé číslo, která je menší nebo rovna odpovídající komponentě vstupu. Každá komponenta výsledku je celé celé číslo.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty, pro které se má vypočítat podlaha.

Výstup:

Output: stejné jako vstup X
Podlaha na součást.
Nic
Fmod Vypočítá moduly pro jednotlivé komponenty (zbytek) zadaných vstupů.

Pro každou komponentu výsledku se od odpovídající složky vstupu YXodečte násobek určitého integrálu (celé číslo), přičemž zbytek ponechá zbytek. Násobek m je zvolen tak, aby zbytek byl menší než odpovídající součást vstupu Y a má stejné znaménko jako odpovídající součást vstupu X. Například fmod(-3.14, 1.5) je -0.14.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty dividend.

Y: stejné jako vstup X
Hodnoty dělitele.

Výstup:

Output: stejné jako vstup X
Moduly na komponentu.
Nic
Frac Odebere celočíselnou (celočíselnou) část zadaného vstupu na součást.

Pro každou součást výsledku se odebere integrální část odpovídající komponenty vstupu, ale zlomková část a znaménko se zachovají. Tato desetinná hodnota spadá do rozsahu [0, 1). Například hodnota -3,14 se stane hodnotou -0,14.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty, pro které chcete vypočítat zlomkovou část.

Výstup:

Output: stejné jako vstup X
Zlomková část na součást.
Nic
Lerp Lineární interpolace. Vypočítá vážený průměr jednotlivých součástí zadaných vstupů.

Pro každou součást výsledku vážený průměr odpovídajících součástí vstupů X a Y. Hmotnost je poskytována Percentskalárem a je jednotně použita pro všechny komponenty. Můžete ho použít k interpolaci mezi body, barvami, atributy a dalšími hodnotami.

Vstupní:

X: float, float2, float3nebo float4
Původní hodnota. Pokud Percent je nula, výsledek se rovná tomuto vstupu.

Y: stejné jako vstup X
Hodnota terminálu. Pokud Percent je jedna, výsledek se rovná tomuto vstupu.

Percent: float
Skalární váha vyjádřená jako procento vzdálenosti od vstupu X ke vstupu Y.

Výstup:

Output: stejné jako vstup X
Hodnota, která se shoduje se zadanými vstupy.
Nic
Násobit sčítání Vypočítá součin-moudrý násobení zadaných vstupů.

Pro každou součást výsledku se součin odpovídajících součástí vstupů M a A přidá se do odpovídající součásti vstupu B. Tato sekvence operací se nachází ve běžných vzorcích– například ve vzorci sklonu bodu čáry a ve vzorci pro škálování a následné zkreslení vstupu.

Vstupní:

M: float, float2, float3nebo float4
Jedna z hodnot, které se mají vynásobit.

A: stejné jako vstup M
Jedna z hodnot, které se mají vynásobit.

B: stejné jako vstup M
Hodnoty, které se přidají k součinu ostatních dvou vstupů.

Výstup:

Output: stejné jako vstup M
Výsledek násobení pro jednotlivé součásti.
Nic
Max Vypočítá maximální počet zadaných vstupů v komponentě.

Pro každou součást výsledku se převezme větší z odpovídajících součástí vstupů.

Vstupní:

X: float, float2, float3nebo float4
Jedna z hodnot, pro které se má vypočítat maximum.

Y: stejné jako vstup X
Jedna z hodnot, pro které se má vypočítat maximum.

Výstup:

Output: stejné jako vstup X
Maximální hodnota na součást.
Nic
Min. Vypočítá minimální počet zadaných vstupů.

Pro každou součást výsledku se převezme menší z odpovídajících součástí vstupů.

Vstupní:

X: float, float2, float3nebo float4
Jedna z hodnot, pro které se má vypočítat minimum.

Y: stejné jako vstup X
Jedna z hodnot, pro které se má vypočítat minimum.

Výstup:

Output: stejné jako vstup X
Minimální hodnota na součást.
Nic
Násobit Vypočítá součin komponentně zadaných vstupů.

Pro každou komponentu výsledku se odpovídající komponenty vstupů X a Y společně vynásobí.

Vstupní:

X: float, float2, float3nebo float4
Jedna z hodnot, které se mají vynásobit.

Y: stejné jako vstup X
Jedna z hodnot, které se mají vynásobit.

Výstup:

Output: stejné jako vstup X
Produkt pro každou součást.
Nic
Normalizovat Normalizuje zadaný vektor.

Normalizovaný vektor zachovává směr původního vektoru, ale ne jeho velikost. Normalizované vektory můžete použít ke zjednodušení výpočtů, kdy velikost vektoru není důležitá.

Vstupní:

X: float2, float3nebo float4
Vektor, který se má normalizovat.

Výstup:

Output: stejné jako vstup X
Normalizovaný vektor.
Nic
Jedna minus Vypočítá rozdíl mezi 1 a zadaným vstupem na komponentu.

Pro každou součást výsledku se odpovídající komponenta vstupu odečte od 1.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty, které se mají odečíst od hodnoty 1.

Výstup:

Output: stejné jako vstup X
Rozdíl mezi 1 a zadaným vstupem na komponentu.
Nic
Výkon Vypočítá exponentiaci (mocninu) zadaných vstupů.

Pro každou součást výsledku je odpovídající komponenta vstupu X vyvolána na mocninu odpovídající komponenty vstupu Y.

Vstupní:

X: float, float2, float3nebo float4
Základní hodnoty

Y: stejné jako vstup X
Exponentní hodnoty.

Výstup:

Output: stejné jako vstup X
Exponenciální hodnota na součást.
Nic
Nasycení Uchytá každou součást zadaného vstupu do rozsahu [0, 1].

Tento rozsah můžete použít k reprezentaci procent a dalších relativních měření ve výpočtech. Pro každou součást výsledku se odpovídající hodnoty komponent vstupu, které jsou menší než 0, vytvoří 0, hodnoty, které jsou větší než 1, se rovná 1 a hodnoty, které jsou v rozsahu, se nezmění.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty, které mají být nasyceny.

Výstup:

Output: stejné jako vstup X
Sytá hodnota na součást.
Nic
Hřích Vypočítá sinus zadaného vstupu v radiánech na komponentu.

Pro každou součást výsledku se vypočítá sinus odpovídající komponenty, která je uvedena v radiánech. Výsledek obsahuje komponenty, které mají hodnoty v rozsahu [-1, 1].

Vstupní:

X: float, float2, float3nebo float4
Hodnoty pro výpočet sinusu v radiánech.

Výstup:

Output: stejné jako vstup X
Sinus na součást.
Nic
Sqrt Vypočítá druhou odmocninu zadaného vstupu na komponentu.

Pro každou součást výsledku se vypočítá druhá odmocnina odpovídající komponenty.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty, pro které se má vypočítat druhou odmocninu.

Výstup:

Output: stejné jako vstup X
Druhá odmocnina na součást.
Nic
Subtract Vypočítá rozdíl komponentně-moudrých zadaných vstupů.

Pro každou součást výsledku je odpovídající komponenta vstupu Y odečtena od odpovídající složky vstupu X. Můžete ho použít k výpočtu vektoru, který se rozšiřuje z prvního vstupu na druhý.

Vstupní:

X: float, float2, float3nebo float4
Hodnoty, které se mají odečíst.

Y: stejné jako vstup X
Hodnoty, které se mají odečíst od vstupu X.

Výstup:

Output: stejné jako vstup X
Rozdíl na jednotlivé součásti.
Nic
Transformace 3D vektoru Transformuje zadaný 3D vektor na jiný prostor.

Můžete ho použít k přenesení bodů nebo vektorů do společného prostoru, abyste je mohli použít k provádění smysluplných výpočtů.

Vstupní:

Vector: float3
Vektor, který se má transformovat.

Výstup:

Output: float3
Transformovaný vektor.
Ze systému
Nativní prostor vektoru.

Do systému
Prostor pro transformaci vektoru.

Uzly nástroje

V Návrháři shaderů představují uzly nástrojů běžné, užitečné výpočty shaderu, které se nevejdou do jiných kategorií. Některé utility uzly provádějí jednoduché operace, jako jsou připojení vektorů dohromady nebo výběr výsledků podmíněně, a jiné provádějí složité operace, jako jsou výpočetní příspěvky osvětlení podle oblíbených modelů osvětlení.

Referenční informace k uzlu nástroje

Uzel Detaily Vlastnosti
Připojit vektor Vytvoří vektor připojením zadaných vstupů dohromady.

Vstupní:

Vector: float, float2nebo float3
Hodnoty, ke které se mají připojit.

Value to Append: float
Hodnota, která se má připojit.

Výstup:

Output: float2, float3nebo float4 v závislosti na typu vstupu Vector
Nový vektor.
Nic
Fresnelovy Vypočítá fresnelový pád na základě zadaného normálního povrchu.

Fresnel fall-off hodnota vyjadřuje, jak přesně povrch normální aktuální pixel odpovídá vektoru zobrazení. Při zarovnání vektorů je výsledek funkce 0; výsledek se zvyšuje, protože vektory jsou méně podobné, a dosáhne svého maxima, když jsou vektory orthogonální. Můžete ho použít k tomu, aby byl efekt více nebo méně zjevný na základě vztahu mezi orientací aktuálního pixelu a fotoaparátem.

Vstupní:

Surface Normal: float3
Normální povrch aktuálního pixelu definovaný v tangensu aktuálního pixelu. Můžete ho použít k perturbování zjevného povrchu normálního, stejně jako v normálním mapování.

Výstup:

Output: float
Odrazivost aktuálního pixelu.
Exponent
Exponent, který se používá k výpočtu Fresnel fall-off.
Pokud Podmíněně zvolí jeden ze tří potenciálních výsledků pro každou komponentu. Podmínka je definována vztahem mezi dvěma dalšími zadanými vstupy.

Pro každou komponentu výsledku je zvolena odpovídající komponenta jednoho ze tří potenciálních výsledků na základě vztahu mezi odpovídajícími součástmi prvních dvou vstupů.

Vstupní:

X: float, float2, float3nebo float4
Hodnota na levé straně, která se má porovnat.

Y: stejný typ jako vstup X
Hodnota na pravé straně, která se má porovnat.

X > Y: stejný typ jako vstup X
Hodnoty, které jsou vybrány, pokud X je větší než Y.

X = Y: stejný typ jako vstup X
Hodnoty, které jsou vybrány, pokud X jsou rovny Y.

X < Y: stejný typ jako vstup X
Hodnoty, které jsou vybrány, pokud X je menší než Y.

Výstup:

Output: float3
Zvolený výsledek na komponentu.
Nic
Lambert Vypočítá barvu aktuálního pixelu podle modelu osvětlení Lambert pomocí zadaného normálního povrchu.

Tato barva je součet okolních barev a difuzních světelných příspěvků pod přímým osvětlením. Okolní barva se blíží celkovému příspěvku nepřímého osvětlení, ale vypadá ploché a nudné bez pomoci dalšího osvětlení. Difuzní osvětlení pomáhá přidat k objektu tvar a hloubku.

Vstupní:

Surface Normal: float3
Normální povrch aktuálního pixelu definovaný v tangensu aktuálního pixelu. Můžete ho použít k perturbování zjevného povrchu normálního, stejně jako v normálním mapování.

Diffuse Color: float3
Difuzní barva aktuálního pixelu , obvykle barva bodu. Pokud není zadaný žádný vstup, výchozí hodnota je bílá.

Výstup:

Output: float3
Difuzní barva aktuálního pixelu.
Nic
Vektor masky Maskuje součásti zadaného vektoru.

Můžete ho použít k odebrání konkrétních barevných kanálů z barevné hodnoty nebo k zabránění tomu, aby konkrétní součásti mohly mít vliv na následné výpočty.

Vstupní:

Vector: float4
Vektor, který se má maskovat.

Výstup:

Output: float4
Maskovaný vektor.
Červená / X
Nepravda k maskování červené komponenty (x) v opačném případě true.

Zelená / Y
Nepravda , pokud chcete maskovat zelenou (y) součást, jinak true.

Modrá / Z
Nepravda k maskování modré komponenty (z) v opačném případě true.

Alfa / W
False k maskování alfa (w) komponenty; jinak true.
vektor Reflexe ion Vypočítá vektor odrazu pro aktuální pixel v tangens prostoru na základě polohy kamery.

Můžete ho použít k výpočtu odrazů, souřadnic mapy krychle a specifikátorů osvětlení.

Vstupní:

Tangent Space Surface Normal: float3
Normální povrch aktuálního pixelu definovaný v tangensu aktuálního pixelu. Můžete ho použít k perturbování zjevného povrchu normálního, stejně jako v normálním mapování.

Výstup:

Output: float3
Vektor odrazu.
Nic
Specifika Vypočítá specifikovaný příspěvek osvětlení podle modelu osvětlení Phong pomocí zadaného normálního povrchu.

Specular osvětlení dává lesklý, reflexní vzhled objektu, například voda, plast nebo kovy.

Vstupní:

Surface Normal: float3
Normální povrch aktuálního pixelu definovaný v tangensu aktuálního pixelu. Můžete ho použít k perturbování zjevného povrchu normálního, stejně jako v normálním mapování.

Výstup:

Output: float3
Barevný příspěvek specifikátorů.
Nic

Uzly filtru

V Návrháři shaderu transformují uzly filtru vstup ( například barvu nebo vzorku textury) na figurativní hodnotu barvy. Tyto figurativní hodnoty barev se běžně používají v neforealistickém vykreslování nebo jako komponenty v jiných vizuálních efektech.

Odkaz na uzel filtru

Uzel Detaily Vlastnosti
Rozostření Rozostření pixelů v texturě pomocí Gaussovské funkce.

To můžete použít ke snížení barevného detailu nebo šumu v texturě.

Vstupní:

UV: float2
Souřadnice texelu, který se má testovat.

Výstup:

Output: float4
Rozmazaná barevná hodnota.
Textury
Registr textury přidružený k vzorkovníku, který se používá při rozmazaní.
Desaturace Zmenšuje množství barev v zadané barvě.

Při odebrání barvy se hodnota barvy blíží ekvivalentu šedé škály.

Vstupní:

RGB: float3
Barva, která se má desaturovat.

Percent: float
Procento barvy, které se má odebrat, vyjádřené jako normalizovaná hodnota v rozsahu [0, 1].

Výstup:

Output: float3
Desatuovaná barva.
Světlostí
Váhy, které jsou dány červeným, zeleným a modrým barevným komponentám.
Detekce hraničních zařízení Rozpozná hrany v texturě pomocí detektoru hrany Canny. Hraniční pixely jsou výstupem bílé; needge pixely jsou výstupy jako černé.

Tuto možnost můžete použít k identifikaci okrajů v texturě, takže můžete použít další efekty pro zpracování okrajových pixelů.

Vstupní:

UV: float2
Souřadnice texelu, který se má testovat.

Výstup:

Output: float4
Bílá, pokud je texel na okraji; jinak, černá.
Textury
Registr textury přidružený k vzorkovníku, který se používá při detekci hran.
Zostřit Zaostřuje texturu.

Pomocí tohoto příkazu můžete zvýraznit jemné podrobnosti v texturě.

Vstupní:

UV: float2
Souřadnice texelu, který se má testovat.

Výstup:

Output: float4
Rozmazaná barevná hodnota.
Textury
Registr textury přidružený k vzorkovníku, který se používá při zostření.

Další kroky

Další informace najdete v tématu Vytváření shaderů pomocí Návrháře shaderu v sadě Visual Studio.