Precise

Per-instruction disabling of arithmetic refactoring.

precise (component mask)

 

This modifier requires the global shader flag "REFACTORING_ALLOWED". When REFACTORING_ALLOWED is present, individual component results of individual instructions can be forced to remain precise or not-refactorable by compilers or drivers. If components of a mad instruction are tagged as precise, the hardware must execute a mad instruction or the exact equivalent, and it cannot split it into a multiply followed by an add. Conversely, a multiply followed by an add, where either or both are flagged as precise, cannot be merged into a fused mad.

If REFACTORING_ALLOWED has not been specified, the precise modifier is not allowed. It is not needed because everything is precise. The precise modifier affects any operation, not just arithmetic.

Minimum Shader Model

This modifier is supported in the following shader models.

Shader Model Supported
Shader Model 5 yes
Shader Model 4.1 no
Shader Model 4 yes
Shader Model 3 (DirectX HLSL) no
Shader Model 2 (DirectX HLSL) no
Shader Model 1 (DirectX HLSL) no

 

Shader Model 5 Instruction Modifiers