Original Post
I'm working on a graphics demo that has some pretty interesting feedback effects. I'm bored so I thought I'd explain how to do it. first the screenshots are at: http://www.brandonfurtwangler.com/index.php?p=37 the feedback is shown in the last 3 screenshots. still images dont exactly do it justice, but you get the idea. To do this, I created 3 textures that were render targets. I call these 'current', 'previous', and 'mix'. Every frame I do this: 1) render scene into 'current' 2) render full screen quad/grid into 'mix' using a feedback shader (explained below) with 'current' and 'previous' as input textures 3) render full screen quad into backbuffer using a copy shader with 'mix' as a texture 4) swap around 'previous'/'mix' the feedback shader should warp vertex positions to give interesting stretching of the image, and it should lerp between current and previous in the pixel shader. If you scale the vertex positions, it will do a radial feedback/blur. If you rotate the positions it will do circular feedback and if you just move the vertices around based on time using sin/cos waves you get an underwater effect (this works best with a grid rather than a quad). You can then use your lerp's blending factor to easily control how much feedback you get. the copy shader just samples its input texture and basicaly copies from the texture to the screen. I have a few more screenshots showing the warping that I'll post tomorrow and if there's enough interest I could put the code up there too.