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 ------------------------------------------------------------------------------ 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