Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Use source register modifiers to change the value read from a register before an instruction runs. The contents of a source register are left unchanged. Modifiers are useful for adjusting the range of register data in preparation for the instruction. A set of modifiers called selectors copies or replicates the data from a single channel (r,g,b,a) into the other channels.
ps_1_1 - ps_1_4
This table identifies the versions that support each modifier:
| Source register modifiers | Syntax | Version 1_1 | Version 1_2 | Version 1_3 | Version 1_4 |
|---|---|---|---|---|---|
| bias | register_bias | X | X | X | X |
| invert | 1 - register | X | X | X | X |
| negate | - register | X | X | X | X |
| scale by 2 | register_x2 | X | |||
| signed scaling | register_bx2 | X | X | X | X |
| texld and texcrd modifiers | register_d* | X | X | X | X |
| source register swizzling | register.xyzw | X | X | X | X |
Source register modifiers can be used only on arithmetic instructions. They cannot be used on texture address instructions. The exception to this is the scale by 2 modifier. For version 1_1, signed scale can be used on the source argument of any texm* instruction. For version 1_2 or 1_3, signed scale can be used on the source argument of any texture address instruction.
Some modifier specific restrictions:
- Negate can be combined with either the bias, signed scaling, or scalex2 modifier. When combined, negate is run last.
- Invert cannot be combined with any other modifier.
- Invert, negate, bias, signed scaling, and scalex2 can be combined with any of the selectors.
- Source register modifiers should not be used on constant registers because they will cause undefined results. For version 1_4, modifiers on constants are not allowed and will fail validation.
ps_2_0 and Above
For version ps_2_0 and up, the number of modifiers has been simplified.
Negate
Negate the contents of the source register.
| Component modifier | Description |
|---|---|
| - r | Source negation |
The negate modifier cannot be used on second source register of these instructions: m3x2 - ps, m3x3 - ps, m3x4 - ps, m4x3 - ps, and m4x4 - ps.
| Pixel shader versions | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
|---|---|---|---|---|---|
| - | x | x | x | x | x |
Absolute Value
Take the absolute value of the register.
| Pixel shader versions | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
|---|---|---|---|---|---|
| abs | x | x |
If any version 3 shader reads from one or more constant float registers (c#), one of the following must be true.
- All of the constant floating-point registers must use the abs modifier.
- None of the constant floating-point registers can use the abs modifier.
Related topics