//------------------------------------------------------------------------------ // 4-tap filtering //------------------------------------------------------------------------------ xps.1.1 // default filter is box filter, but this is easily overwritten using SetPixelShaderConstant def c0, 0.25f, 0.25f, 0.25f, 0.25f def c1, 0.25f, 0.25f, 0.25f, 0.25f def c2, 0.25f, 0.25f, 0.25f, 0.25f def c3, 0.25f, 0.25f, 0.25f, 0.25f // source textures tex t0 tex t1 tex t2 tex t3 // simple way // mul r0, c0, t0 // mad r0, c1, t1, r0 // mad r0, c2, t2, r0 // mad r0, c3, t3, r0 // This has better precision (assuming the xmma_x2 intermediates don't overflow): xmma_x2 discard, discard, r0, c0, t0, c1, t1 // 2 * (c0 * t0 + c1 * t1) xmma_x2 discard, discard, r1, c2, t2, c3, t3 // 2 * (c2 * t2 + c3 * t3) add_d2 r0.rgb, r0, r1 // v0 contains a modulation factor mul r0.rgb, r0, v0 +mov r0.a, 1-zero