Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Instructieaanpassingen zijn van invloed op het resultaat van de instructie voordat deze in het doelregister wordt geschreven. Gebruik ze bijvoorbeeld om het resultaat te vermenigvuldigen of te delen met een factor van twee, of om het resultaat tussen nul en één te klemmen. Instructieaanpassingen worden toegepast nadat de instructie is uitgevoerd, maar voordat het resultaat naar het doelregister wordt geschreven.
Hieronder ziet u een lijst met de modifiers.
| Modifier | Beschrijving | Syntaxis | Versie 1_1 | Versie 1_2 | Versie 1_3 | Versie 1_4 |
|---|---|---|---|---|---|---|
| _x2 | Vermenigvuldigen met 2 | instruction_x2 | X | X | X | X |
| _x4 | Vermenigvuldigen met 4 | instruction_x4 | X | X | X | X |
| _x8 | Vermenigvuldigen met 8 | instruction_x8 | X | |||
| _d2 | Delen door 2 | instruction_d2 | X | X | X | X |
| _d4 | Delen door 4 | instruction_d4 | X | |||
| _d8 | Delen door 8 | instruction_d8 | X | |||
| _zaterdag | Verzadiging (klem van 0 en 1) | instruction_sat | X | X | X | X |
- De vermenigvuldigingsaanpassing vermenigvuldigt de registergegevens met een macht van twee nadat deze is gelezen. Dit is hetzelfde als een verschuiving naar links.
- De wijzigingsfunctie voor delen verdeelt de registergegevens door een macht van twee nadat deze is gelezen. Dit is hetzelfde als een verschuiving naar rechts.
- De verzadigingsmodifier klemt het bereik van registerwaarden van nul tot één.
Instructieaanpassingen kunnen worden gebruikt voor rekenkundige instructies. Ze kunnen niet worden gebruikt voor patroonadresinstructies.
Aanpassing vermenigvuldigen
In dit voorbeeld wordt het doelregister (dest) geladen met de som van de twee kleuren in de bronoperands (src0 en src1) en wordt het resultaat met twee vermenigvuldigd.
add_x2 dest, src0, src1
In dit voorbeeld worden twee instructieaanpassingen gecombineerd. Eerst worden er twee kleuren in de bronoperands (src0 en src1) toegevoegd. Het resultaat wordt vervolgens vermenigvuldigd met twee, en vastgeklemd tussen 0,0 en 1,0 voor elk onderdeel. Het resultaat wordt opgeslagen in het doelregister.
add_x2_sat dest, src0, src1
Wijziging delen
In dit voorbeeld wordt het doelregister (dest) geladen met de som van de twee kleuren in de bronoperands (src0 en src1) en wordt het resultaat door twee gedeeld.
add_d2 dest, src0, src1
Verzadigingsaanpassing
Voor rekenkundige instructies klemt de verzadigingsmodifier het resultaat van deze instructie in het bereik 0,0 tot 1,0 voor elk onderdeel. In het volgende voorbeeld ziet u hoe u deze instructieaanpassing gebruikt.
dp3_sat r0, t0_bx2, v0_bx2 ; t0 is bump, v0 is light direction
Deze bewerking vindt plaats na een vermenigvuldigen of delen instructie modifier. _sat wordt meestal gebruikt om de resultaten van het dot-product vast te klemmen. Het maakt echter ook een consistente emulatie mogelijk van multipass-methoden waarbij de framebuffer zich altijd in het bereik van 0 tot en met 1 bevindt en van de syntaxis van DirectX 6 en 7.0 multitexture, waarin verzadiging in elke fase wordt gedefinieerd.
In dit voorbeeld wordt het doelregister (dest) geladen met de som van de twee kleuren in de bronoperands (src0 en src1) en klemmen het resultaat in het bereik 0,0 tot 1,0 voor elk onderdeel.
add_sat dest, src0, src1
In dit voorbeeld worden twee instructieaanpassingen gecombineerd. Eerst worden er twee kleuren in de bronoperands (src0 en src1) toegevoegd. Het resultaat wordt vermenigvuldigd met twee en vastgeklemd tussen 0,0 en 1,0 voor elk onderdeel. Het resultaat wordt opgeslagen in het doelregister.
add_x2_sat dest, src0, src1
Verwante onderwerpen
-
instructies voor pixel-shader