> ## Name

> dot - returns the scalar dot product of two vectors

> ## Synopsis

>     float  dot(float  a, float  b);
>     float  dot(float1 a, float1 b);
>     float  dot(float2 a, float2 b);
>     float  dot(float3 a, float3 b);
>     float  dot(float4 a, float4 b);

>     half   dot(half  a, half  b);
>     half   dot(half1 a, half1 b);
>     half   dot(half2 a, half2 b);
>     half   dot(half3 a, half3 b);
>     half   dot(half4 a, half4 b);

>     fixed  dot(fixed  a, fixed  b);
>     fixed  dot(fixed1 a, fixed1 b);
>     fixed  dot(fixed2 a, fixed2 b);
>     fixed  dot(fixed3 a, fixed3 b);
>     fixed  dot(fixed4 a, fixed4 b);

> ## Parameters

> a
>   First vector.
> b
>   Second vector.

> ## Description

> Returns the scalar dot product of two same-typed vectors a and b.

> ## Reference Implementation

> dot for float4 vectors could be implemented this way:

>     float dot(float4 a, float4 b)
>     {
>       return a.x*b.x + a.y*b.y + a.z*b.z + a.w*b.w;
>     }

> ## Profile Support

> dot is supported in all profiles.

> The fixed3 dot product is very efficient in the fp20 and fp30 profiles.

> The float3 and float4 dot products are very efficient in the vp20, vp30, vp40, arbvp1, fp30, fp40, and arbfp1 profiles.

> The float2 dot product is very efficient in the fp40 profile. In optimal circumstances, two two-component dot products can sometimes be performed at the four-component and three-component dot product rate.

> ## See Also

> cross, lit, mul