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