#include <boost/static_assert.hpp>
Go to the source code of this file.
Classes | |
struct | SimpleStringOrdering |
Simple functor for sorting string parameters by length and content. More... | |
Macros | |
#define | __MITSUBA_CORE_UTIL_H_ |
Functions | |
String-related utility functions | |
MTS_EXPORT_CORE std::vector < std::string > | tokenize (const std::string &string, const std::string &delim) |
Given a list of delimiters, tokenize a std::string into a vector of strings. More... | |
MTS_EXPORT_CORE std::string | trim (const std::string &str) |
Trim spaces (' ', '\n', '\r', '\t') from the ends of a string. More... | |
MTS_EXPORT_CORE std::string | indent (const std::string &string, int amount=1) |
Indent a string (Used for recursive toString() structure dumping) More... | |
MTS_EXPORT_CORE std::string | formatString (const char *pFmt,...) |
Wrapped snprintf. More... | |
MTS_EXPORT_CORE std::string | timeString (Float time, bool precise=false) |
Convert a time difference (in seconds) to a string representation. More... | |
MTS_EXPORT_CORE std::string | memString (size_t size, bool precise=false) |
Turn a memory size into a human-readable string. More... | |
template<class Iterator > | |
std::string | containerToString (const Iterator &start, const Iterator &end) |
Return a string representation of a list of objects. More... | |
Miscellaneous | |
MTS_EXPORT_CORE void *__restrict | allocAligned (size_t size) |
Allocate an aligned region of memory. More... | |
MTS_EXPORT_CORE void | freeAligned (void *ptr) |
Free an aligned region of memory. More... | |
MTS_EXPORT_CORE int | getCoreCount () |
Determine the number of available CPU cores. More... | |
MTS_EXPORT_CORE std::string | getHostName () |
Return the host name of this machine. More... | |
MTS_EXPORT_CORE size_t | getPrivateMemoryUsage () |
Return the process private memory usage in bytes. More... | |
MTS_EXPORT_CORE size_t | getTotalSystemMemory () |
Returns the total amount of memory available to the OS. More... | |
MTS_EXPORT_CORE std::string | getFQDN () |
Return the fully qualified domain name of this machine. More... | |
MTS_EXPORT_CORE bool | enableFPExceptions () |
Enable floating point exceptions (to catch NaNs, overflows, arithmetic with infinity). More... | |
MTS_EXPORT_CORE bool | disableFPExceptions () |
Disable floating point exceptions. More... | |
MTS_EXPORT_CORE void | restoreFPExceptions (bool state) |
Restore floating point exceptions to the specified state. More... | |
template<typename T , typename U > | |
T | union_cast (const U &val) |
Cast between types that have an identical binary representation. More... | |
template<typename T > | |
T | endianness_swap (T value) |
Swaps the byte order of the underlying representation. More... | |
template<typename DataType , typename IndexType > | |
void | permute_inplace (DataType *data, std::vector< IndexType > &perm) |
Apply an arbitrary permutation to an array in linear time. More... | |
Numerical utility functions | |
MTS_EXPORT_CORE bool | solveQuadratic (Float a, Float b, Float c, Float &x0, Float &x1) |
Solve a quadratic equation of the form a*x^2 + b*x + c = 0. More... | |
MTS_EXPORT_CORE bool | solveQuadraticDouble (double a, double b, double c, double &x0, double &x1) |
Solve a double-precision quadratic equation of the form a*x^2 + b*x + c = 0. More... | |
Float | radToDeg (Float value) |
Solve a quadratic equation of the form a*x^2 + b*x + c = 0. More... | |
Float | degToRad (Float value) |
Convert degrees to radians. More... | |
template<typename VectorType > | |
Float | unitAngle (const VectorType &u, const VectorType &v) |
Numerically well-behaved routine for computing the angle between two unit direction vectors. More... | |
Warping and sampling-related utility functions | |
MTS_EXPORT_CORE bool | solveLinearSystem2x2 (const Float a[2][2], const Float b[2], Float x[2]) |
Solve a 2x2 linear equation system using basic linear algebra. More... | |
MTS_EXPORT_CORE void | coordinateSystem (const Vector &a, Vector &b, Vector &c) |
Complete the set {a} to an orthonormal base. More... | |
MTS_EXPORT_CORE void | computeShadingFrame (const Vector &n, const Vector &dpdu, Frame &frame) |
Given a smoothly varying shading normal and a tangent of a shape parameterization, compute a smoothly varying orthonormal frame. More... | |
MTS_EXPORT_CORE void | computeShadingFrameDerivative (const Vector &n, const Vector &dpdu, const Vector &dndu, const Vector &dndv, Frame &du, Frame &dv) |
Compute the spatial derivative of computeShadingFrame. More... | |
MTS_EXPORT_CORE void | stratifiedSample1D (Random *random, Float *dest, int count, bool jitter) |
Generate (optionally jittered) stratified 1D samples. More... | |
MTS_EXPORT_CORE void | stratifiedSample2D (Random *random, Point2 *dest, int countX, int countY, bool jitter) |
Generate (optionally jittered) stratified 2D samples. More... | |
MTS_EXPORT_CORE void | latinHypercube (Random *random, Float *dest, size_t nSamples, size_t nDim) |
Generate latin hypercube samples. More... | |
MTS_EXPORT_CORE Vector | sphericalDirection (Float theta, Float phi) |
Convert spherical coordinates to a direction. More... | |
MTS_EXPORT_CORE Point2 | toSphericalCoordinates (const Vector &v) |
Convert a direction to spherical coordinates. More... | |
Fresnel reflectance computation and related things | |
MTS_EXPORT_CORE Float | fresnelDielectric (Float cosThetaI, Float cosThetaT, Float eta) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface between two dielectrics. More... | |
MTS_EXPORT_CORE Float | fresnelDielectricExt (Float cosThetaI, Float &cosThetaT, Float eta) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface between two dielectrics (extended version) More... | |
Float | fresnelDielectricExt (Float cosThetaI, Float eta) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface between two dielectrics (extended version) More... | |
MTS_EXPORT_CORE Float | fresnelConductorApprox (Float cosThetaI, Float eta, Float k) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (approximate scalar version) More... | |
MTS_EXPORT_CORE Spectrum | fresnelConductorApprox (Float cosThetaI, const Spectrum &eta, const Spectrum &k) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (approximate vectorized version) More... | |
MTS_EXPORT_CORE Float | fresnelConductorExact (Float cosThetaI, Float eta, Float k) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (accurate scalar version) More... | |
MTS_EXPORT_CORE Spectrum | fresnelConductorExact (Float cosThetaI, const Spectrum &eta, const Spectrum &k) |
Calculates the unpolarized Fresnel reflection coefficient at a planar interface having a complex-valued relative index of refraction (accurate vectorized version) More... | |
MTS_EXPORT_CORE Float | fresnelDiffuseReflectance (Float eta, bool fast=false) |
Calculates the diffuse unpolarized Fresnel reflectance of a dielectric material (sometimes referred to as "Fdr"). More... | |
MTS_EXPORT_CORE Vector | reflect (const Vector &wi, const Normal &n) |
Specularly reflect direction wi with respect to the given surface normal. More... | |
MTS_EXPORT_CORE Vector | refract (const Vector &wi, const Normal &n, Float eta, Float &cosThetaT, Float &F) |
Specularly refract the direction wi into a planar dielectric with the given surface normal and index of refraction. More... | |
MTS_EXPORT_CORE Vector | refract (const Vector &wi, const Normal &n, Float eta, Float cosThetaT) |
Specularly refract the direction wi into a planar dielectric with the given surface normal and index of refraction. More... | |
MTS_EXPORT_CORE Vector | refract (const Vector &wi, const Normal &n, Float eta) |
Specularly refract the direction wi into a planar dielectric with the given surface normal and index of refraction. More... | |
#define __MITSUBA_CORE_UTIL_H_ |