# HLSL distance vs dot

This topic is 2188 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Doing point lights in one of my shaders recently. Someone with more experience then i suggested i use distance as opposed to dot for the attenuation calculations

so i wrote
attenFactors.z = dot(lightPos, lightPos);
attenFactors.y = sqrt(attenFactors.z);

this person suggested i rewrite it to
attenFactors.y = distance(lightPos);
attenFactors.z = attenFactors.y * attenFactors.y;

to me they are equivalent operations so i thought that mine would be slightly faster since im removing a multiplication. however we are talking 1 operation right?. so does it really matter?

##### Share on other sites
Functionally those are exactly the same. Dotting a vector with itself is equal summing the squares of its components, which is exactly what distance() will do. I would guess that once the code is optimized you'd also end up running the exact same instructions, at least on a modern GPU that uses scalar operations per-thread. Code like that usually comes from people writing for older GPU's where it might actually issue a dedicated dot product instruction. Edited by MJP

##### Share on other sites
i figured dot might be hardware accelerated, but what your saying is making me ask.... distance doesn't do a square root?

##### Share on other sites
The hardware may or may not have a native dot product instruction, it would depend on the GPU. The internal ISA actually changes pretty frequently among different chipset versions, and like I mentioned before the latest architectures from both Nvidia and AMD both only use scalar instructions.

distance() does compute the square root of the sum, I just left that part out for brevity.

##### Share on other sites
ok. thanks for the info. very helpful

1. 1
Rutin
42
2. 2
3. 3
4. 4
5. 5

• 9
• 27
• 20
• 14
• 14
• ### Forum Statistics

• Total Topics
633385
• Total Posts
3011605
• ### Who's Online (See full list)

There are no registered users currently online

×