www.pudn.com > DemoFluid2D.zip > smSubtract2D.psh
!!FP1.0
#2d FLUID ADVECT to modify velocity according to pressure
DECLARE TexPARA = {0,0,0,0};
ADDH H0, f[WPOS].xyxy, {1,0,-1,0};
#Pressure(i+1,j)---Tex0
TEX R1, H0.xyww, TEX0, RECT;
#Pressure(i-1,j)
TEX R2, H0.zwww, TEX0, RECT;
SUB R3.x, R1.x, R2.x;
ADDH H0, f[WPOS].xyxy, {0,1,0,-1};
#Pressure(i,j+1)
TEX R1, H0.xyww, TEX0, RECT;
#Pressure(i,j-1)
TEX R2, H0.zwww, TEX0, RECT;
SUB R3.y, R1.x, R2.x;
MUL R3.xy, R3, TexPARA.xyxx;
#Velocity(i,j)---Tex1
TEX R0, f[WPOS], TEX1, RECT;
SUB R3.xy, R0, R3;
#don't change the density component in B & A channels
MOV R3.zw, R0;
#Import the boundary condition
TEX R1, f[WPOS], TEX2, RECT;
#old velocity
TEX R2, f[WPOS], TEX1, RECT;
MOV R2.zw, R3;
LRP o[COLR], R1.wwww, R3, R2;
END