Signed Distance Fields 1.0
|
Smooth union with exponential blend. More...
#include <sdf.h>
Public Member Functions | |
SDFSmoothUnionExp (SDFNode *, SDFNode *, const double &) | |
Create a smooth union. | |
virtual | ~SDFSmoothUnionExp () |
Destructor. | |
virtual double | Signed (const Vector &) const |
Compute the signed distance. | |
QString | GetShader (PrimitiveManager *, std::list< QString > *, bool *) const |
Compute the GLSL code to render the node. | |
virtual int | Memory () const |
Return the size of a sub-tree. | |
virtual SDFNode * | Copy () const |
Deep copy. | |
![]() | |
SDFSmoothUnion (SDFNode *, SDFNode *, const double &) | |
Create a smooth union. | |
SDFSmoothUnion (SDFNode *, SDFNode *, SDFNode *, const double &) | |
Create a smooth union. | |
SDFSmoothUnion (SDFNode *, SDFNode *, SDFNode *, SDFNode *, const double &) | |
Create a smooth union. | |
virtual | ~SDFSmoothUnion () |
Destructor. | |
virtual Vector | Gradient (const Vector &) const |
Compute the gradient of the field. | |
QString | GetCostShader (PrimitiveManager *, std::list< QString > *, bool *) const |
Compute the GLSL code to compute the cost of a call to sdf. | |
QString | GetGradientShader (PrimitiveManager *, std::list< QString > *, bool *) const |
Compute the GLSL code to compute the gradient the sdf. | |
![]() | |
SDFUnion (SDFNode *, SDFNode *) | |
Create a union node. | |
SDFUnion (SDFNode *, SDFNode *, SDFNode *) | |
Create a union hierarchy ((A ∪ B) ∪ C). | |
SDFUnion (SDFNode *, SDFNode *, SDFNode *, SDFNode *) | |
Create a union hierarchy ((A ∪ B) ∪ (C ∪ D)). | |
SDFUnion (const QVector< SDFNode * > &) | |
Creates a union operator node given an array of nodes. | |
virtual | ~SDFUnion () |
Destructor. | |
double | BID (const Vector &) const |
Compute a lower bound of the signed distance. | |
virtual void | ComputeCostBID (const Vector &) |
Compute the number of reccursive calls to BID() and Signed(). | |
virtual Color | GetColor (const Vector &) const |
Compute the color. | |
QString | GetShader (PrimitiveManager *, std::list< QString > *, bool *) const |
Compute the GLSL code to render the node. | |
QString | GetCostShader (PrimitiveManager *, std::list< QString > *, bool *) const |
Compute the GLSL code to compute the cost of a call to sdf. | |
QString | GetGradientShader (PrimitiveManager *, std::list< QString > *, bool *) const |
Compute the GLSL code to compute the gradient the sdf. | |
QString | GetMaterialShader (PrimitiveManager *, std::list< QString > *, bool *) const |
Compute the GLSL code to compute the material the sdf at a given point 'p' with a given normal 'n'. | |
![]() | |
SDFBinary (SDFNode *, SDFNode *) | |
Create a binary node. | |
virtual | ~SDFBinary () |
Recursively destroy the sub-trees. | |
virtual double | K (const Box &) const |
Return the local Lipschitz constant. | |
virtual void | ComputeCostSigned (const Vector &) |
Compute the number of reccursive calls to Signed(). | |
int | Nodes () const |
Compute the number of nodes in the sub-tree. | |
![]() | |
SDFNode () | |
Create a generic node. | |
virtual | ~SDFNode () |
Destructor. | |
virtual bool | Inside (const Vector &) const |
Check if a point is inside or outside. | |
virtual double | K () const |
Return the Lipschitz constant of the node. | |
Box | GetBox () const |
Return the bounding box of the node. | |
Additional Inherited Members | |
![]() | |
static double | Signed (const double &, const double &) |
Compute the union, i.e. the minimum of two distance field values. | |
static SDFNode * | QuadricCurve (const double &, const QuadricCurveSet &) |
This function creates a quadric Bézier curve controled by an array of control knots. | |
static SDFNode * | RevolutionQuadricTubeSet (const Vector &, const Vector &, const double &, const QuadricCurve2Set &) |
Creates a surface of revolution. | |
static SDFNode * | RevolutionQuadricTubeSet (const double &, const QuadricCurve2Set &) |
Creates a surface of revolution. | |
![]() | |
static void | ResetReccursiveCalls () |
Reset the reccursive call property of the tree. | |
static int | ReccursiveCalls () |
Returns the number of reccursive calls to Value() and BID(). | |
static void | addReccursiveCalls (int) |
Add a nulber to the nbreccursiveCalls. | |
static SDFNode * | Stalactite (const Vector &p, const double &h, const double &r, bool noise=true, Random &random=Random::R239, const double &largeur=0.25, const double &espacement=0.61) |
Procedural parameterized stalactite. | |
static SDFNode * | SpherePieces () |
Sphere carved, placed on a cylinder. Nice scene for testing sharp features reconstruction. | |
![]() | |
double | smooth |
Smoothing distance. | |
![]() | |
SDFNode * | e [2] = { nullptr,nullptr } |
Sub-trees. | |
![]() | |
Box | box = Box::Infinity |
Box bounding the surface. | |
double | k = 1.0 |
Lipschitz constant. | |
int | cost = 1 |
Relative computation cost. | |
![]() | |
static constexpr double | Epsilon = 0.01 |
Small constant used for bounding volumes. | |
static int | reccursiveCalls = 0 |
Recursive calls to BID or Value. | |
Smooth union with exponential blend.
Create a smooth union.
Resembles the blending operator of the BlobTree.
a,b | Sub-trees. |
s | Smoothing distance. |
|
virtual |
Compute the GLSL code to render the node.
Reimplemented from SDFSmoothUnion.
|
virtual |
Return the size of a sub-tree.
Reimplemented from SDFSmoothUnion.
|
virtual |
Compute the signed distance.
p | Point. |
Generalized exponential smoothing function between two distances.
This is the Mellowmax, a non-expansive operator, with a coefficient -alpha the asymptotically converges to minimum. This operator can be viewed as a particular instantiation of the quasi-arithmetic mean.
Reimplemented from SDFSmoothUnion.