Modifikátory pro ps_1_X
Modifikátory instrukcí ovlivňují výsledek instrukce před zápisem do cílového registru. Můžete je například použít k vynásobení nebo dělení výsledku faktorem dvou nebo k upnutí výsledku mezi nulou a jedním. Modifikátory instrukcí se použijí po spuštění instrukce, ale před zápisem výsledku do cílového registru.
Níže je uveden seznam modifikátorů.
Modifikátor | Popis | Syntax | Verze 1_1 | Verze 1_2 | Verze 1_3 | Verze 1_4 |
---|---|---|---|---|---|---|
_x2 | Násobit číslem 2 | instruction_x2 | X | X | X | X |
_x4 | Násobení číslem 4 | instruction_x4 | X | X | X | X |
_x8 | Násobení číslem 8 | instruction_x8 | X | |||
_d2 | Dělit 2 | instruction_d2 | X | X | X | X |
_d4 | Dělit 4 | instruction_d4 | X | |||
_d8 | Dělit 8 | instruction_d8 | X | |||
_seděl | Nasycení (upnutí z 0 a 1) | instruction_sat | X | X | X | X |
- Modifikátor násobení vynásobí data registru mocninou dvou po přečtení. To je stejné jako posun doleva.
- Modifikátor dělení rozdělí data registru o mocnině dvou po přečtení. To je stejné jako posun doprava.
- Modifikátor nasycení uchytí rozsah hodnot registru od nuly do jedné.
Modifikátory instrukcí lze použít u aritmetických instrukcí. Nelze je použít u pokynů k adrese textury.
Modifikátor násobení
Tento příklad načte cílový registr (dest) se součtem dvou barev ve zdrojových operandech (src0 a src1) a vynásobí výsledek dvěma.
add_x2 dest, src0, src1
Tento příklad kombinuje dva modifikátory instrukcí. Nejprve se přidají dvě barvy ve zdrojových operandech (src0 a src1). Výsledek se pak vynásobí dvěma a uchycením mezi 0,0 a 1,0 pro každou součást. Výsledek se uloží do cílového registru.
add_x2_sat dest, src0, src1
Modifikátor dělení
Tento příklad načte cílový registr (dest) se součtem dvou barev ve zdrojových operandech (src0 a src1) a vydělí výsledek dvěma.
add_d2 dest, src0, src1
Modifikátor sytých
U aritmetických instrukcí modifikátor sytosti uchytí výsledek této instrukce do rozsahu 0,0 až 1,0 pro každou součást. Následující příklad ukazuje, jak použít tento modifikátor instrukce.
dp3_sat r0, t0_bx2, v0_bx2 ; t0 is bump, v0 is light direction
K této operaci dochází po libovolném modifikátoru instrukce násobení nebo dělení. _sat se nejčastěji používá k upnutí výsledků produktu. Umožňuje však také konzistentní emulaci multipassových metod, kdy je vyrovnávací paměť rámce vždy v rozsahu 0 až 1, a multitextu syntaxe DirectX 6 a 7.0, ve které je sytost definována v každé fázi.
Tento příklad načte cílový registr (dest) se součtem dvou barev ve zdrojových operandech (src0 a src1) a uchytne výsledek do rozsahu 0,0 až 1,0 pro každou součást.
add_sat dest, src0, src1
Tento příklad kombinuje dva modifikátory instrukcí. Nejprve se přidají dvě barvy ve zdrojových operandech (src0 a src1). Výsledek se vynásobí dvěma a uchycenými mezi 0,0 a 1,0 pro každou součást. Výsledek se uloží do cílového registru.
add_x2_sat dest, src0, src1
Související témata
-
Pokyny shaderu pixelů