49 lines
1.8 KiB
HLSL
49 lines
1.8 KiB
HLSL
#include "fluid_common.hlsli"
|
|
|
|
// Vertex
|
|
v2g_fluidsim_clip main(v_fluidsim input)
|
|
{
|
|
v2g_fluidsim_clip output = (v2g_fluidsim_clip)0;
|
|
|
|
output.pos = float4(input.position.x, input.position.y, input.position.z, 1.0);
|
|
output.cell0 = float3(input.textureCoords0.x, input.textureCoords0.y, input.textureCoords0.z);
|
|
output.texcoords = float3((input.textureCoords0.x) / (textureWidth),
|
|
(input.textureCoords0.y) / (textureHeight),
|
|
(input.textureCoords0.z + 0.5) / (textureDepth));
|
|
|
|
float x = output.texcoords.x;
|
|
float y = output.texcoords.y;
|
|
float z = output.texcoords.z;
|
|
|
|
// compute single texel offsets in each dimension
|
|
float invW = 1.0 / textureWidth;
|
|
float invH = 1.0 / textureHeight;
|
|
float invD = 1.0 / textureDepth;
|
|
|
|
output.LR = float2(x - invW, x + invW);
|
|
output.BT = float2(y - invH, y + invH);
|
|
output.DU = float2(z - invD, z + invD);
|
|
|
|
// float3 clip0 : SV_ClipDistance0;
|
|
// float3 clip1 : SV_ClipDistance1;
|
|
// for (int i = 0; i < 3; ++i)
|
|
// {
|
|
// output.clip0[i] = dot(float4(output.cell0, 1), OOBBClipPlane[i]);
|
|
// output.clip1[i] = dot(float4(output.cell0, 1), OOBBClipPlane[i + 3]);
|
|
// // Make box a voxel bigger in each direction
|
|
// // BOX_EXPANSION - voxel diagonal length
|
|
// // output.clip0[i] += BOX_EXPANSION;
|
|
// // output.clip1[i] += BOX_EXPANSION;
|
|
// }
|
|
|
|
output.clip0.x = dot(float4(output.cell0, 1), OOBBClipPlane[0]);
|
|
output.clip0.y = dot(float4(output.cell0, 1), OOBBClipPlane[1]);
|
|
output.clip0.z = dot(float4(output.cell0, 1), OOBBClipPlane[2]);
|
|
|
|
output.clip1.x = dot(float4(output.cell0, 1), OOBBClipPlane[3]);
|
|
output.clip1.y = dot(float4(output.cell0, 1), OOBBClipPlane[4]);
|
|
output.clip1.z = dot(float4(output.cell0, 1), OOBBClipPlane[5]);
|
|
|
|
return output;
|
|
}
|
|
|