Photon Engine 2.0.0-beta
A physically based renderer.
Loading...
Searching...
No Matches
TBvhSimdComputingContext.h File Reference
#include "Math/Algorithm/BVH/TWideBvhNode.h"
#include "Math/Geometry/TAABB3D.h"
#include "Math/TVector3.h"
#include <Common/primitive_type.h>
#include <Common/config.h>
#include <Common/compiler.h>
#include <Common/utility.h>
#include <Common/memory.h>
#include <Common/assertion.h>
#include <cstddef>
#include <type_traits>
#include <array>
#include <limits>
#include <concepts>
#include <utility>

Go to the source code of this file.

Classes

struct  ph::math::detail::bvh::TFloatN< N >
 
class  ph::math::TBvhSimdComputingContext< N, Index >
 A SIMD computing context for BVH. Use isSupported() to check the availability of the required hardware feature. More...
 

Namespaces

namespace  ph
 The root for all renderer implementations.
 
namespace  ph::math
 Math functions and utilities.
 
namespace  ph::math::detail
 
namespace  ph::math::detail::bvh
 

Typedefs

using BFloat = detail::bvh::TFloatN<BATCH_SIZE>::Type
 

Functions

template<std::size_t N, typename Index >
class ph::math::TBvhSimdComputingContext ph::math::sizeof (float32) *BATCH_SIZE >
 
void setSegment (const TVector3< float32 > &segmentOrigin, const TVector3< float32 > &rcpSegmentDir)
 
void setNode (const TWideBvhNode< N, Index > &node)
 
template<bool IS_ROBUST = true>
void intersectAabbVolumes (const float32 segmentMinT, const float32 segmentMaxT)
 
else if (BATCH_SIZE==8)
 
 for (std::size_t di=0;di< 3;++di)
 
if constexpr (IS_ROBUST)
 

Variables

struct ph::math::detail::bvh::TFloatN ph::math::detail::bvh::sizeof
 
class ph::math::TBvhSimdComputingContext ph::math::MaskType
 
class ph::math::TBvhSimdComputingContextph::math::BATCH_SIZE
 

Typedef Documentation

◆ BFloat

using BFloat = detail::bvh::TFloatN<BATCH_SIZE>::Type

Function Documentation

◆ constexpr()

if sizeof::constexpr ( IS_ROBUST )

◆ for()

sizeof::for ( )

◆ if()

else sizeof::if ( BATCH_SIZE = = 8)

◆ intersectAabbVolumes()

template<bool IS_ROBUST = true>
void sizeof::intersectAabbVolumes ( const float32 segmentMinT,
const float32 segmentMaxT )

◆ setNode()

void sizeof::setNode ( const TWideBvhNode< N, Index > & node)

◆ setSegment()

void sizeof::setSegment ( const TVector3< float32 > & segmentOrigin,
const TVector3< float32 > & rcpSegmentDir )