|
EBGeometry
Compact, header-only C++ library for fast evaluation of signed distance functions
|
Files | |
| EBGeometry_Affine.hpp | |
| Declaration of Affine3T, an affine map of 3D space (a 3x3 matrix and a shift). | |
| EBGeometry_AnalyticDistanceFunctions.hpp | |
| File containing various analytic signed distance fields. | |
| EBGeometry_AnalyticRayForms.hpp | |
| Ray forms (see RayForm) for the analytic shapes that have a closed-form crossing: PlaneSDF, SphereSDF, BoxSDF, CylinderSDF, InfiniteCylinderSDF, CapsuleSDF, EllipsoidSDF, CappedConeSDF, PolygonPrismSDF, TubeSDF, CutSphereSDF and WedgeSDF. With this header included, firstHit() and intersects() on these shapes are exact instead of marched, and so are compositions of them (see EBGeometry_CSGRayForms.hpp). Each is convex, so the ray is inside it over one span, which spans() gives, except the tube, whose hollow can split it in two. | |
| EBGeometry_Array.hpp | |
| A fixed-size array that compiles for both host and device. | |
| EBGeometry_Blend.hpp | |
| The blend operators that smooth unions, intersections and differences use: ExpMinOp, ExpMaxOp, SmoothMinOp, SmoothMaxOp and their constexpr instances. | |
| EBGeometry_BoundingVolumes.hpp | |
| Declarations of bounding volume types used in bounding volume hierarchies. | |
| EBGeometry_BVH.hpp | |
| Bounding volume hierarchies: everything in EBGeometry_PackedBVH.hpp, EBGeometry_TreeBVH.hpp, EBGeometry_BVHBuild.hpp and EBGeometry_BVHRefit.hpp. | |
| EBGeometry_BVHBuild.hpp | |
| Host-side BVH construction: the PackedBVH constructors that pack a TreeBVH, and PackedBVH's static builds that partition a primitive list directly (build(), buildTopDown(), buildBottomUp() and buildClusterSAH()). | |
| EBGeometry_BVHQuery.hpp | |
| What PackedBVH::traverse() tracks through a tree: query types, the child-box rows they test, and the order the children are visited in. | |
| EBGeometry_BVHRefit.hpp | |
| Refitting a PackedBVH where its pool is: one tree level at a time on a device, the host's sweep otherwise. | |
| EBGeometry_BVHUnion.hpp | |
| BVH-accelerated unions of many primitives of one or more types: BVHUnion and BVHSmoothUnion. | |
| EBGeometry_CloudBVH.hpp | |
| The linear BVH build shared by PointCloudBVH and SphereCloudBVH, over a cloud of points or spheres. | |
| EBGeometry_Constants.hpp | |
| Mathematical constants for EBGeometry. | |
| EBGeometry_CSG.hpp | |
| Constructive solid geometry: the blend operators, the BVH unions, the expression builder (Expr, Union, Intersection, Difference, Translate, ...), the Tape that evaluates a composed object, and the fused operations (Fused::Union, ...). | |
| EBGeometry_CSGOps.hpp | |
| The arithmetic of each CSG operation, shared by the Tape's evaluator and the fused operations. | |
| EBGeometry_CSGRayForms.hpp | |
| The ray forms (see RayForm) of compositions: the fused union, intersection, difference, complement and affine maps (Fused::Node), and BVHUnion. Each traces its operands' spans along the ray (see EBGeometry_RaySpans.hpp) and combines them, so that a composition of shapes with ray forms is traced exactly; an operand without one is marched by itself, in its own box. The fused offset and annulus of a shape whose level sets have a closed form have their ray form in EBGeometry_OffsetRayForms.hpp. The other fused operations (smooth blends, offsets and annuli of anything else, elongation, repetition, blur, mollification) have no ray form, and are marched. Tape's ray form, which does the same clause by clause, is in EBGeometry_Tape.hpp. | |
| EBGeometry_DCEL.hpp | |
| Namespace documentation. | |
| EBGeometry_DCEL_Edge.hpp | |
| Declaration of a half-edge class for use in DCEL descriptions of polygon tessellations. | |
| EBGeometry_DCEL_Face.hpp | |
| Declaration of a polygon face class for use in DCEL descriptions of polygon tessellations. | |
| EBGeometry_DCEL_Iterator.hpp | |
| Declaration of iterators for DCEL surface tessellations. | |
| EBGeometry_DCEL_Mesh.hpp | |
| Declaration of a mesh class which stores a DCEL mesh (with signed distance functions) | |
| EBGeometry_DCEL_Reconcile.hpp | |
| Reconciling a DCEL mesh whose vertices moved, where its pool is: in parallel on a device, in host loops otherwise. | |
| EBGeometry_DCEL_Vertex.hpp | |
| Declaration of a vertex class for use in DCEL descriptions of polygon tessellations. | |
| EBGeometry_DistanceQuality.hpp | |
| How far a function's value can be trusted as a distance: DistanceQuality, and the distanceQualityOf trait that reads it from a type. | |
| EBGeometry_Expr.hpp | |
| The tape's front end: Expr, a host-side value that describes a composed object, and the free functions that build it (Union, SmoothUnion, Intersection, Difference, Translate, Rotate, ...). | |
| EBGeometry_FunctionQueries.hpp | |
| Queries that work on any function of a point: a bounding-volume estimate and a normal. | |
| EBGeometry_Fused.hpp | |
| Fused CSG: the operations of the expression builder (EBGeometry_Expr.hpp) as types, which the compiler evaluates fully inlined, on the host and on a device. | |
| EBGeometry_GPU.hpp | |
| GPU portability layer: host/device decoration macros and backend detection. | |
| EBGeometry_GPUAlgorithms.hpp | |
| Building blocks for builds that run with GPU::parallelFor(): a bounding-box reduction, a bitonic sort and an exclusive scan. | |
| EBGeometry_GPURuntime.hpp | |
| Backend-neutral GPU runtime API layer (CUDA or HIP) plus the EBGEOMETRY_GPU_CHECK macro. | |
| EBGeometry_GPUTransform.hpp | |
| GPU::parallelFor() and GPU::transform(), which run a functor over many indices or inputs: in a kernel in a CUDA or HIP build, and in a host loop otherwise. | |
| EBGeometry_Macros.hpp | |
| Utility macros for EBGeometry. | |
| EBGeometry_Math.hpp | |
| Scalar helpers and numeric limits that compile for both host and device. | |
| EBGeometry_MemoryResource.hpp | |
| Placement-policy layer for the GPU memory foundation: the abstract MemoryResource and its concrete host, emulated device, device, managed, pinned and mapped implementations. | |
| EBGeometry_MeshDistanceFunctions.hpp | |
| Declaration of signed distance functions for DCEL meshes. | |
| EBGeometry_MeshRayForms.hpp | |
| The ray forms (see RayForm) of the mesh SDFs. TriMeshSDF: its BVH walked along the ray (PackedBVH::traverse() with BVH::RayQuery), and its triangles crossed exactly (TriangleRay::crossing()). MeshSDF: the same walk, its polygon faces crossed exactly (DCEL::FaceT::rayCrossing()). FlatMeshSDF: every face, without a BVH. With this header included, firstHit() and intersects() on a mesh SDF are exact instead of marched, and so are compositions of mesh SDFs (see EBGeometry_CSGRayForms.hpp), through spans(): the crossings along the ray, nearest first, paired into spans by the side of the face the ray crosses from. A closed mesh is needed for the spans to mean inside and outside. | |
| EBGeometry_OffsetRayForms.hpp | |
| Ray forms of offsets and annuli: the level sets of their operands' values. | |
| EBGeometry_PackedBVH.hpp | |
| The flattened, device-callable bounding volume hierarchy: PackedBVH, its node layout, traversals and the types shared with the builders. | |
| EBGeometry_ParseError.hpp | |
| Declaration of the exception the file readers throw. | |
| EBGeometry_Parser.hpp | |
| Declaration of utilities for reading files into EBGeometry data structures. | |
| EBGeometry_PODVector.hpp | |
| Placement-independent POD array views for the GPU memory foundation. | |
| EBGeometry_PointAoSoA.hpp | |
| Declaration of a PointSoAT group that carries point ids. | |
| EBGeometry_PointCloud.hpp | |
| Query results and helpers shared by the point-cloud search structures. | |
| EBGeometry_PointCloudBVH.hpp | |
| A point-cloud BVH built on PackedBVH: a linear BVH built where its pool is, and high-level nearest-neighbor / closest-point queries. | |
| EBGeometry_PointCloudDetail.hpp | |
| Internal helpers shared by PointCloudBVH and PointCloudHashGrid, and by their builds. | |
| EBGeometry_PointCloudHashGrid.hpp | |
| A uniform spatial grid over a point cloud: fast build and high-level nearest-neighbor / closest-point queries, interchangeable with PointCloudBVH. | |
| EBGeometry_PointSoA.hpp | |
| Declaration of a true SoA point-position group for SIMD nearest-neighbor evaluation. | |
| EBGeometry_PolygonSoup.hpp | |
| Declaration of the polygon soup the file readers return. | |
| EBGeometry_Pool.hpp | |
| Growable bump arena for the GPU memory foundation. | |
| EBGeometry_PrimitiveRef.hpp | |
| PrimitiveRef: which leaf of a composition decides its value at a point. | |
| EBGeometry_Random.hpp | |
| Centralized random sampling utilities. | |
| EBGeometry_Ray.hpp | |
| Ray queries on any shape: where a ray, or the segment between two points, first crosses its surface (firstHit()), and whether it crosses it at all (intersects()). | |
| EBGeometry_RaySpans.hpp | |
| The span arithmetic that traces a composition along a ray: each operand's spans (where the ray is inside it, see RaySpansT), combined by union, intersection and complement, mapped through affine maps, and read for the first crossing. The fused operations, BVHUnion and Tape all trace through it. | |
| EBGeometry_Render.hpp | |
| A renderer for looking at shapes: Camera, Settings, Image and Renderer, in namespace Render. | |
| EBGeometry_SFC.hpp | |
| Declaration of various space-filling curves. | |
| EBGeometry_SIMD.hpp | |
| Thin wrappers over SSE4.1, AVX and AVX-512 registers, so that one kernel template serves every SIMD width and the scalar path. | |
| EBGeometry_SimpleTimer.hpp | |
| Header for the SimpleTimer class. | |
| EBGeometry_SmoothRayForms.hpp | |
| Ray forms of smooth unions and intersections: traced exactly where they cannot differ from the plain operation, and marched only where they can. | |
| EBGeometry_Soup.hpp | |
| Declaration of polygon-soup utilities for building DCEL meshes. | |
| EBGeometry_SphereAoSoA.hpp | |
| Declaration of a PointAoSoA group with a radius lane: a group of spheres carrying their ids. | |
| EBGeometry_SphereCloud.hpp | |
| The sphere, query result and sphere sources of SphereCloudBVH. | |
| EBGeometry_SphereCloudBVH.hpp | |
| A BVH over spheres of differing radii, built where its pool is: the signed distance to their union and the closest sphere. | |
| EBGeometry_SphereCloudRayForm.hpp | |
| The ray form (see RayForm) of SphereCloudBVH: its BVH walked along the ray (PackedBVH::traverse() with BVH::RayQuery), each sphere crossed exactly (SphereAoSoA::rayIntervals()), and the spheres' spans united, so that where spheres overlap the ray crosses only the surface of their union. With this header included, firstHit() on a sphere cloud is exact instead of marched, and so are the compositions it is part of, through spans(). | |
| EBGeometry_StreamOperators.hpp | |
| Stream insertion (operator<<) for Vec3T and AABBT. | |
| EBGeometry_Tape.hpp | |
| Declaration of Tape, a composed object (an Expr) compiled into a pool, and its evaluator. | |
| EBGeometry_TreeBVH.hpp | |
| The pointer-based, host-only BVH used for building: TreeBVH, the partitioners and the leaf predicate, and pack()/packWith() into a PackedBVH. | |
| EBGeometry_Triangle.hpp | |
| Declaration of a triangle class with signed distance functionality. | |
| EBGeometry_TriangleAoSoA.hpp | |
| Declaration of a face-id-carrying wrapper around TriangleSoAT. | |
| EBGeometry_TriangleDistance.hpp | |
| The triangle distance kernels, written once for a scalar and for every SIMD::Pack. | |
| EBGeometry_TriangleRay.hpp | |
| The one triangle ray-crossing kernel, written once for a scalar and for every SIMD::Pack. | |
| EBGeometry_TriangleSoA.hpp | |
| Declaration of SoA triangle group for SIMD signed-distance evaluation. | |
| EBGeometry_Vec.hpp | |
| Declaration of 2D and 3D point/vector classes with templated precision, and free functions on them. | |
| EBGeometry_Viewer.hpp | |
| Render::view(): look at a shape in an interactive window. | |
| EBGeometry_ViewerFont.hpp | |
| The bitmap font the viewer writes its overlay in. | |