Created attachment 111558 [details] The canvas in wrap mode, the lines become apparent. The Height Map to Normal Map filter creates height information on the top and bottom of the image.
Yes, this is as far as I understand a problem with the convolution painter itself. I pass the wraparound variable correctly, as far as I know.
I did a read through the code and I /think/ I identified two issues that relate to this bug: 1. In KisEdgeDetectionKernel::convertToNormalMap there is this code to apply the horizontal and vertical convolution kernels: horizPainterLR.applyMatrix(kernelHorizLeftRight, device, srcTopLeft - QPoint(0, ceil(horizontalCenter)), srcTopLeft - QPoint(0, ceil(horizontalCenter)), rect.size() + QSize(0, 2 * ceil(horizontalCenter)), BORDER_REPEAT); and verticalPainterTB.applyMatrix(kernelVerticalTopBottom, device, srcTopLeft - QPoint(0, ceil(verticalCenter)), srcTopLeft - QPoint(0, ceil(verticalCenter)), rect.size() + QSize(0, 2 * ceil(verticalCenter)), BORDER_REPEAT); If you look at the QPoints and the QSize, you see that in both cases the x is set to zero and the y to some value based on the horizontal/vertical center. I guess that in one of the cases, probably the vertical one, the two vector components should be flipped around. 2. The definition of BORDER_REPEAT which you pass into applyMatrix is defined as: BORDER_REPEAT = 1 // Use the border for the missing pixels Which is actually a clamp, not a wrap-around. So a wrapping normal map will have some artifacts on the borders. Ideally, the filter would gain an option to select a newly coded BORDER_WRAP mode, although that's really more of a feature request rather than a bug.
Ok, I guessed wrong, it's actually the horizontal applyMatrix that is wrong: horizPainterLR.applyMatrix(kernelHorizLeftRight, device, srcTopLeft - QPoint(ceil(horizontalCenter), 0), srcTopLeft - QPoint(ceil(horizontalCenter), 0), rect.size() + QSize(2 * ceil(horizontalCenter), 0), BORDER_REPEAT); gets rid of the line at the top and bottom edges for me.
Git commit bc30d50e80024d7b2352fa0b3112ecff5e9c36aa by Boudewijn Rempt. Committed on 28/03/2018 at 14:08. Pushed by rempt into branch 'master'. Fix height map to normal map in wraparound mode patch by Dennis Ranke. Thanks! M +3 -3 libs/image/kis_edge_detection_kernel.cpp https://commits.kde.org/krita/bc30d50e80024d7b2352fa0b3112ecff5e9c36aa
Git commit a0e2a23f0e7ab1054b9fd49cad29c3c58590cacc by Boudewijn Rempt. Committed on 03/04/2018 at 11:18. Pushed by rempt into branch 'krita/4.0'. Fix height map to normal map in wraparound mode patch by Dennis Ranke. Thanks! (cherry picked from commit bc30d50e80024d7b2352fa0b3112ecff5e9c36aa) M +3 -3 libs/image/kis_edge_detection_kernel.cpp https://commits.kde.org/krita/a0e2a23f0e7ab1054b9fd49cad29c3c58590cacc