/* SPDX-FileCopyrightText: 2021 Arjen Hiemstra SPDX-License-Identifier: LGPL-2.0-or-later */ import QtQuick /** * A ShaderEffect that makes use of the Lanczos resampling method for scaling textures. * * Lanczos resampling tries to preserve detail when scaling down images and * thus looks less blurry compared to a simple linear interpolation. * * This effect implements a single-pass Lanczos resampling filter using two * lobes. Everything is done in the shader, with some defaults set for * parameters. These defaults were designed to provide a good visual result when * scaling down window thumbnails. */ ShaderEffect { /** * The source texture. Can be any QQuickTextureProvider. */ required property var source /** * The size of the source texture. Used to perform aspect ratio correction. */ required property size sourceSize /** * The target size of the Lanczos effect. * * Defaults to the width and height of this effect. */ property size targetSize: Qt.size(width, height) /** * Lanczos window Sinc function factor. * * Defaults to 0.4 */ property real windowSinc: 0.4; /** * Lanczos Sinc function factor. * * Defaults to 1.0 */ property real sinc: 1.0; /** * The amount of anti-ringing to apply. * * Defaults to 0.65 */ property real antiRingingStrength: 0.65; /** * The resolution of the Lanczos effect. * * Larger values mean reduced (more pixelated) results. * Defaults to 0.98 to achieve good results. */ property real resolution: 0.98; vertexShader: Qt.resolvedUrl(":/shaders/preserveaspect.vert.qsb") fragmentShader: Qt.resolvedUrl(":/shaders/lanczos2sharp.frag.qsb") }