On 23 Jan 2014, at 03:49, Joshua Kolden <[email protected]> wrote:

> Upon further experimentation I find that turning layer.mipmap on and off, has 
> no effect.  While smooth on a layer vs. smooth on the image does effect the 
> image differently.

This is strange. I see a big difference here when I scale down an image, and I 
get the expected visual results as well when I enable layer, smooth and 
mipmapping. Both with 5.1.1, 5.2.0 and the upcoming 5.2.1 branch. 

>  This makes sense if one is being filtered against the original image size 
> and the other against the Item’s layer texture size.  We should have a mipmap 
> option on images themselves not just an Item layer since layer size != image 
> size.  It appears to me mipmaping is not working at all and I’d hesitate to 
> go to any trouble with QSGTexture as that may be where it’s broken if thats 
> the base for Image

Adding mipmapping to Image is certainly an option. We've talked about that in 
the past, but it "just hasn't been done" :) 

> Enabling bilinear filtering without enabling mipmaping is not an intuitive 
> choice.  In effect it means images can only be displayed properly at their 
> original size or larger then their original size.  I would not consider this 
> expected behavior.  You do not have this problem in web page rendering for 
> example.  Given the wide verity of devices and resolutions QML is targeted 
> for I would expect mipmaping to be default behavior, as well as exposing the 
> filter setting or simply hardcoding `anisotropic` when smooth is enabled..
> 
> I just tested and indeed, it appears that even static images are not being 
> rendered properly when they are displayed at a resolution lower then their 
> original resolution, and 
> 
> layer.enabled: true
> layer.smooth: true
> layer.mipmap: true
> 
> has no effect on images that are displayed larger their there original 
> resolution.

Nor should it. Smooth makes a difference when scaling up, but not mipmapping.

> 
> Thanks,
> j
> 
> On Jan 22, 2014, at 12:04 AM, Joshua Kolden <[email protected]> wrote:
> 
>> Interesting.  I tried the layer.mipmap previously with no effect, I did’t 
>> catch that one needed to “enable” it too.  However, I just tried this, and 
>> although it created a different, marginally smoother result is is still very 
>> noticeably aliasing.  
>> 
>> Here is a move of that test:
>> 
>> http://c4.dev.s3.amazonaws.com/QMLImageRenderQuality2.mov
>> 
>> In fact this version is starting to look very similar to the results I was 
>> seeing with the font renders.
>> 
>> On Jan 21, 2014, at 11:50 PM, Gunnar Sletta <[email protected]> wrote:
>> 
>>> This is the expceted result. smooth: true uses bilinear filtering which is 
>>> what is supported in hardware. When scaling down, this starts to degrade. 
>>> The effect is drastic for high-contrast content like the edges of a font. 
>>> Once go get below 0.5x scale factor the sampling starts to ignore pixels 
>>> and aliasing become very visible. 
>>> 
>>> The preferred solution is to prepare raster content (images in your case) 
>>> close to the size you intend to show them. If you must scale them down, 
>>> then use mipmapping. With the image element, you can get this by doing:
>>> 
>>> Image {
>>>  layer.enabled: true
>>>  layer.smooth: true
>>>  layer.mipmap: true
>>>  ...
>>> }
>>> 
>>> However, by enabling the layer you get an extra texture copy of your rather 
>>> large image, so it might be preferable to implement a custom QQuickItem 
>>> which returns a QSGSimpleTextureNode with a QSGTexture with mipmapping.
>>> 
>>> cheers,
>>> Gunnar
>>> 
>>> On 22 Jan 2014, at 04:03, Joshua Kolden <[email protected]> wrote:
>>> 
>>>> I’m getting boxed in with rendering bugs on two fronts.  Originally I 
>>>> tried to work with fonts for the following animation, but have both render 
>>>> quality and font ‘subfamily’ selection bugs to deal with there. So I took 
>>>> the effort to switch a lot of stuff around and use images instead, however 
>>>> I’m getting aliasing artifacts now.  I’m rather stuck at the moment for 
>>>> rendering a good quality large font design.
>>>> 
>>>> This video shows the aliasing I’m talking about.  There are 3 images here 
>>>> one is 2048x512 and two are 512x512 for the Camera4 and C4 text logos.  
>>>> The movie is captured pixel for pixel, and the images at their largest (in 
>>>> this example) are smaller then the source resolution.
>>>> 
>>>> http://c4.dev.s3.amazonaws.com/QMLImageRenderQuality.mov
>>>> 
>>>> Here is an example of one of the Image invocations:
>>>> 
>>>> Image {
>>>> id: c4CameraImage
>>>> fillMode: Image.PreserveAspectFit
>>>> source: “path/to/c4camera.png"
>>>> anchors.left: parent.left
>>>> anchors.top: parent.top
>>>> anchors.bottom: parent.bottom
>>>> smooth : true
>>>> opacity: 0.0
>>>> }
>>>> 
>>>> The animation is created with a number animation on the width and height 
>>>> of the parent rectangles.
>>>> 
>>>> I’ve asked on IRC, and in the [interest] list, but one said it should just 
>>>> work and the other didn’t reply.
>>>> 
>>>> Is this a known issue, a bug, or and I’m I doing it wrong?  
>>>> 
>>>> Thanks,
>>>> j
>>>> _______________________________________________
>>>> Development mailing list
>>>> [email protected]
>>>> http://lists.qt-project.org/mailman/listinfo/development
>>> 
>> 
> 

_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to