dot

> # NAME

> dot - returns the scalar dot product of two vectors

> # SYNOPSIS

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

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

>       fixed  dot(fixed  a, fixed  b);
>       fixed1 dot(fixed1 a, fixed1 b);
>       fixed2 dot(fixed2 a, fixed2 b);
>       fixed3 dot(fixed3 a, fixed3 b);
>       fixed4 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