Shadows/Highlights - High radius causes vertical lines, Issue 1921

This commit is contained in:
Ingo
2013-11-08 18:24:10 +01:00
parent 7c837306e5
commit d67469f3f6

View File

@@ -332,10 +332,12 @@ template<class T> void gaussHorizontalSse (T** src, T** dst, int W, int H, float
template<class T> void gaussHorizontal (T** src, T** dst, AlignedBufferMP<double> &buffer, int W, int H, double sigma) { template<class T> void gaussHorizontal (T** src, T** dst, AlignedBufferMP<double> &buffer, int W, int H, double sigma) {
#ifdef __SSE__ #ifdef __SSE__
gaussHorizontalSse<T> (src, dst, W, H, sigma); if(sigma < 70) { // bigger sigma only with double precision
return; gaussHorizontalSse<T> (src, dst, W, H, sigma);
#else return;
}
#endif
if (sigma<0.25) { if (sigma<0.25) {
// dont perform filtering // dont perform filtering
if (src!=dst) if (src!=dst)
@@ -411,7 +413,6 @@ template<class T> void gaussHorizontal (T** src, T** dst, AlignedBufferMP<double
buffer.release(pBuf); buffer.release(pBuf);
} }
#endif
} }
#ifdef __SSE__ #ifdef __SSE__
@@ -561,10 +562,12 @@ template<class T> void gaussVerticalSse (T** src, T** dst, int W, int H, float s
template<class T> void gaussVertical (T** src, T** dst, AlignedBufferMP<double> &buffer, int W, int H, double sigma) { template<class T> void gaussVertical (T** src, T** dst, AlignedBufferMP<double> &buffer, int W, int H, double sigma) {
#ifdef __SSE__ #ifdef __SSE__
gaussVerticalSse<T> (src, dst, W, H, sigma); if(sigma < 70) { // bigger sigma only with double precision
return; gaussVerticalSse<T> (src, dst, W, H, sigma);
#else return;
}
#endif
if (sigma<0.25) { if (sigma<0.25) {
// dont perform filtering // dont perform filtering
@@ -642,7 +645,6 @@ template<class T> void gaussVertical (T** src, T** dst, AlignedBufferMP<double>
buffer.release(pBuf); buffer.release(pBuf);
} }
#endif
} }