[PATCH] d3dx9: Check the square instead of the square root in D3DXSphereBoundProbe
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com> --- As far as I can tell, there is no need to call an expensive math function here. In my tests, replacing the square root with a simple multiplication on the other side of the equation reduces the time spent in D3DXSphereBoundProbe by about 6% when the condition must be evaluated. --- dlls/d3dx9_36/mesh.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c index 5e0bb98efc..65c5ead7ba 100644 --- a/dlls/d3dx9_36/mesh.c +++ b/dlls/d3dx9_36/mesh.c @@ -2421,7 +2421,7 @@ BOOL WINAPI D3DXSphereBoundProbe(const D3DXVECTOR3 *pcenter, float radius, c = D3DXVec3LengthSq(&difference) - radius * radius; d = b * b - a * c; - if ( ( d <= 0.0f ) || ( sqrt(d) <= b ) ) return FALSE; + if ( ( d <= 0.0f ) || ( d <= b * b ) ) return FALSE; return TRUE; } -- 2.27.0
participants (1)
-
Alex Henrie