![virtualdub 1.6 14 subtitler virtualdub 1.6 14 subtitler](https://diit.cz/sites/default/files/images/2176/26399_c4605d3b59.png)
The way we get around this is to compute the absolute value of the two negative taps first into the framebuffer, then combining that with the sum of the two positive taps using REVSUBTRACT as the framebuffer blending mode. Now we run into a problem: the framebuffer is limited to 8-bit unsigned values, and more importantly, can't hold negative values. DX8 class card (Pixel Shader 1.1: NVIDIA GeForce 3/4)įour texture stages - not quite enough for single-pass 4-tap, so we must do two passes per axis.
#Virtualdub 1.6 14 subtitler software#
Refrast's awe-inspiring 0.2 fps performance gives new meaning to "slow." Unfortunately, I think refrast is still a procedural rasterizer, like old OpenGL implementations just about all other current software rasterizers now use dynamic code generation and run orders of magnitude faster. I have a GeForce FX 5600 now, but when I first wrote this path, I had no PS1.4 capable card, so I had to prototype on the D3D reference rasterizer. I might add a single-pass PS2.0 path because it offers the possibility of more advanced effects such as doing warpsharp in the pixel shader. Did I mention it requires PS2.0? It does compute a more precise filter, however. I'm not sure that's faster than a separable method and it chews up a lot of shader resources.
![virtualdub 1.6 14 subtitler virtualdub 1.6 14 subtitler](http://sfg.dp.ua/images/soft/6000/5042/3.jpg)
However, it chews up a ton of shader resources and burns a ton of clocks per pixel - I think the compiler said somewhere around 50 clocks. NVIDIA has some interesting shaders in their FXComposer tool for doing bicubic interpolation using Pixel Shader 2.0 in a single pass, without any need for temporaries. On top of that, you have fill rate that is obscene for this task so performance is essentially a non-issue. There really isn't any challenge to this one whatsoever, as you simply just bind the source texture to the first four texture stages, bind a filter LUT to the fifth texture stage, and multiply-add them all together in a simple PS1.4 shader. Six texture stages, high-precision fixed point arithmetic or possibly even floating-point.