On Fri, Feb 5, 2010 at 5:29 PM, Brian Paul <bri...@vmware.com> wrote:
> michal wrote:
>> michal wrote on 2010-02-05 11:05:
>>> Brian Paul wrote on 2010-02-04 22:07:
>>>
>>>> michal wrote:
>>>>
>>>>
>>>>> Brian Paul wrote on 2010-02-03 17:58:
>>>>>
>>>>>
>>>>>> Keith Whitwell wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>>>> Michal,
>>>>>>>>>
>>>>>>>>> why do you need this for linear interpolator and not perspective? I
>>>>>>>>> think d3d mobile let you disable perspective correct texturing, but it
>>>>>>>>> is always enabled for normal d3d.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> I could not think of a use case that uses perspective and cylindrical
>>>>>>>> interpolation at the same time. If you think it's valid, we can
>>>>>>>> implement cylindrical wrapping for perspective interpolator, but then I
>>>>>>>> am not sure how exactly it should be done, i.e. should we divide and
>>>>>>>> then wrap or the opposite?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> Is there some way we can figure out what DX9 does here?  Maybe a quick
>>>>>>> test?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> I suspect cylindrical wrapping would be done after the divide.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> A quick test shows it is legal to have perspective and cylindrical
>>>>> interpolation. In fact, I see no difference between projected and
>>>>> non-projected version with REF device -- both are perspective correct.
>>>>>
>>>>> I think I am stuck at this point and need further help. I am trying to
>>>>> modify tri_persp_coeff() in softpipe in a similar manner to
>>>>> tri_linear_coeff(), but all I get are lousy rendering artifacts. If we
>>>>> need do cylindrical wrapping after divide, it must be done as part of
>>>>> shader interpolator, but the only place where we have enough information
>>>>> to do wrapping is in primitive setup.
>>>>>
>>>>>
>>>> Do you have a patch relative to gallium-cylindrical-wrap?  I'll take a
>>>> look.
>>>>
>>>>
>>>>
>>> Brian,
>>>
>>> I have no half-working patch for you, sorry. I tried a few approaches,
>>> but they were nonsensical.
>>>
>>> The linear coeff calculation is simple: calculate distance between two
>>> coordinates, and if it's greater than 0.5, apply wrapping by adjusting
>>> the distance.
>>>
>>> However, for the perspective correct coeffs, we divide early by
>>> position.w before calculating the distance, and so my approach that
>>> worked for linear fails here. I am either not comprehending the math
>>> here (why do we divide the second time in interpolator, for instance?)
>>> or we need to put more information into struct tgsi_interp_coef so that
>>> the interpolator code has enough information to do wrapping on its own
>>> without help of primitive setup.
>>>
>>
>> OK, I managed to correctly implement cylindrical wrap in softpipe both
>> for linear and perspective interpolation, both for lines and triangles.
>>
>> Tested with Brian's cylwrap test app -- it works.
>>
>> Please re-review. Thanks.
>
> Seems to work as expected.  The code looks good.  Thanks.
>
> -Brian

I had one question about whether it's neccesary to do three wrapping
calculations per triangle, or just two.

Once that's resolved, I'm fine to see this merged.

Keith

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to