Direct3D 8 - Pixel Shader - Instructions - mul

Last edited 2026-02-20


The mul instruction assigns the sum of two other values ​​to the selected value.


The mul syntax looks like this:

mul x, y, z;


(This instruction returns a value from the given mathematical function: x = y * z)


x: The value to be assigned to the multiplication of y and z.

y: The first value to be used for the multiplication.

z: The second value to be used for the multiplication.


Example code:


texture T_Image;                            // <- Main texture

technique tech_main
{
    pass P0
    {
        Texture[0] = <T_Image>;
        PixelShader = asm
        {
            ps.1.1;                         // <- Pixel shader version


            def c0, 0.5, 0.5, 0.5, 1.0;     // <- Declaration of a constant, we treat it as a color (r, g, b, a)

            tex t0;                         // <- Load the T_Image texture
            
            mul r0, c0, t0;                 // <- Assign the multiplication of colors from the texture and from the constant to the final result: result.rgba = const.rgba * texture.rgba
            mov r0.a, t0.a;
        };
    }
}


This example requires the following in the .XML file:
  • Flag <dx8>yes</dx8>


(More information about .XML files can be found here)

Details table:

Type

Instruction

Description

Instruction slots

ps.1.0

ps.1.1

ps.1.2

ps.1.3

ps.1.4

Note

asm

mul

Multiply

1

Yes

Yes

Yes

Yes

Yes

Uses multiplication and addition in one instruction slot.

Created with the Personal Edition of HelpNDoc: Full-featured multi-format Help generator