Mipmapping for canvas. Ideas and comments.

Dmitry Kazakov dimula73 at gmail.com
Thu Jul 23 16:47:23 CEST 2009


>> > In such a case, color conversion will be done after mipmapping and for
>> > every zoomlevel seperately?
>> yes when creating the prescaledprojection you would also do the color
>> conversion.
>
> There are two sides: only color correcting the scaled pixels will be a lot
> cheaper, but I'm not sure whether that will give visible artefacts.

Hmm... I thought just the opposite: in case you delay color
conversion, you'll have to color-convert every time you change
zoom-level, but in case you do it during updating original image,
you'll do it only once.

Maybe you are right with delaying it... Color conversion shouldn't
depend on the scale much - it's almost linear operation...


> In any case, I'm not officially getting confused myself about mipmapping the
> projection... I'm fine with either doing it in krita/image and using KisPaintDevice,
> or doing it in krita/ui/canvas, and using QImage-based tiles (like the opengl
> canvas does already).

I don't think we should move it to krita/image, as opengl canvas seems
not to depend on our internal prescaling. It seems to have it's own
mipmapping, downsampling and more than that it does it with the help
of gpu. ( Lukas, am i right? )

At the moment, i think the best way would be the following:

1) Pyramid replaces current KisProjectionCache.  And
KisPrescaledProjection requests it for all scale operations.
2) Pyramid uses quite modificated "paint device" based on tiled data
manager class.

class "KisSimplifiedPaintDevice" {
private:
     KisDataManager m_dataManager;

public:
     void loadFromUsualPaintDevice(KisPaintDeviceSP sourcePaintDevice,
QRect rect);

     QImage converToQImage(QRect rect);

     // Here is the difference from usual paint device
    KisSimplifiedPaintDeviceSP getDowsampledByFactor2();
    void setMonitorProfile(KoColorProfile*);
};

What is the difference from regular paint device and why should we
create new class?
i) We leave a path for future experiments: should we color convert
before or after downsampling. We can choose inside the class where to
do it.
ii) Downsampling is moved to lower level.

What do you think?



-- 
Dmitry Kazakov


More information about the kimageshop mailing list