is it possible to sample the previous frame pixel colours in unity3d and to continue momentum of colour gradients onto the next frame, to make fluid simulations and smoke swirls ? what kind of special shader tools are necessary for accessing that kind of thing? I don’t think they’re available in unity? Some interesting games have been made for example plasma pong and Geometry Wars (xbox360,pc) it’s quite a futuristic thing that has been available since SM 3 DX9 and great for adding interactivity for spacey productions? has there previously been talk about this on unity? Some examples? when will unity implement it?
I suppose you could use compute shaders to implement a fluid physics system like that. There’s plenty of papers about real time fluid simulations on a GPU out there.
lol that would use shader model 5.0. ok. I thought perhaps there was a straightforward solution with a 2nd pass or an unknown variable. sounds good.
Well, technically, you can do it with a standard shader. You would operate on the force/vertex/whatever texture from the previous frame. You can use some simple math to access the neighboring pixels exactly, etc… It just makes sense to go for a GPGPU approach instead, though.
That’s definitely possible.
I’ve done that for water, both in DX9 using vertex + fragment shaders and in DX11. And smb02dunnal also did it for a 3D fluid simulation.
You can render results to a RenderTexture, and read them back in in a next pass. The DirectCompute functionality you have in DX11 is more convenient because you don’t have a vertex shader pass to worry about, and it allows you to move data back to the CPU more easily, if you need to, using ComputeBuffers.