#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;
}

