Sdílet prostřednictvím


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

Pokyny shaderu pixelů