[poppler] Patch proposal: Implementation for real gouraud shaded triangles

Thomas Freitag Thomas.Freitag at kabelmail.de
Sun Oct 10 03:11:47 PDT 2010


  Hi Albert & Christian!

I tested the bugfix and the (corrected) improvement patch aginst splash 
mode CMYK and grayscale (I forced SplashOutputDev to produce a CMYK and 
a grayscale bitmap), and I found no problems with it. Because the bugfix 
for gouraud shading produces outputs much more likely the acrobat reader 
output, I would appreciate a commit to the actual branch as soon as it 
runs through the rgeression tests.

Best regards,
Thomas

Am 08.10.2010 22:23, schrieb Christian Feuersaenger:
> Am 07.10.2010 23:08, schrieb Albert Astals Cid:
>> A Dimecres, 6 d'octubre de 2010, Christian Feuersaenger va escriure:
>>> Am 05.10.2010 22:59, schrieb Albert Astals Cid:
>>>> A Dijous, 30 de setembre de 2010, Christian Feuersaenger va escriure:
>>>>> Hello Albert,
>>>>>
>>>>> Am 30.09.2010 00:00, schrieb Albert Astals Cid:
>>>>>> A Dijous, 19 d'agost de 2010, vàreu escriure:
>>>>>>> Dear Albert,
>>>>>>>
>>>>>>> attached you find a test.pdf in which the improvements can be seen.
>>>>>>>
>>>>>>> The rendering quality of my patch is much better; it eliminates the
>>>>>>> moire effects of the flat shading approximation (top left image).
>>>>>>>
>>>>>>> Compare also the image with opacity on page 2 of test.pdf.
>>>>>>>
>>>>>>> Besides the improved rendering quality, the most obvious change 
>>>>>>> is the
>>>>>>> required runtime: on my system, the default xpdf requires 15 
>>>>>>> seconds
>>>>>>> until it stops rendering the first page whereas xpdf with poppler
>>>>>>> support and my new patch requires about one second. The pdftoppm
>>>>>>> utility is also considerably faster.
>>>>>>>
>>>>>>> Let me stress that the patch is unrelated to my previous 
>>>>>>> bugfixes, so
>>>>>>> rendering problems are only fixed together with the other bugfix.
>>>>>> I'm not sure i understand this last sentence, you say that the 
>>>>>> patches
>>>>>> are
>>>>>> unrelated but then you say the bugs are only fixed together with the
>>>>>> other
>>>>>> patch?
>>>>>>
>>>>>> Should i run a regression test over this patch or does it need to 
>>>>>> be in
>>>>>> conjunction with the other patch?
>>>>> The "Implementation for real gouraud shaded triangles" is more a new
>>>>> feature than simply a bugfix: it re-implements the shaders for the
>>>>> splash device. Its purpose is mainly a vastly improved rendering 
>>>>> speed.
>>>>> I'd suggest to run regression tests on this implementation separately
>>>>> from my other patch proposals.
>>>>>
>>>>> The other patch proposals (you have  processed them already; I still
>>>>> have to investigate your problem report) are bug fixes which 
>>>>> should be
>>>>> tested separately.
>>>>>
>>>>> My last remark is to be understood as follows:
>>>>> 1. if you view test.pdf with both patches, you have best quality and
>>>>> highest speed.
>>>>> 2. if you view test.pdf only with the given patch, you have high 
>>>>> speed
>>>>> and good quality for the triangle patches, but the coons patch things
>>>>> will be buggy.
>>>>> 3. if you only process the other patch proposal (the bugfixes 
>>>>> which are
>>>>> not part of mail), the coons patches are rendered correctly; but the
>>>>> triangle patches are slow and only approximately correct due to the
>>>>> piecewise flat triangle approximation as it is currently done in
>>>>> libpoppler.
>>>>>
>>>>> I think the most reliable quality verification can be gained by 
>>>>> testing
>>>>> both patches separately.
>>>> Ok, i've ran the test regression over this aptch and everything 
>>>> seems to
>>>> be ok, could you please fix the FIXME and TODO you have in the code?
>>> Hello Albert,
>>>
>>> I'm glad the regression tests passed. Concerning the FIXME and TODO
>>> list: They constitute (without exception) additional features which do
>>> not limit the application of the patch (falling back to the old
>>> implementations automatically). I am willing to work on the FIXMEs, but
>>> a realization might not be finished before the beginning of the new 
>>> year
>>> due to my personal time schedule for the next months.
>>>
>>> I suggest to incorporate the patch into libpoppler as-is, and I will
>>> work on the remaining feature requests eventually.
>> Not really, i want at least splashModeXBGR8 fixed (can can just try 
>> it with
>> qt4/test/test-poppler-qt4) before commiting since is what the Qt 
>> frontend uses
>> that is the major user of the Splash backend.
>>
>> I attach the patch as i tried.
>>
>> Albert
>
> Ok, I'll attempt it. Thank you for the details.
>
> Best regards
>
> Christian
>
>
>>> Best regards
>>>
>>> Christian
>>>
>>>> Thanks,
>>>>
>>>>     Albert
>>>>> Best regards
>>>>>
>>>>> Christian
>>>>>
>>>>> PS
>>>>> Sorry if you get notifications because of 'Post by non-member to a
>>>>> members-only list'... I keep clicking onto the wrong email address :(
>>>>> (have now registered both of them)
>>>>>
>>>>>> Albert
>>>>>>
>>>>>>> Best regards
>>>>>>>
>>>>>>> Christian
>>>>>>>
>>>>>>> Am 18.08.2010 23:15, schrieb Albert Astals Cid:
>>>>>>>> A Dijous, 15 de juliol de 2010, Christian Feuersaenger va 
>>>>>>>> escriure:
>>>>>>>>> Dear poppler developers,
>>>>>>>>>
>>>>>>>>> hereby I propose a new patch for a high quality, fast gouraud
>>>>>>>>> shader for
>>>>>>>>> triangle shadings.
>>>>>>>>>
>>>>>>>>> The patch provides
>>>>>>>>> - scalable triangle shadings (in contrast to the old approach),
>>>>>>>>> - correct shading, no approximation using flat triangles,
>>>>>>>>> - greatly (!) improved rendering speed,
>>>>>>>>> - support for opacity (in contrast to the previous approach).
>>>>>>>>>
>>>>>>>>> This patch is relative to the master branch,
>>>>>>>>> git show poppler-0.14.0-91-g31ac578 .
>>>>>>>>>
>>>>>>>>> It is unrelated to my previous patch proposals concerning 
>>>>>>>>> shadings;
>>>>>>>>> the
>>>>>>>>> other patch proposal (my mail several weeks ago) is still 
>>>>>>>>> important
>>>>>>>>> and
>>>>>>>>> relevant. The patch in this mail is independent and does not
>>>>>>>>> include my
>>>>>>>>> previous patch proposals.
>>>>>>>>>
>>>>>>>>> I tested the new patch with pdftoppm and with the xpdf-poppler 
>>>>>>>>> fork
>>>>>>>>> of Rogerio Brito; it appears to work reliable. I tested
>>>>>>>>> - matrix shadings and triangle patch shadings (Types 4 and 5),
>>>>>>>>> - degenerated triangles,
>>>>>>>>> - clipping,
>>>>>>>>> - opacity,
>>>>>>>>> - RGB color spaces.
>>>>>>>>>
>>>>>>>>> The implementation now supports these shadings on a display 
>>>>>>>>> driver
>>>>>>>>> level
>>>>>>>>> and is implemented directly in the splash device (using scanline
>>>>>>>>> sweeps).
>>>>>>>>>
>>>>>>>>> I've been defensive: I have no test cases for other color 
>>>>>>>>> spaces and
>>>>>>>>> I have no test data for non-parametric shadings. Consequently, I
>>>>>>>>> disabled
>>>>>>>>> the shader for these cases; it will fall back to the existing
>>>>>>>>> solutions
>>>>>>>>> (approximate shading by means of many flat triangles).
>>>>>>>>>
>>>>>>>>> I hope you find my patch proposal useful. I believe it is 
>>>>>>>>> worthy of
>>>>>>>>> being part of libpoppler.
>>>>>>>> Do you have a pdf where we can see the improvement this patch 
>>>>>>>> gives?
>>>>>>>>
>>>>>>>> Albert
>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>
>>>>>>>>> Christian
>>>>>>>> _______________________________________________
>>>>>>>> poppler mailing list
>>>>>>>> poppler at lists.freedesktop.org
>>>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
>>>>>> _______________________________________________
>>>>>> poppler mailing list
>>>>>> poppler at lists.freedesktop.org
>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
>>>>> _______________________________________________
>>>>> poppler mailing list
>>>>> poppler at lists.freedesktop.org
>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
>>>> _______________________________________________
>>>> poppler mailing list
>>>> poppler at lists.freedesktop.org
>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
>>> _______________________________________________
>>> poppler mailing list
>>> poppler at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/poppler
>>>
>>>
>>> _______________________________________________
>>> poppler mailing list
>>> poppler at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/poppler
>
> _______________________________________________
> poppler mailing list
> poppler at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/poppler
>
> .
>




More information about the poppler mailing list