bool PassGBuffer_Fluid::culling( PSET_RID psid, const PSetInstance &inst )
{
    const ParticleSet *rc = atmGetParticleSet(psid);
    vec4 posf = inst.transform[3];
    posf.w = 0.0f;
    simdvec4 pos = simdvec4(posf);
    AABB aabb = rc->getAABB();
    aabb[0] = (simdvec4(aabb[0])+pos).Data;
    aabb[1] = (simdvec4(aabb[1])+pos).Data;
    if(!ist::TestFrustumAABB(*atmGetViewFrustum(), aabb)) {
        return false;
    }
    return true;
}
Beispiel #2
0
__forceinline simdvec3 _project(const simdmat4& matrix, const simdvec3& point)
{
   simdvec4 vec_hs = matrix * simdvec4(point.x, point.y, point.z, simdfloat(1.0f));
   return simdvec3(vec_hs.x, vec_hs.y, vec_hs.z) / simdvec3(vec_hs.w);
}