godot/thirdparty/embree/kernels/geometry/triangle_intersector_pluecker.h

// Copyright 2009-2021 Intel Corporation
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "triangle.h"
#include "trianglev.h"
#include "trianglev_mb.h"
#include "intersector_epilog.h"

/*! Modified Pluecker ray/triangle intersector. The test first shifts
 *  the ray origin into the origin of the coordinate system and then
 *  uses Pluecker coordinates for the intersection. Due to the shift,
 *  the Pluecker coordinate calculation simplifies and the tests get
 *  numerically stable. The edge equations are watertight along the
 *  edge for neighboring triangles. */

namespace embree
{
  namespace isa
  {
    template<int M, typename UVMapper>
    struct PlueckerHitM
    {};

    template<int M, bool early_out = true>
    struct PlueckerIntersector1
    {};

    template<int K, typename UVMapper>
    struct PlueckerHitK
    {};
    
    template<int M, int K>
    struct PlueckerIntersectorK
    {};
  }
}