![]() ![]() Six texture stages, high-precision fixed point arithmetic or possibly even floating-point. DX9, some DX8 class cards (Pixel Shader 1.4: NVIDIA GeForce FX, ATI RADEON 8500+).Now, how many different problems did I encounter implementing this? Let's start with the most powerful cards and work down: As we will see, this is rather important on the lower-end 3D cards. We can do this on a GPU by doing the horizontal pass into a render target texture, then using that as the source for a vertical pass. The fact that you calculate the 2D filter as two 1D passes means that the 2D filter is separable this reduces the number of effective taps for the 2D filter from 16 to 8. ![]() Applying this both horizontally and vertically gives the bicubic filter. Where taps 2 and 3 straddle the desired point and x is the fractional distance from tap 2 to that point. To review, the 1D cubic interpolation filter used in VirtualDub is a 4-tap filter defined as follows: tap 1 = Ax - 2Ax 2 + Ax 3 Problem is, 3D pipelines aren't really set up for generic FIR filters, so the task is to convolute and mutate the traditional 4x4 kernel into something that a GPU understands. We've been using simply bilinear for too long, and it's time we had better quality zooms accelerated on the video card. One of the features I've been working on for 1.6.0 is the ability to do bicubic resampling in the video displays using hardware 3D support. Long, lengthy rant ^H^H^H^Hdiscourse on 3D to follow. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |