Core library of the framework. More...

Namespaces

 SurfaceInteraction
 Generalized BSDF type. BSDF types of the surface interaction.
 

Classes

class  Aligned< Align >
 
class  SIMDAlignedType
 SIMD aligned type. Inherited class automatically supports aligned version of operator new and delete for SIMD types. More...
 
class  aligned_allocator< T, Alignment >
 Aligned allocator for STL containers. More...
 
struct  aligned_allocator< T, Alignment >::rebind< U >
 
struct  boost_pool_aligned_allocator< Align >
 Aligned allocator for boost::pool. More...
 
class  Configurable
 Configurable components. More...
 
class  DebugUtils
 Debug helper functions. More...
 
class  SEHUtils
 SEH utilility. More...
 
struct  Intersection
 Intersection. More...
 
class  IntersectionUtils
 Intersection utilities. More...
 
class  Logger
 Logger. More...
 
struct  LogIndenter
 
struct  Ray
 Ray. More...
 
class  RenderUtils
 Utility functions for rendering. More...
 
struct  DiscreteSPD< N >
 
struct  DiscreteSPD< 3 >
 
class  DynamicLibrary
 Dynamic library. More...
 
struct  InternalPolicy
 
struct  ExternalPolicy
 
class  StaticInit< InitPolicy >
 Static initialization. More...
 
class  StaticInit< InternalPolicy >
 
class  StaticInit< ExternalPolicy >
 
struct  SurfaceGeometry
 Surface geometry information. More...
 
class  TriangleUtils
 Utility function for triangle meshes. More...
 

Macros

#define LM_ENUM_TYPE_MAP(EnumType)
 
#define LM_ENUM_TO_STRING(EnumType, EnumValue)   EnumType##_String[(int)(EnumValue)]
 
#define LM_STRING_TO_ENUM(EnumType, EnumString)   EnumTypeMap<EnumType>::ToEnum(EnumString)
 
#define LM_LOG_ERROR(message)    Logger::Log(LogType::Error, message, __FILE__, __LINE__, false, false)
 
#define LM_LOG_WARN(message)    Logger::Log(LogType::Warn, message, __FILE__, __LINE__, false, false)
 
#define LM_LOG_INFO(message)    Logger::Log(LogType::Info, message, __FILE__, __LINE__, false, false)
 
#define LM_LOG_DEBUG(message)    Logger::Log(LogType::Debug, message, __FILE__, __LINE__, false, false)
 
#define LM_LOG_ERROR_SIMPLE(message)   Logger::Log(LogType::Error, message, __FILE__, __LINE__, false, true)
 
#define LM_LOG_WARN_SIMPLE(message)   Logger::Log(LogType::Warn, message, __FILE__, __LINE__, false, true)
 
#define LM_LOG_INFO_SIMPLE(message)   Logger::Log(LogType::Info, message, __FILE__, __LINE__, false, true)
 
#define LM_LOG_DEBUG_SIMPLE(message)   Logger::Log(LogType::Debug, message, __FILE__, __LINE__, false, true)
 
#define LM_LOG_INPLACE(message)    Logger::Log(LogType::Info, message, __FILE__, __LINE__, true, false)
 
#define LM_LOG_INPLACE_END()    std::cout << std::endl
 
#define LM_LOG_INDENTER()    LogIndenter LM_TOKENPASTE2(logIndenter_, __LINE__)
 
#define LM_USE_SPECTRUM_RGB
 
#define LM_SPECTRUM_RGB   1
 
#define LM_EXPORTED_F(Func, ...)
 

Typedefs

using SPD = DiscreteSPD< 3 >
 
using InitPolicy = ExternalPolicy
 

Enumerations

enum  LogType { LogType::Error, LogType::Warn, LogType::Info, LogType::Debug }
 
enum  TransportDirection { TransportDirection::LE, TransportDirection::EL }
 Transport directioin. The direction of light transport. More...
 

Functions

LM_INLINE auto operator+ (const DiscreteSPD< 3 > &spd1, const DiscreteSPD< 3 > &spd2) -> DiscreteSPD< 3 >
 
LM_INLINE auto operator- (const DiscreteSPD< 3 > &spd1, const DiscreteSPD< 3 > &spd2) -> DiscreteSPD< 3 >
 
LM_INLINE auto operator* (const DiscreteSPD< 3 > &spd1, const DiscreteSPD< 3 > &spd2) -> DiscreteSPD< 3 >
 
LM_INLINE auto operator/ (const DiscreteSPD< 3 > &spd1, const DiscreteSPD< 3 > &spd2) -> DiscreteSPD< 3 >
 
LM_INLINE auto operator/ (const DiscreteSPD< 3 > &spd, Float s) -> DiscreteSPD< 3 >
 

Detailed Description

Core library of the framework.

Macro Definition Documentation

#define LM_ENUM_TYPE_MAP (   EnumType)
Value:
template <typename T> \
class EnumTypeMap; \
template <> \
class EnumTypeMap<EnumType> { \
public: \
EnumTypeMap() { \
for (size_t i = 0; i < sizeof(EnumType##_String) / sizeof(EnumType##_String[0]); i++) \
TypeMap[EnumType##_String[i]] = (EnumType)(i); \
} \
static EnumType ToEnum(const std::string& s) { return Instance().TypeMap[s]; } \
static EnumTypeMap<EnumType>& Instance() { static EnumTypeMap<EnumType> instance; return instance; } \
private: \
std::unordered_map<std::string, EnumType> TypeMap; \
}
#define LM_EXPORTED_F (   Func,
  ... 
)
Value:
[&]() { \
using FuncPtrType = decltype(&Func); \
static auto func = []() -> FuncPtrType { \
const auto* lib = StaticInit<ExternalPolicy>::Instance().Library(); \
const FuncPtrType f = reinterpret_cast<FuncPtrType>(lib->GetFuncPointer(#Func)); \
if (!f) std::exit(EXIT_FAILURE); \
return f; \
}(); \
return func(__VA_ARGS__); \
}()
Static initialization.
Definition: static.h:200

Enumeration Type Documentation

enum LogType
strong

Log message type.

Defines the types of log messages. The user wants to choose the appropriate types according to the severity of the log message. For some environment, the output message is colored according to the types, e.g., red for the Error type.

Enumerator
Error 

Error.

Warn 

Warning.

Info 

Information.

Debug 

Debugging (used only for the debug mode).

enum TransportDirection
strong

Transport directioin. The direction of light transport.

Enumerator
LE 

Light to sensor (L to E)

EL 

Sensor to light (E to L)