42 lines
1.2 KiB
HLSL
42 lines
1.2 KiB
HLSL
#include "fluid_common.hlsli"
|
|
|
|
// Pixel
|
|
float4 main(p_fluidsim input) : SV_Target
|
|
{
|
|
float4 fieldL = Texture_velocity1.SampleLevel(samPointClamp, LEFTCELL, 0);
|
|
float4 fieldR = Texture_velocity1.SampleLevel(samPointClamp, RIGHTCELL, 0);
|
|
float4 fieldB = Texture_velocity1.SampleLevel(samPointClamp, BOTTOMCELL, 0);
|
|
float4 fieldT = Texture_velocity1.SampleLevel(samPointClamp, TOPCELL, 0);
|
|
float4 fieldD = Texture_velocity1.SampleLevel(samPointClamp, DOWNCELL, 0);
|
|
float4 fieldU = Texture_velocity1.SampleLevel(samPointClamp, UPCELL, 0);
|
|
|
|
if (IsBoundaryCell(LEFTCELL))
|
|
{
|
|
fieldL = GetObstVelocity(LEFTCELL);
|
|
}
|
|
if (IsBoundaryCell(RIGHTCELL))
|
|
{
|
|
fieldR = GetObstVelocity(RIGHTCELL);
|
|
}
|
|
if (IsBoundaryCell(BOTTOMCELL))
|
|
{
|
|
fieldB = GetObstVelocity(BOTTOMCELL);
|
|
}
|
|
if (IsBoundaryCell(TOPCELL))
|
|
{
|
|
fieldT = GetObstVelocity(TOPCELL);
|
|
}
|
|
if (IsBoundaryCell(DOWNCELL))
|
|
{
|
|
fieldD = GetObstVelocity(DOWNCELL);
|
|
}
|
|
if (IsBoundaryCell(UPCELL))
|
|
{
|
|
fieldU = GetObstVelocity(UPCELL);
|
|
}
|
|
|
|
float divergence = 0.5 *
|
|
((fieldR.x - fieldL.x) + (fieldT.y - fieldB.y) + (fieldU.z - fieldD.z));
|
|
|
|
return divergence;
|
|
}
|