www.pudn.com > DemoFluid2D.zip > smPressure2D.psh
!!FP1.0
#2d FLUID Diffuse for Pressure
DECLARE TexPARA = {0,0,0,0};
#TEX0 -- DIVERGENCE OF VELOCITY
#TEX1 -- PRESSURE
ADD R0, f[WPOS].xyxy, {1,0,-1,0};
#P(i+1,j)--
TEX R1, R0.xyww, TEX1, RECT;
#P(i-1,j)--
TEX R2, R0.zwww, TEX1, RECT;
ADD R3.x, R1.x, R2.x;
MUL R3.x, R3.x, TexPARA.x;
ADD R0, f[WPOS].xyxy, {0,1,0,-1};
#P(i,j+1)--
TEX R1, R0.xyww, TEX1, RECT;
#P(i,j-1)--
TEX R2, R0.zwww, TEX1, RECT;
ADD R1.x, R1.x, R2.x;
MAD R3.x, R1.x, TexPARA.y, R3.x;
#divergence of velocity
TEX R0, f[WPOS], TEX0, RECT;
SUB R0.x, R3.x, R0.x;
#sum up
MUL R0.x, R0.x, TexPARA.z;
#Tex2 ----Obstacle
TEX R1, f[WPOS], TEX2, RECT;
#old pressure
TEX R2, f[WPOS], TEX1, RECT;
LRP o[COLR], R1.wwww, R0, R2;
END