Photon Engine 2.0.0-beta
A physically based renderer.
Loading...
Searching...
No Matches
ph Namespace Reference

The root for all renderer implementations. More...

Namespaces

namespace  constant
 Contains frequently encountered constants.
 
namespace  detail
 Implementation detail mainly for internal usages.
 
namespace  field_set_op
 
namespace  fixed_integer_map_detail
 
namespace  frame_detail
 
namespace  frame_utils
 
namespace  function_detail
 
namespace  halton_detail
 
namespace  io_utils
 Helpers for data I/O.
 
namespace  lbconv
 
namespace  lta
 Light transport algorithms.
 
namespace  math
 Math functions and utilities.
 
namespace  pixel_buffer
 
namespace  pixel_texture
 
namespace  sdl
 
namespace  sdl_parser
 
namespace  texfunc
 

Classes

class  AAreaLight
 
class  AbradedOpaque
 
class  AbradedSurface
 
class  AbradedTranslucent
 
class  Actor
 
class  ActorCookException
 General exception thrown on cook error for actors. More...
 
class  AdaptiveSamplingRenderer
 
class  ADome
 An actor that models the sky of the scene. Model the sky in latitude-longitude format. Effectively a large energy emitting source encompassing the whole scene. More...
 
class  AGeometricLight
 
class  AIesAttenuatedLight
 
class  AImageDome
 Model the sky of the scene with an image. Using a background image to represent the energy emitted from far away. More...
 
class  ALight
 
class  AMaskedModel
 
class  AModel
 
class  AModelLight
 
class  AnisoTrowbridgeReitz
 
class  APhantomModel
 
class  ApiDatabase
 
class  ApiHelper
 
class  APointLight
 
class  APreethamDome
 Model the sky of the scene with an image. More...
 
class  ARectangleLight
 
class  ASphereLight
 
class  ATransformedInstance
 
class  AttributeRenderer
 
class  AttributeTags
 
class  BfConstant
 
class  BinaryFileInputStream
 
class  BinaryFileOutputStream
 
class  BinaryFileReader
 
class  BinaryMixedImage
 
class  BinaryMixedSurfaceMaterial
 
class  BlackBodyRadiationImage
 
class  BlockFunction
 
class  BNEEPTEstimator
 
class  BruteForceIntersector
 
class  BsdfEvalInput
 Input for BsdfEvalQuery. More...
 
class  BsdfEvalOutput
 Output for BsdfEvalQuery. More...
 
class  BsdfEvalQuery
 Information for obtaining a sample value from BSDF. More...
 
class  BsdfHelper
 
class  BsdfPdfInput
 Input for BsdfPdfQuery. More...
 
class  BsdfPdfOutput
 Output for BsdfPdfQuery. More...
 
class  BsdfPdfQuery
 Information for the probability of generating a specific BSDF sample. More...
 
class  BsdfQueryContext
 The environment a BSDF query is performed under. More...
 
class  BsdfSampleInput
 Input for BsdfSampleQuery. More...
 
class  BsdfSampleOutput
 Output for BsdfSampleQuery. More...
 
class  BsdfSampleQuery
 Information for generating a BSDF sample. More...
 
class  BVPTDLEstimator
 A direct lighting only estimator using path tracing. More...
 
class  BVPTEstimator
 A GI estimator using pure path tracing. More...
 
class  ByteBuffer
 An auto-resizable byte storage. More...
 
class  ByteBufferInputStream
 An in-memory byte stream designed for I/O performance. More...
 
class  CheckerboardImage
 
class  ConductiveInterfaceInfo
 Data describing the effects when light hits an conductive interface. More...
 
class  ConductorFresnel
 Conductor-dielectric interface Fresnel effect. More...
 
class  ConstantImage
 
class  ConstantVelocityMotion
 
class  CookedDataStorage
 
class  CookedGeometry
 
class  CookedMotion
 
class  CookedNamedResource
 
class  CookedResourceCollection
 Provides thread-safe cooked data creation and storage. All methods are thread-safe to call, however manipulating the created data is not thread-safe unless stated explicitly. More...
 
class  CookedResourceCollectionBase
 Provides thread-safe cooked data creation and storage. All methods are thread-safe to call, however manipulating the created data is not thread-safe unless stated explicitly. More...
 
class  CookException
 General exception thrown on cook error. More...
 
class  CookingConfig
 
class  CookingContext
 Information about the world being cooked. More...
 
class  CookOrder
 Controls the order actors are cooked. More...
 
class  CoreCookedUnit
 
class  CoreCookingContext
 
class  CoreResource
 
class  CoreSdlResource
 Core SDL resource abstraction. This class does not provide static/dynamic category information. The work is left for derived classes. See SdlResourceBase for more implementation requirements. More...
 
class  CsvFile
 
class  CsvFileRow
 
class  DammertzDispatcher
 
class  DielectricFresnel
 Dielectric-dielectric interface Fresnel effect. More...
 
class  DielectricInterfaceInfo
 Data describing the effects when light hits an dielectric interface. More...
 
class  DiffuseSurfaceEmitter
 Diffusive surface emitter. More...
 
class  DiffuseSurfaceEmitterBase
 Base for diffusive surface emitters. More...
 
class  DirectEnergyPdfInput
 Input for DirectEnergyPdfQuery. More...
 
class  DirectEnergyPdfOutput
 Output for DirectEnergyPdfQuery. More...
 
class  DirectEnergyPdfQuery
 Information for the probability of generating a specific sample for direct energy estimation. More...
 
class  DirectEnergySampleInput
 Input for DirectEnergySampleQuery. More...
 
class  DirectEnergySampleOutput
 Output for DirectEnergySampleQuery. More...
 
class  DirectEnergySampleQuery
 Information for generating a sample for direct energy estimation. More...
 
struct  DomeRadianceFunctionInfo
 
struct  EmbeddedPrimitiveMetaGetter
 
class  EmitFunction
 
class  Emitter
 An electromagnetic energy emitting source. The emitted energy can be captured by a Receiver. More...
 
class  EmitterSampler
 
class  EnergyEmissionSampleInput
 Input for EnergyEmissionSampleQuery. More...
 
class  EnergyEmissionSampleOutput
 Output for EnergyEmissionSampleQuery. More...
 
class  EnergyEmissionSampleQuery
 Information for generating a sample for energy emission. More...
 
class  Engine
 The render engine. More...
 
class  EngineInitSettings
 Options for initializing core engine. These settings are loaded on engine startup and remains constant till engine exit. Changing the settings will require an engine restart to see the effect. More...
 
class  EqualSamplingRenderer
 
class  ESPowerFavoring
 
class  ESUniformRandom
 
class  ExactConductorFresnel
 Conductor-dielectric interface Fresnel effect. More...
 
class  ExactDielectricFresnel
 Dielectric-dielectric interface Fresnel effect. More...
 
class  ExrFileReader
 
class  ExrFileWriter
 
class  Filesystem
 Filesystem operations for the native operating system. More...
 
class  Film
 A camera film that receives any quantity. More...
 
class  FilteredInputStream
 
class  FixedSizeThreadPool
 A thread pool where works are accessed concurrently by blocking other threads. A thread pool that contains fixed number of threads for work processing. It is a blocking pool, i.e., works are enqueued and dequeued concurrently by blocking other threads, in FIFO order. The pool can be used concurrently, namely, it is thread-safe. However, the user must ensure that the pool is properly initialized before subsequent usages. More...
 
class  FormattedTextInputStream
 Read text with basic auto formatting applied. More...
 
class  FormattedTextOutputStream
 Write text with basic auto formatting applied. More...
 
class  FrameOperator
 
class  FrameProcessingPipeline
 Process frames with a series of operations. More...
 
class  FrameProcessor
 Manages and executes frame processing pipelines. More...
 
class  FrameVisualizer
 
class  FresnelEffect
 Modeling Fresnel effects that occur on interfaces. More...
 
class  FullMaterial
 
class  FullPhoton
 This photon type stores all possible photon data without any loss of information. It is unrecommended to use this kind of photon if low memory usage is desired. More...
 
class  FullRay
 
class  FullRayEnergyEstimator
 
class  FullViewpoint
 This viewpoint type stores all possible viewpoint data without any loss of information. It is unrecommended to use this kind of viewpoint if low memory usage is desired. More...
 
class  GammaCorrection
 
class  GCuboid
 
class  GEmpty
 
class  Geometry
 
class  GeometrySoup
 
class  GIndexedTriangleMesh
 
class  GMengerSponge
 
class  GPlyPolygonMesh
 Mesh stored as a .ply file. More...
 
class  GradientImage
 
class  GRectangle
 
class  GridScheduler
 
class  GroupedDiffuseSurfaceEmitter
 Diffusive surface emitter comprised of multiple surface fragments. All surface fragments use the same energy texture. More...
 
class  GSphere
 
class  GTriangle
 
class  GTriangleMesh
 Basic triangle mesh. More...
 
class  GWave
 
class  HaltonSampleSource
 
class  HdrOperator
 
class  HdrRgbFilm
 A film that records RGB values internally. Although film samples are added as spectral values, they are automatically converted to linear sRGB values for storage. More...
 
class  HdrRgbTexture2D
 
class  HenyeyGreenstein
 
class  HitDetail
 Detailed information regarding a ray-primitive intersection. More...
 
class  HitInfo
 General information for a ray-primitive intersection. More...
 
class  HitProbe
 Lightweight ray intersection testing and reporting object. If an intersection is found, a detailed report can be obtained from the stored information. More...
 
class  IDataStream
 
class  IdealAbsorber
 
class  IdealDielectric
 
class  IdealDielectricTransmitter
 
class  IdealReflector
 
class  IdealSubstance
 
class  IesData
 
class  IesFile
 
class  IInputStream
 
class  Image
 
class  IMoveOnly
 Marks the derived class as move only. More...
 
class  IndexedTriangle
 
class  IndexedTriMesh
 
class  IndexedUIntBuffer
 A general unsigned integer buffer for integers with any number of bits. More...
 
class  IndexedVertexBuffer
 A general vertex buffer for storing various indexed attributes. More...
 
class  InitiallyPausedThread
 
class  INoCopyAndMove
 Marks the derived class as non-copyable and non-movable. More...
 
class  Integrand
 
class  InterfaceStatistics
 
class  Intersectable
 An object in the scene that a ray can intersect with. More...
 
class  Intersector
 
class  IntersectorCommonParams
 Common parameters of intersector. More...
 
class  IOutputStream
 
class  IRayEnergyEstimator
 
class  IReceivedRayProcessor
 
class  IResourceIdentifierResolver
 
struct  IsBuildable
 Check if object conversion can be made. More...
 
struct  IsBuildable< Built, From, std::enable_if_t< std::is_convertible_v< From, Built >||std::is_constructible_v< Built, From > > >
 Return type if the result is true. More...
 
class  ISdlDataPacketGroup
 View for a group of named data packets. More...
 
class  ISdlInstantiable
 
class  ISdlReferenceGroup
 View for a group of SDL references. More...
 
class  ISdlResource
 Interface for all SDL resource. More...
 
class  IsoBeckmann
 Isotropic Beckmann distribution. See the paper "Microfacet Models for Refraction through Rough Surfaces" by Walter et al. [18]. More...
 
class  IsoTrowbridgeReitz
 Isotropic Trowbridge-Reitz distribution (GGX). More...
 
class  IsoTrowbridgeReitzConstant
 
class  IsoTrowbridgeReitzTextured
 
class  IUninstantiable
 Marks the derived class as uninstantiable. More...
 
class  IWorkDispatcher
 A manager that distributes work. More...
 
class  JRToneMapping
 Maps HDR values to LDR. More...
 
class  KdtreeAABB
 
class  KdtreeIntersector
 
class  KdtreeNode
 
class  LambertianReflector
 Lambertian diffuse model for an opaque surface. This model is double-sided. More...
 
class  LatLongEnvEmitter
 Models energy coming from background. More...
 
class  LayeredSurface
 
class  LbLayer
 
class  LbLayeredSurface
 Laurent Belcour's layered BSDF model. This is the symmetric model as described in Section 6.2 of the paper [1]. Laurent Belcour's project page: https://belcour.github.io/blog/research/2018/05/05/brdf-realtime-layered.html. More...
 
class  LdrRgbTexture2D
 
class  LerpedSurfaceOptics
 Linearly interpolate between two surface optics. More...
 
class  MaskedIntersectable
 Carve out some part of an intersectable. This is a masking approach based on intersection routine. Another common approach to shape masking is BSDF-based, where the mask determines whether the incoming light simply passes through (a no-op, perfectly transmitting BSDF). There is a trade-off between these approaches: masking in intersection routine samples the mask texture (usually a slower operation) in the tight loop of acceleration structure traversal, while masking in BSDF will need to re-enter the acceleration structure multiple times (such as when rendering a forest) which can also be slow. More...
 
class  Material
 
class  MathImage
 
class  MatteOpaque
 
class  MemoryArena
 A general purpose bump allocator. More...
 
class  MetaRecordingProcessor
 
class  Microfacet
 
class  MicrosurfaceInfo
 
class  mipmapgen
 
class  ModelParser
 
class  MotionCookConfig
 
class  MotionSource
 
class  NaiveReinhardToneMapping
 
class  Object
 
class  Observer
 
class  OmniModulatedEmitter
 
class  OpaqueMicrofacet
 Microfacet based opaque surface model. Microfacet optical behavior modeled using Cook-Torrance BRDF [4]. This model is double-sided. More...
 
class  Option
 
class  OrenNayar
 
class  OrientedRasterObserver
 
class  PartialRayEnergyEstimator
 
class  Path
 General path representation. Does not check whether the target actually exists (e.g., on a filesystem). To check target existence, use Filesystem. More...
 
class  PathTracingVisualizer
 
class  PBasicSphere
 
class  PEmpty
 
class  PeriodicSingleThreadExecutor
 A single-thread executor that runs specified works periodically. The executor can be used concurrently, namely, it is thread-safe. However, the user must ensure that the pool is properly initialized before subsequent usages. More...
 
class  PfmFile
 Writer for Portable FloatMap image format. More...
 
class  PhotonMappingVisualizer
 
class  PhysicalActor
 
class  PictureData
 
class  PictureMeta
 
class  PinholeCamera
 
class  PixelBuffer2D
 
class  PlateScheduler
 
class  PLatLong01Sphere
 
class  PLatLongEnvSphere
 A sphere specifically built for environment lighting. This primitive is for environment map with latitude-longitude format. Unlike regular primitives, transformations are done locally rather than wrapping the primitive by another to allow a wider set of custom operations. Note that the UV for the environment sphere is based on the direction of incident ray. More...
 
struct  PlyElement
 PLY element storage. More...
 
class  PlyFile
 
struct  PlyIOConfig
 
struct  PlyProperty
 PLY property storage. More...
 
class  PlyPropertyListValues
 A convenient PLY list property accessor. More...
 
class  PlyPropertyValues
 A convenient PLY property accessor. More...
 
class  PMAtomicStatistics
 Thread safe statictics tracking utilities. More...
 
class  PMCommonParams
 Common parameters of photon mapping. More...
 
class  PMRendererBase
 
class  PreCookReport
 
class  PreCookResourceCollectionProxy
 
class  PreethamTexture
 
class  Primitive
 A physical shape in the scene. More...
 
class  PrimitiveBuildingMaterial
 
class  PrimitiveChannel
 
class  PrimitiveMetadata
 Collection of attached components to a primitive. This type effectively "glues" various components that helps to describe additional properties related to a primitive. More...
 
class  PrimitivePosPdfInput
 Input for PrimitivePosPdfOutput. More...
 
class  PrimitivePosPdfOutput
 Output for PrimitivePosPdfOutput. More...
 
class  PrimitivePosPdfQuery
 Information for the probability of generating a specific sample point on a primitive. More...
 
class  PrimitivePosSampleInput
 Input for PrimitivePosSampleQuery. More...
 
class  PrimitivePosSampleOutput
 Output for PrimitivePosSampleQuery. More...
 
class  PrimitivePosSampleQuery
 Information for generating a sample point on a primitive. More...
 
class  ProbabilisticProgressivePMRenderer
 
class  ProgressivePMRenderer
 
class  PTriangle
 A single triangle. This triangle type is for constructing simple shapes such as a quad or box. For more complex shapes, it is better to use a more space efficient primitive type for them. More...
 
class  RadianceSensor
 
class  RasterFileImage
 
class  RasterImageBase
 
class  RawResourceCollection
 
class  Ray
 Represents a ray in space. More...
 
class  RayDifferential
 
class  Receiver
 A target that can receive any physical quantity, typically electromagnetic energy. The received energy is originated from some Emitters. More...
 
class  ReceiverSamplingWork
 
class  RectangularSensorReceiver
 A receiver with a rectangular sensor installed. More...
 
struct  ReferencedPrimitiveMetaGetter
 
class  RegularPicture
 Raw representation of common picture types. More...
 
class  RegularPictureFormat
 Format of common pictures. Typically closely related to how the picture is stored natively (e.g., on disk). More...
 
class  Renderer
 
class  RendererProxy
 
class  RenderObservationInfo
 Meta information for data related to ongoing render operation. More...
 
class  RenderProgress
 
class  RenderRegionStatus
 
class  RenderSession
 
class  RenderStats
 
class  RenderWork
 
class  RenderWorker
 
class  ResourceIdentifier
 An general identifier that points to some resource. This is the most general form of a resource identifier, typically refers to as Photon Resource Identifier (PRI) thoughout the engine. More...
 
class  RoughnessToAlphaMapping
 Maps roughness value in [0, 1] to the alpha parameter in NDF. More...
 
class  RuntimeSampleSource
 
class  Sample
 
class  SampleContext
 
class  SampleFilter
 An image reconstruction kernel. More...
 
class  SampleFlow
 A sample with arbitrary dimensions with fine-grained sampling control. More...
 
class  SampleGenerator
 Generates samples in [0, 1]. Generators of different types produces samples with different properties. Depending on the implementation, the samples can be fully random, quasi random, or even fully deterministic. Sample generators in Photon have their life cycles. Life cycle begins when the sample generator start producing sample batches, and ends when all sample batches are exhausted. More...
 
class  SampleLocation
 
class  SamplesND
 
class  SamplesNDHandle
 
class  SamplesNDStream
 
class  SampleSource
 
class  SampleStage
 
class  SampleStageReviser
 
struct  SamplingFilmDimensions
 
class  SamplingRenderer
 
struct  SamplingStatistics
 
class  ScatterFunction
 
class  Scene
 A unified interface for accessing cooked content in a visual world. More...
 
class  SceneDescription
 Data that describe a scene. Represents the result of running SDL commands. More...
 
class  SchlickApproxConductorFresnel
 Conductor-dielectric interface Fresnel effect. More...
 
class  SchlickApproxDielectricFresnel
 Dielectric-dielectric interface Fresnel effect. More...
 
class  SdlClass
 
class  SdlCommandGenerator
 
class  SdlCommandParser
 
class  SdlDataPacketCollection
 
class  SdlDataPacketInterface
 Parsing & generating a group of SDL clauses. More...
 
class  SdlDependencyResolver
 Resolves dependency between SDL resources and provides a valid initialization order. Optionally provide resource name lookup (if user provides resource name during analyzation). More...
 
class  SdlEnum
 Describes enum in SDL. More...
 
class  SdlException
 General exception thrown on error related to SDL. More...
 
class  SdlField
 
class  SdlFunction
 
class  SdlInlinePacketInterface
 Supports the case where the packet command stores SDL clauses directly. More...
 
class  SdlInputClause
 Carries SDL representation of various data during the input process. Helps to read input data such as command clauses or data packets. More...
 
class  SdlInputClauses
 Container for input clauses. More...
 
class  SdlInputContext
 Data that SDL input process can rely on. More...
 
class  SdlIOContext
 Data that SDL input/output process can rely on. More...
 
class  SdlLoadError
 Error on the SDL input process. More...
 
class  SdlNamedOutputClauses
 
class  SdlNativeData
 
class  SdlOutputClause
 Carries SDL representation of various data during the output process. Helps to write output data such as command clauses or data packets. More...
 
class  SdlOutputClauses
 
class  SdlOutputContext
 Data that SDL output process can rely on. More...
 
class  SdlResourceBase
 A convenient ISdlResource with some core requirements implemented. This class does not provide static/dynamic category information. The work is left for derived classes. See ISdlResource for more implementation requirements. More...
 
class  SdlResourceLocator
 
class  SdlSaveError
 Error on the SDL output process. More...
 
class  SdlSceneFileReader
 Loading utility for renderer scene. Loads .p2 (Photon-v2) file. More...
 
class  SdlSceneFileWriter
 Saving utility for renderer scene. Writes .p2 (Photon-v2) file. More...
 
class  SdlStruct
 
class  SdlStructFieldStump
 
class  SemanticVersion
 Convenient software version handling routines. See https://semver.org/ for a detailed explaination of the concept. More...
 
class  SGHalton
 
class  SGStratified
 
class  SGUniformRandom
 
class  SGUtil
 
class  ShapeInvariantMicrofacet
 
class  SingleFrameRenderSession
 
class  SingleLensObserver
 
class  SphericalMapper
 
class  SpiralGridScheduler
 
class  SpiralScheduler
 
class  Statistics
 
class  StdInputStream
 
class  StdOutputStream
 
class  StochasticProgressivePMRenderer
 
class  StratifiedSampleSource
 
class  StripeScheduler
 
class  SurfaceAttributeEstimator
 
class  SurfaceBehavior
 
class  SurfaceEmitter
 
class  SurfaceHit
 General information about a ray-surface intersection event. More...
 
class  SurfaceLayerInfo
 
class  SurfaceMaterial
 
class  SurfaceOptics
 Describes how light interacts with a surface. More...
 
class  SwizzledImage
 An image whose primary purpose is to swizzle the output of a source image. More...
 
class  TableFGD
 
class  TableTIR
 
class  TAbstractPixelTex2D
 
class  TAnyPtr
 A type-safe, lightweight wrapper for any raw pointer type. Using std::any with a raw pointer type could achieve similar functionality. However, this class is dedicated for raw pointers and is guaranteed to have no dynamic allocation. More...
 
class  TAosTriMesh
 
class  TArrayHeap
 A fixed size heap backed by an array. The container inherits the properties of a fixed size array of type T. The container keeps all N elements alive until its lifetime ends, even if elements are popped/removed from the stack. It is guaranteed that no dynamic memory allocation takes place. More...
 
class  TArrayStack
 A fixed size stack backed by an array. The container inherits the properties of a fixed size array of type T. The container keeps all N elements alive until its lifetime ends, even if elements are popped/removed from the stack. It is guaranteed that no dynamic memory allocation takes place. More...
 
class  TArrayVector
 A fixed size vector backed by an array. The container inherits the properties of a fixed size array of type T. The container keeps all N elements alive until its lifetime ends, even if elements are popped/removed from the vector. It is guaranteed that no dynamic memory allocation takes place. More...
 
class  TAtomicQuasiQueue
 A multi-producer, multi-consumer, lock-free concurrent queue-like structure. For single-thread uses, it is a FIFO queue. For multi-thread uses, it is mostly a FIFO queue. Specifically, items put in by a given producer will all come out in the same order (FIFO). But there is no coordination between items from other producers–two items put in by two different producers will come out in an undefined order relative to each other (the interleaving between different streams of items from different producers is undefined, even with external synchronization). It is possible some items will starve in the queue if more items are enqueued than dequeued. Guarantees aquire-release semantics for items that are enqueued/dequeued. More...
 
class  TBilinearPixelTex2D
 
class  TBinaryBvhIntersector
 Classic binary BVH acceleration structure. More...
 
class  TBinaryTextureOperator
 
class  TBitFlags
 Manipulate a value type where each bit is a binary flag. More...
 
class  TBlockableAtomicQuasiQueue
 Blockable version of the TAtomicQuasiQueue. For single-thread uses, it is a FIFO queue. For multi-thread uses, it is mostly a FIFO queue. Specifically, items put in by a given producer will all come out in the same order (FIFO). But there is no coordination between items from other producers–two items put in by two different producers will come out in an undefined order relative to each other (the interleaving between different streams of items from different producers is undefined, even with external synchronization). It is possible some items will starve in the queue if more items are enqueued than dequeued. Guarantees aquire-release semantics for items that are enqueued/dequeued. More...
 
class  TCheckerboardTexture
 Texture representing checker patterns. More...
 
class  TColorPixelTexture2D
 
class  TConstantSpectralTexture
 A constant color texture that can adapt spectral values to spectrum. Converts spectral values to spectrum based on parameters obtained during rendering. More...
 
class  TConstantTexture
 Texture storing one single constant of arbitrary type. This texture provides only a constant value. Input color usages are ignored. For color-related constants, consider using TConstantTristimulusTexture or TConstantSpectralTexture; otherwise, it is recommended to bake color-related side effects (e.g., color usages) into the constant. More...
 
class  TConstantTristimulusTexture
 A constant color texture that can adapt values in tristimulus color space to spectrum. Converts tristimulus values to spectrum based on parameters obtained during rendering. More...
 
class  TConstIteratorProxy
 
struct  TEmbeddedPrimitiveGetter
 
class  TEstimationArray
 
class  TestPoint
 
class  TextFileLoader
 
class  TextureLoader
 
class  TFixedMapBase
 
class  TFixedMapEntry
 
class  TFrame
 
class  TFrameBuffer2D
 
class  ThinDielectricFilm
 
class  ThinDielectricShell
 
class  ThinDielectricSurface
 
class  ThinFilm
 
class  ThinLensCamera
 
class  TileScheduler
 
class  Time
 
class  Timer
 A timer. Measures relative time (not wall clock). More...
 
class  TIndexedKdtreeIntersector
 
class  TIndexedPolygonBuffer
 
class  TIRayEstimator
 
class  TIteratorProxy
 
class  TLinearGradientTexture
 
class  TMergeableFilmProxy
 
class  TMetaInjectionPrimitive
 
class  TMipmap
 
class  TMRSWResource
 A resource wrapper that facilitates Multiple-Readers Single-Writer (MRSW) usages. More...
 
class  TNearestPixelTex2D
 
struct  TNonTypeTemplateArgDummy
 
class  TNumericPixelTexture2D
 
class  Tokenizer
 
class  ToneMapper
 
class  TPhoton
 
class  TPhotonMap
 Default photon map type. Should be adequate for most cases. More...
 
class  TPhotonMapInfo
 Carries common informatiom for a photon map. More...
 
class  TPhotonPathTracingWork
 
class  TPIndexedKdTreeTriangleMesh
 
class  TPixelTex2D
 
class  TPixelTexture2D
 
class  TPPMRadianceEvaluationWork
 
class  TPPMViewpointCollector
 
class  TransformedIntersectable
 Applies general transformation to an intersectable. More...
 
class  TransformedPrimitive
 Applies rigid transformation to a primitive. A transformed primitive accepts only rigid transformations. This way, properties such as surface area and volume are guaranteed to be the same during transformations. More...
 
class  TransformInfo
 
class  TransientResourceCache
 Provides thread-safe cooked data creation and storage. Similar to TransientVisualElement, this cache will be cleared before rendering starts. All methods are thread-safe to call, however manipulating the created data is not thread-safe unless stated explicitly. More...
 
class  TransientVisualElement
 A group of cooked data that represent the visible part of the scene at a specific time. This data block do not persist throughout the rendering process. After cooking is done, all cooked data should be properly interlinked and TransientVisualElement will be cleaned up. More...
 
class  TranslucentMicrofacet
 Microfacet based translucent surface model. Microfacet optical behavior modeled using the dielectric variant [18] of the Cook-Torrance BRDF [4]. This model is double-sided. More...
 
class  TReceiverMeasurementEstimator
 
struct  TReferencedPrimitiveGetter
 
class  TRelaxedAtomic
 Wrapper for relaxed atomic read and write. May resort to lock based read/write if atomic read/write for type T is not supported. More...
 
class  TriFace
 
class  TrowbridgeReitz
 Trowbridge-Reitz distribution (GGX). See the original paper by Trowbridge et al. [16]. The paper "Microfacet Models for Refraction through Rough Surfaces" by Walter et al. [18] provides a nice explanation, too. More...
 
class  TSampler
 Common settings and operations for sampling a texture. More...
 
class  TSamplingFilm
 A camera film that receives any quantity, for sampling-based rendering techniques. More...
 
class  TScalarPixelTexture2D
 
class  TSdl
 
class  TSdl< T >
 TSdl specialization that accepts static type (T). More...
 
class  TSdl< void >
 TSdl specialization that accepts dynamic type (SdlClass). More...
 
class  TSdlAbstractValue
 General concept of a SDL value type. More...
 
class  TSdlAccessorVariant
 
class  TSdlAnyInstance
 References a SDL object. This is a lightweight utility for referencing SDL objects. Following objects are valid targets to be referenced by this type: More...
 
class  TSdlBool
 A field class that binds a bool member variable. More...
 
class  TSdlBruteForceFieldSet
 A set of fields, with basic functionalities. More...
 
class  TSdlEnum
 A helper for accessing SDL enum properties. More...
 
class  TSdlEnumField
 
class  TSdlGeneralEnum
 SDL enum implementation with common features. Enum value and string mapping are done in a brute-force way. This SDL enum type supports enum entries with identical value or name, which is useful for giving the user more tolerance on specifying inputs (e.g., case inconsistency). See getTypedEntry() for more details. More...
 
class  TSdlInteger
 A field class that binds a integral member variable. More...
 
class  TSdlMethod
 SDL binding type for a canonical SDL method. More...
 
class  TSdlNestedField
 A field that lives within an inner object. More...
 
class  TSdlOptionalValue
 Abstractions for a SDL value type that can be empty. More...
 
class  TSdlOwnedField
 Abstraction for a value that is owned by some owner type. Governs how a field should be initialized on the policy level. More...
 
class  TSdlOwnerClass
 SDL binding type for a canonical SDL resource class. More...
 
class  TSdlOwnerStruct
 SDL binding type for a typical C++ struct. More...
 
class  TSdlPath
 A field class that binds a Path member variable. More...
 
class  TSdlQuaternion
 
class  TSdlReal
 A field class that binds a floating point member variable. More...
 
class  TSdlRealArray
 
class  TSdlReference
 A value that points to a SDL resource. More...
 
class  TSdlReferenceArray
 A value that points to an array of SDL resources. More...
 
class  TSdlResourceBase
 A convenient ISdlResource with core requirements implemented. This class is similar to SdlResourceBase, except that it provides a way for derived classes to supply static category information. Dynamic category is directly obtained from it. More...
 
class  TSdlResourceIdentifier
 A field class that binds a resource identifier member. Though the member type that is binded by default can handle any types of identifier (the ResourceIdentifier class, which represents a PRI), this class treat it as a SDL Resource Identifier (SRI) which has a more specific form. On some circumstances it may be desirable to accept any identifier, and this can be achieved by specifying IS_SRI=false. More...
 
class  TSdlSpectrum
 
class  TSdlString
 
class  TSdlStructArray
 
class  TSdlValue
 Abstractions for a SDL value type. More...
 
class  TSdlVector2
 
class  TSdlVector3
 
class  TSdlVector3Array
 
class  TSdlVector4
 
class  TSortedMap
 A sorted container that offers fast value lookup & iteration, while modifications are slow. The container has continuous memory allocation. The values are stored in ascending order according to their keys. More...
 
class  TSortedVector
 A sorted container that offers fast value lookup & iteration, while modifications are slow. The container has continuous memory allocation. The values are stored in ascending order. More...
 
class  TSPPMRadianceEvaluator
 
class  TSPSCExecutor
 A single-producer, single-consumer worker thread. Ctor and dtor are not thread safe. Most of the methods are either producer thread only, or thread-safe. start() must be called before adding work since it also serves as a mean to determine the producer thread. Setters for function callbacks can only be called before start(). Note that if work processor is not set from ctor, setWorkProcessor() must be called with a valid processor function. More...
 
class  TSPSCRingBuffer
 
class  TStableIndexDenseVector
 A container offering stable index and efficient iteration. More...
 
class  TStackSentinel
 
class  TStepperReceiverMeasurementEstimator
 
class  TSwizzledTexture
 Swizzle an array-like input type to the other array-like output type. Output type OutputT can have any number of elements (no need to be the same as input type InputT). For any elements in OutputT that is not part of the swizzle, the value will be as if the element is zero-initialized (or default-initialized depending on the actual type). More...
 
class  TTernaryTextureOperator
 
class  TTexture
 
class  TTrilinearPixelTex2D
 
class  TUnaryTextureOperator
 
class  TUniquePtrVector
 
class  TViewPathHandler
 Process and control a view path tracing process. Derived classes need to implement all methods with "impl_" prefixed names and with the exact signature. More...
 
class  TViewPathTracingWork
 
class  TViewpoint
 
class  TVPMRadianceEvaluator
 
class  TWideBvhIntersector
 Wide BVH acceleration structure supporting arbitrary branch factor. More...
 
class  UniformRandomSampleSource
 
class  UvwMapper
 
class  VAbsorptionOnly
 
class  VanillaPMRenderer
 
class  Vector3Film
 A film that records 3-D vectors. More...
 
class  ViewPathTracingPolicy
 Specifying and querying policies for tracing view path. More...
 
class  Viewport
 
class  Visualizer
 
class  VisualWorld
 A virtual world for image synthesis. More...
 
class  VoHomoAbsorption
 
class  VolumeBehavior
 
class  VolumeDistanceSample
 
class  VolumeMaterial
 
class  VolumeOptics
 
class  Workflow
 
class  WorkScheduler
 A manager that distributes a fixed amount of work to workers. More...
 
class  WorkUnit
 Represents some amount of work. More...
 

Concepts

concept  CPhoton
 
concept  CViewPathHandler
 
concept  CViewpoint
 
concept  CSdlResource
 
concept  CHasStaticSdlCategoryInfo
 Check if SDL category information can be obtained statically. The result is true if the static member variable T::CATEGORY exists, otherwise the result is false.
 
concept  CHasSdlClassDefinition
 Whether T is a well-defined SDL class.
 
concept  CHasSdlStructDefinition
 Whether T is a well-defined SDL struct.
 
concept  CHasSdlFunctionDefinition
 Whether T is a well-defined SDL function.
 
concept  CHasSdlEnumDefinition
 Whether EnumType is a well-defined SDL enum.
 
concept  CSdlInstance
 
concept  CSdlStructSupportsInitToDefault
 
concept  CCanAdd
 Check if instances of types can be added together.
 
concept  CCanSubtract
 Check if instances of types can be subtracted.
 
concept  CCanMultiply
 Check if instances of types can be multiplied together.
 
concept  CCanDivide
 Check if instances of types can be divided.
 
concept  CSubscriptable
 
concept  CEnum
 Whether the type is a scoped/unscoped enum.
 
concept  CEnumWithSizeInfo
 
concept  CNumber
 Checks whether T supports arithmetic operations. Effectively checking std::is_arithmetic<>.
 
concept  CSame
 
concept  CNotSame
 
concept  CDerived
 Checks whether DerivedType is derived from BaseType. The result is also true if both types are the same; false if one of them is a primitive type.
 
concept  CBase
 Checks whether BaseType is a base of DerivedType. The result is also true if both types are the same; false if one of them is a primitive type.
 

Typedefs

template<typename Owner >
using TSdlOptionalSpectrum = TSdlSpectrum<Owner, TSdlOptionalValue<math::Spectrum, Owner>>
 
using EmitterFeatureSet = TEnumFlags<EEmitterFeatureSet>
 
using FaceTopology = TEnumFlags<EFaceTopology>
 
using IndexedTriangleBuffer = TIndexedPolygonBuffer<3>
 
using IndexedQuadBuffer = TIndexedPolygonBuffer<4>
 
using Region = math::TAABB2D<int64>
 
using SurfacePhenomena = TEnumFlags<ESurfacePhenomenon>
 
using SurfaceElemental = int
 
using SurfaceHitReason = TEnumFlags<ESurfaceHitReason>
 
template<typename InputType , typename OutputType >
using TConversionTexture = TUnaryTextureOperator<InputType, OutputType, texfunc::TDefaultConversion<InputType, OutputType>>
 
template<typename T , std::size_t N>
using TTexPixel = math::TArithmeticArray<T, N>
 
using LdrComponent = uint8
 
using HdrComponent = float32
 
using LdrRgbFrame = TFrame<LdrComponent, 3>
 
using HdrRgbFrame = TFrame<HdrComponent, 3>
 
using SdlGetterVariant
 
using SdlSetterVariant
 
template<typename Owner , typename EnumType >
using TSdlOptionalEnumField = TSdlEnumField<Owner, EnumType, TSdlOptionalValue<EnumType, Owner>>
 
template<typename Owner , typename IntType = integer>
using TSdlOptionalInteger = TSdlInteger<Owner, IntType, TSdlOptionalValue<IntType, Owner>>
 A field class that binds an optional integral member variable.
 
template<typename Owner >
using TSdlInt8 = TSdlInteger<Owner, int8>
 
template<typename Owner >
using TSdlUint8 = TSdlInteger<Owner, uint8>
 
template<typename Owner >
using TSdlInt16 = TSdlInteger<Owner, int16>
 
template<typename Owner >
using TSdlUint16 = TSdlInteger<Owner, uint16>
 
template<typename Owner >
using TSdlInt32 = TSdlInteger<Owner, int32>
 
template<typename Owner >
using TSdlUInt32 = TSdlInteger<Owner, uint32>
 
template<typename Owner >
using TSdlInt64 = TSdlInteger<Owner, int64>
 
template<typename Owner >
using TSdlUInt64 = TSdlInteger<Owner, uint64>
 
template<typename Owner >
using TSdlSize = TSdlInteger<Owner, std::size_t>
 
template<typename Owner >
using TSdlOptionalInt8 = TSdlOptionalInteger<Owner, int8>
 
template<typename Owner >
using TSdlOptionalUint8 = TSdlOptionalInteger<Owner, uint8>
 
template<typename Owner >
using TSdlOptionalInt16 = TSdlOptionalInteger<Owner, int16>
 
template<typename Owner >
using TSdlOptionalUint16 = TSdlOptionalInteger<Owner, uint16>
 
template<typename Owner >
using TSdlOptionalInt32 = TSdlOptionalInteger<Owner, int32>
 
template<typename Owner >
using TSdlOptionalUint32 = TSdlOptionalInteger<Owner, uint32>
 
template<typename Owner >
using TSdlOptionalInt64 = TSdlOptionalInteger<Owner, int64>
 
template<typename Owner >
using TSdlOptionalUint64 = TSdlOptionalInteger<Owner, uint64>
 
template<typename Owner >
using TSdlOptionalSize = TSdlOptionalInteger<Owner, std::size_t>
 
template<typename Owner , typename Element = real>
using TSdlOptionalQuaternion = TSdlQuaternion<Owner, Element, TSdlOptionalValue<math::TQuaternion<Element>, Owner>>
 
template<typename Owner , typename FloatType = real>
using TSdlOptionalReal = TSdlReal<Owner, FloatType, TSdlOptionalValue<FloatType, Owner>>
 A field class that binds an optional floating point member variable.
 
template<typename Owner >
using TSdlFloat = TSdlReal<Owner, float>
 
template<typename Owner >
using TSdlDouble = TSdlReal<Owner, double>
 
template<typename Owner >
using TSdlFloat32 = TSdlReal<Owner, float32>
 
template<typename Owner >
using TSdlFloat64 = TSdlReal<Owner, float64>
 
template<typename Owner >
using TSdlOptionalFloat = TSdlOptionalReal<Owner, float>
 
template<typename Owner >
using TSdlOptionalDouble = TSdlOptionalReal<Owner, double>
 
template<typename Owner >
using TSdlOptionalFloat32 = TSdlOptionalReal<Owner, float32>
 
template<typename Owner >
using TSdlOptionalFloat64 = TSdlOptionalReal<Owner, float64>
 
template<typename Owner , typename Element >
using TSdlOptionalVector2 = TSdlVector2<Owner, Element, TSdlOptionalValue<math::TVector2<Element>, Owner>>
 
template<typename Owner >
using TSdlVector2R = TSdlVector2<Owner, real>
 
template<typename Owner >
using TSdlVector2S = TSdlVector2<Owner, std::size_t>
 
template<typename Owner >
using TSdlOptionalVector2R = TSdlOptionalVector2<Owner, real>
 
template<typename Owner >
using TSdlOptionalVector2S = TSdlOptionalVector2<Owner, std::size_t>
 
template<typename Owner , typename Element = real>
using TSdlOptionalVector3 = TSdlVector3<Owner, Element, TSdlOptionalValue<math::TVector3<Element>, Owner>>
 SDL binding type of an optional Vector3.
 
template<typename Owner , typename Element = real>
using TSdlOptionalVector4 = TSdlVector4<Owner, Element, TSdlOptionalValue<math::TVector4<Element>, Owner>>
 SDL binding type of an optional Vector4.
 
using SdlConstInstance = TSdlAnyInstance<true>
 
using SdlNonConstInstance = TSdlAnyInstance<false>
 
using SdlResourceId = std::uint64_t
 
using AnyConstPtr = TAnyPtr<true>
 A type-safe, lightweight wrapper for any const raw pointer type.
 
using AnyNonConstPtr = TAnyPtr<false>
 A type-safe, lightweight wrapper for any non-const raw pointer type.
 
template<CEnum EnumType>
using TEnumFlags = TBitFlags<std::underlying_type_t<EnumType>, EnumType>
 Convenient type for using scoped/unscoped enum for bit flags.
 
template<auto KEY, typename Value >
using TFixedEnumMapEntry = TFixedMapEntry<decltype(KEY), KEY, Value>
 
template<typename... Entries>
using TFixedEnumMap = TFixedMapBase<Entries...>
 
template<fixed_integer_map_detail::Key KEY, typename Value >
using TFixedIntegerMapEntry = TFixedMapEntry<fixed_integer_map_detail::Key, KEY, Value>
 
template<typename... Entries>
using TFixedIntegerMap = TFixedMapBase<Entries...>
 
template<typename Func , std::size_t MIN_SIZE_HINT = PH_TFUNCTION_DEFAULT_MIN_SIZE_IN_BYTES>
using TFunction = function_detail::TFunction<Func, MIN_SIZE_HINT>
 
template<CSubscriptable Ts>
using TSubscriptedTypeOf = decltype(std::declval<Ts>()[0])
 
template<typename T , std::size_t EXTENT = std::dynamic_extent>
using TSpan = std::span<T, EXTENT>
 A contiguous sequence of objects of type T. Effectively the same as std::span.
 
template<typename T , std::size_t EXTENT = std::dynamic_extent>
using TSpanView = std::span<const T, EXTENT>
 Same as TSpan, except that the objects are const-qualified. Note that for pointer types, the const is applied on the pointer itself. For example, when T is const int*, the accessed type will be const int* const.
 
using CookPriority = uint8
 
using CookLevel = uint8
 

Enumerations

enum class  EEngineProject {
  Engine , EngineTest , SDLGen , SDLGenCLI ,
  PhotonCLI , Editor , EditorLib , EditorTest ,
  IntersectError
}
 
enum class  ESurfaceRefineMode { Manual , Empirical , Iterative , Default = Iterative }
 
enum class  EMathImageOp {
  Add = 0 , Subtract , Multiply , Divide ,
  Power , Absolute , Clamp
}
 
enum class  EImageSampleMode { Unspecified = 0 , Bilinear , Nearest , Trilinear }
 
enum class  EImageWrapMode { Unspecified = 0 , ClampToEdge , Repeat , FlippedClampToEdge }
 
enum class  ESurfaceMaterialMixMode { Lerp = 0 }
 
enum class  EInterfaceFresnel { Unspecified = 0 , Schlick , Exact }
 
enum class  EInterfaceMicrosurface { Unspecified = 0 , TrowbridgeReitz , Beckmann }
 
enum class  ERoughnessToAlpha { Unspecified = 0 , Equaled , Squared , PbrtV3 }
 
enum class  EIdealSubstance {
  Absorber = 0 , DielectricReflector , DielectricTransmitter , MetallicReflector ,
  Dielectric
}
 
enum class  ECoordSys : int { World = 0 , Local = 1 , SIZE = 2 }
 
enum class  EEmitterFeatureSet : detail::EmitterFlagIntType {
  ZeroBounceSample = detail::efs_zero_bounce_sample_bits , BsdfSample = detail::efs_bsdf_sample_bits , DirectSample = detail::efs_direct_sample_bits , EmissionSample = detail::efs_emission_sample_bits ,
  Default
}
 Runtime features of an emitter. More...
 
enum class  EFaceTopology : uint8 {
  General = math::flag_bit<uint8, 0>() , Planar = math::flag_bit<uint8, 1>() , Convex = math::flag_bit<uint8, 2>() , Concave = math::flag_bit<uint8, 3>() ,
  Triangular = math::flag_bit<uint8, 4>() , Quadrilateral = math::flag_bit<uint8, 5>()
}
 Categorizing face topology. More...
 
enum class  EVertexAttribute : uint8 {
  Position_0 = 0 , Normal_0 , Tangent_0 , TexCoord_0 ,
  TexCoord_1 , Color_0 , SIZE
}
 
enum class  EVertexElement : uint8 {
  Float32 = 0 , Float16 , Int32 , Int16 ,
  OctahedralUnitVec3_32 , OctahedralUnitVec3_24 , SIZE
}
 
enum class  EAttribute : unsigned int {
  LIGHT_ENERGY = 0 , LIGHT_ENERGY_HALF_EFFORT , LIGHT_ENERGY_INDEXED , NORMAL ,
  DEPTH , TEXTURE_COORDINATE , POSITION , SIZE
}
 
enum class  ERegionStatus { Invalid , Finished , Updating }
 Status of a rendering region. Note that when adding new entries, the order is important: later entries will take precedence when multiple regions are merged together. For example, merging Invalid and Updating regions will result in an Updating region. More...
 
enum class  EPhotonData {
  ThroughputRadiance , Pos , FromDir , GeometryNormal ,
  PathLength
}
 
enum class  EViewpointData {
  SurfaceHit , RasterCoord , Radius , NumPhotons ,
  Tau , ViewThroughput , ViewDir , ViewRadiance
}
 
enum class  EViewPathSampleMode { SinglePath , ElementalBranch }
 Directives on how to trace the next path. More...
 
enum class  EHaltonPermutation { None = 0 , Fixed , PerDigit , Owen }
 Permutation schemes available for a Halton sequence. See sdl_halton_randomization_types.h for detailed explanation. More...
 
enum class  EHaltonSequence { Original = 0 , Leap , RandomLeap , RandomStart }
 
enum class  EScheduler {
  Unspecified = 0 , Bulk , Stripe , Grid ,
  Tile , Spiral , SpiralGrid
}
 
enum class  EMaskingShadowing { HightCorrelated = 0 , Separable , DirectionCorrelated , HeightDirectionCorrelated }
 Different types of masking and shadowing terms for microfacet distributions. Eric Heitz has published a detailed explanation [10], which is excellent and definitely worth a read in my opinion. More...
 
enum class  ESurfacePhenomenon : uint32 {
  DiffuseReflection = math::flag_bit<uint32, 0>() , NearDiffuseReflection = math::flag_bit<uint32, 1>() , DeltaReflection = math::flag_bit<uint32, 2>() , GlossyReflection = math::flag_bit<uint32, 3>() ,
  DiffuseTransmission = math::flag_bit<uint32, 4>() , NearDiffuseTransmission = math::flag_bit<uint32, 5>() , DeltaTransmission = math::flag_bit<uint32, 6>() , GlossyTransmission = math::flag_bit<uint32, 7>()
}
 Available surface phenomena. More...
 
enum class  ESurfaceHitReason : detail::SurfaceHitReasonIntType {
  Invalid = 0 , Unknown = detail::shr_unknown_bits , IncidentRay = detail::shr_incident_ray_bits , SampledPos = detail::shr_sampled_pos_bits ,
  SampledDir = detail::shr_sampled_dir_bits , SampledPosDir = detail::shr_sampled_pos_bits | detail::shr_sampled_dir_bits
}
 
enum class  ETexWrapMode { REPEAT , CLAMP_TO_EDGE }
 
enum class  EPictureFile {
  Unknown = 0 , PNG , JPG , BMP ,
  TGA , HDR , EXR , HighPrecisionEXR ,
  PFM
}
 
enum class  EPlyDataFormat { ASCII = 0 , BinaryLittleEndian , BinaryBigEndian , NUM }
 
enum class  EPlyDataType {
  Unspecified = 0 , Int8 , UInt8 , Int16 ,
  UInt16 , Int32 , UInt32 , Float32 ,
  Float64 , NUM
}
 
enum class  EAccelerator {
  Unspecified = 0 , BruteForce , BVH , BVH4 ,
  BVH8 , Kdtree , IndexedKdtree
}
 
enum class  EPhotonMappingMode { Vanilla = 0 , Progressive , StochasticProgressive , ProbabilisticProgressive }
 
enum class  ERayEnergyEstimator { Unspecified = 0 , BVPT , BNEEPT , BVPTDL }
 
enum class  ESampleFilter {
  Unspecified = 0 , Box , Gaussian , MitchellNetravali ,
  BlackmanHarris
}
 
enum class  EPicturePixelComponent {
  Empty = 0 , Int8 , UInt8 , Int16 ,
  UInt16 , Int32 , UInt32 , Int64 ,
  UInt64 , Float16 , Float32 , Float64
}
 
enum class  ESdlDataFormat : uint8 {
  None = 0 , Single , Vector2 , Vector3 ,
  Vector4 , Quaternion , Vector , Vector2Vector ,
  Vector3Vector , QuaternionVector , SharedPtrVector , SharedPointer ,
  UniquePointer , SIZE
}
 Format of the data used by SDL. Each listed data format tells how a group of data is arranged internally as well as its meaning. Useful for code that require some determinable runtime behavior. More...
 
enum class  ESdlDataType : uint8 {
  None = 0 , Int8 , UInt8 , Int16 ,
  UInt16 , Int32 , UInt32 , Int64 ,
  UInt64 , Float32 , Float64 , Bool ,
  String , Path , ResourceIdentifier , Spectrum ,
  Enum , Struct , Geometry , Material ,
  Motion , Actor , Image , FrameProcessor ,
  Observer , SampleSource , Visualizer , Option ,
  Object , SIZE
}
 Common data types used by SDL. Each listed data type has some form of one to one mapping to a specific runtime type. Useful for code that require some determinable runtime behavior. More...
 
enum class  ESdlTypeCategory {
  Unspecified = 0 , Ref_Geometry , Ref_Material , Ref_Motion ,
  Ref_Image , Ref_Actor , Ref_FrameProcessor , Ref_Observer ,
  Ref_SampleSource , Ref_Visualizer , Ref_Option , Ref_Object ,
  SIZE
}
 
enum class  EFieldImportance { Optional , NiceToHave , Required }
 
enum  ESdlClauseValue { General = 0 , PersistentTargetName , CachedTargetName }
 Meta information for the value in a clause. More...
 
enum class  ESdlCommandType {
  Unknown = 0 , Directive , Load , Removal ,
  Update , Execution , NamedDataPacket , Phantom
}
 
enum class  ESriType { Unknown = 0 , Bundle , External }
 Type of the SDL Resource Identifier (SRI). More...
 
enum class  ECookPriority : CookPriority { High = 1 , Normal = std::numeric_limits<CookPriority>::max() / 2 , Low }
 
enum class  ECookLevel : CookLevel { First = 0 , Normal = std::numeric_limits<CookLevel>::max() / 2 , Last }
 

Functions

std::string_view to_string (EEngineProject project)
 
std::string_view refine_mode_to_str (const ESurfaceRefineMode mode)
 
ESurfaceRefineMode str_to_refine_mode (std::string_view mode)
 
bool init_render_engine (std::optional< EngineInitSettings > settings=std::nullopt)
 Initialize the render engine.
 
bool exit_render_engine ()
 Exit the render engine. Must be called before leaving the engine. Using the engine after this call returned is prohibited (except some cleanup operations such as destruction).
 
std::span< const SdlClass *const > get_registered_engine_classes ()
 Get a list of registered SDL classes from the engine.
 
std::span< const SdlEnum *const > get_registered_engine_enums ()
 Get a list of registered SDL enums from the engine.
 
Path get_config_directory (EEngineProject project)
 
Path get_internal_resource_directory (EEngineProject project)
 Directory to resources required by the project.
 
Path get_resource_directory (EEngineProject project)
 Directory to additional/optional resources used by the project.
 
Path get_script_directory (EEngineProject project)
 Directory to scripts for the project.
 
 PH_DEFINE_LOG_GROUP (ActorCooking, Actor)
 
 PH_DECLARE_LOG_GROUP (ActorCooking)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (DomeActor, Actor)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (AModel, Actor)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (TransformedInstanceActor, Actor)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (PreethamDomeActor, Actor)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (Geometry, Geometry)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (GPlyPolygonMesh, Geometry)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (BinaryMixedImage, Image)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (BlackBodyRadiationImage, Image)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (CheckerboardImage, Image)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (ConstantImage, Image)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (MathImage, Image)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EMathImageOp >)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (RasterFileImage, Image)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EImageSampleMode >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EImageWrapMode >)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SwizzledImage, Image)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (AGeometricLight, Actor)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (BinaryMixedSurfaceMaterial, Material)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< ESurfaceMaterialMixMode >)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (ConductiveInterfaceInfo, BSDF)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (DielectricInterfaceInfo, BSDF)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (MicrosurfaceInfo, BSDF)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EInterfaceFresnel >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EInterfaceMicrosurface >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< ERoughnessToAlpha >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EMaskingShadowing >)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (FullMaterial, Material)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (IdealSubstance, Material)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EIdealSubstance >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< math::EColorSpace >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< math::EColorUsage >)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (ApiDatabase, Core)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (InitAndExit, Engine)
 
bool init_engine_core (const EngineInitSettings &settings)
 
bool init_engine_IO_infrastructure (const EngineInitSettings &settings)
 
void after_engine_init (const EngineInitSettings &settings)
 
void before_engine_exit ()
 
bool exit_API_database ()
 
 PH_DEFINE_INTERNAL_LOG_GROUP (CppAPI, Engine)
 
void loadTestScene (VisualWorld *const out_world)
 
void loadCornellBox (VisualWorld *const out_world, const real boxSize)
 
void loadCbox3ObjScene (VisualWorld *const out_world)
 
void load5bScene (VisualWorld *const out_world)
 
 PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS (EEmitterFeatureSet)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (LatLongEnvEmitter, Emitter)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (PowerFavoringEmitterSampler, EmitterSampler)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (Engine, Core)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (Update, Engine)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (Render, Engine)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (LoadCommands, Engine)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (FullEstimation, Render_BNEEPTEstimator)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (ZeroBounceDirect, Render_BNEEPTEstimator)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (DirectLightSampling, Render_BNEEPTEstimator)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (BSDFAndIndirectLightSampling, Render_BNEEPTEstimator)
 
 PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS (EFaceTopology)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (IndexedUIntBuffer, Core)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (IndexedVertexBuffer, Core)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (PrimitiveMetadata, Primitive)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (Receiver, Receiver)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (AttributeRenderer, Renderer)
 
template<CPhoton Photon>
bool accept_photon_by_surface_topology (const Photon &photon, const math::Vector3R &Ng, const math::Vector3R &Ns, const math::Vector3R &L, const math::Vector3R &V, const lta::SidednessAgreement &sidedness)
 
template<CPhoton Photon>
math::Spectrum estimate_certainly_lost_energy (const std::size_t viewPathLength, const SurfaceHit &X, const math::Spectrum &viewPathThroughput, const TPhotonMapInfo< Photon > &photonMapInfo, const Scene *scene, const std::size_t minFullPathLength=1, const std::size_t maxFullPathLength=PMCommonParams::DEFAULT_MAX_PATH_LENGTH)
 Estimate the energy that can never be obtained by utilizing a photon map. The estimation is for the current hit point only. To account for lost energy along a path with multiple hit points, call this function for each hit point and sum the results.
 
template<CPhoton Photon>
math::Spectrum estimate_lost_energy_for_extending (const std::size_t viewPathLength, const SurfaceHit &X, const math::Spectrum &viewPathThroughput, const TPhotonMapInfo< Photon > &photonMapInfo, const Scene *scene, const std::size_t minFullPathLength=1, const std::size_t maxFullPathLength=PMCommonParams::DEFAULT_MAX_PATH_LENGTH)
 Estimate the energy that is otherwise lost forever if the path is extended. The estimation is for the current hit point only. To account for lost energy along an extended path with multiple hit points, call this function for each hit point and sum the results. For a hit point, only one of estimate_lost_energy_for_extending() and estimate_lost_energy_for_merging() can be called.
 
template<CPhoton Photon>
math::Spectrum estimate_lost_energy_for_merging (const std::size_t viewPathLength, const SurfaceHit &X, const math::Spectrum &viewPathThroughput, const TPhotonMapInfo< Photon > &photonMapInfo, const Scene *scene, const std::size_t minFullPathLength=1, const std::size_t maxFullPathLength=PMCommonParams::DEFAULT_MAX_PATH_LENGTH)
 Estimate the energy that is otherwise lost forever if the path is merged. The estimation is for the current hit point only and is expected to be called when the path ended (merged). For a hit point, only one of estimate_lost_energy_for_extending() and estimate_lost_energy_for_merging() can be called.
 
 PH_DEFINE_LOG_GROUP (PMRenderer, Renderer)
 
 PH_DECLARE_LOG_GROUP (PMRenderer)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (Renderer, Renderer)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (EqualSamplingRenderer, Renderer)
 
 PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS (ESurfacePhenomenon)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (TableFGD, BSDF)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (TableTIR, BSDF)
 
 PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS (ESurfaceHitReason)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (PreethamTexture, Texture)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (BinaryFileReader, DataIO)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (IesData, DataIO)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (IesFile, DataIO)
 
EPictureFile picture_file_type_from_extension (std::string_view ext)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (ExrFileReader, DataIO)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (PfmFile, DataIO)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (PlyFile, DataIO)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EPictureFile >)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (FormattedTextInputStream, DataIO)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (TextFileLoader, DataIO)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (CoreCookedUnit, Core)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (OrientedRasterObserver, Observer)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EHaltonPermutation >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EHaltonSequence >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EAccelerator >)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SingleFrameRenderSession, RenderSession)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (PathTracingVisualizer, Visualizer)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (PhotonMappingVisualizer, Visualizer)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EPhotonMappingMode >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< ERayEnergyEstimator >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< ESampleFilter >)
 
 PH_DEFINE_SDL_ENUM (TSdlGeneralEnum< EScheduler >)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (FrameUtilities, Frame)
 
std::size_t num_bytes_in_component (const EPicturePixelComponent componentType)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (SdlClass, SDL)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (SdlField, SDL)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (SdlFunction, SDL)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (SdlStruct, SDL)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (RawResourceCollection, SDL)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SceneDescription, SDL)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SdlCommandGenerator, SDL)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SdlCommandParser, SDL)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (ParseCommandTotal, SdlCommandParser)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (ParseLoadCommand, SdlCommandParser)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (ParseExecutionCommand, SdlCommandParser)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (ParseDirectiveCommand, SdlCommandParser)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (ParseNamedDataPacketCommand, SdlCommandParser)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (GetCommandHeader, SdlCommandParser)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (GetClauses, SdlCommandParser)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (GetSDLClass, SdlCommandParser)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SdlDataPacketCollection, SDL)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SdlDependencyResolver, SDL)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SdlNamedOutputClauses, SDL)
 
SdlResourceId gen_sdl_resource_id ()
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SdlSceneFileReader, SDL)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (SdlSceneFileWriter, SDL)
 
void parallel_work (const std::size_t numWorkers, std::function< void(std::size_t workerIdx) > work)
 Runs specified works in parallel. The function will block the calling thread until all works are complete.
 
void parallel_work (const std::size_t totalWorkSize, const std::size_t numWorkers, std::function< void(std::size_t workerIdx, std::size_t workBegin, std::size_t workEnd) > work)
 Runs specified works in parallel. The function will block the calling thread until all works are complete. Note that 0-sized works are not executed (work is not called in this case).
 
void parallel_work (FixedSizeThreadPool &workers, const std::size_t totalWorkSize, std::function< void(std::size_t workerIdx, std::size_t workBegin, std::size_t workEnd) > work)
 Runs specified works in parallel using a thread pool. The function will block the calling thread until all works are complete. Note that 0-sized works are not executed (work is not called in this case).
 
 PH_DEFINE_INTERNAL_LOG_GROUP (Workflow, Concurrent)
 
template<typename Target , typename Source >
Target bitwise_cast (const Source &source)
 
consteval bool is_big_endian ()
 
template<CEnum EnumType>
constexpr auto enum_to_value (const EnumType enumValue)
 
template<CEnum EnumType>
std::string enum_to_string (const EnumType enumValue)
 
template<CEnumWithSizeInfo EnumType>
constexpr auto enum_size ()
 
 PH_DEFINE_INTERNAL_LOG_GROUP (CookedNamedResource, World)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (CookedResourceCollection, World)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (CookedResourceCollectionBase, World)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (CookingContext, World)
 
 PH_DEFINE_EXTERNAL_LOG_GROUP (TransientResourceCache, World)
 
 PH_DEFINE_INTERNAL_LOG_GROUP (VisualWorld, World)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (CookActorLevels, VisualWorld)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (UpdateAccelerators, VisualWorld)
 
 PH_DEFINE_INTERNAL_TIMER_STAT (UpdateLightSamplers, VisualWorld)
 
template<typename T >
T * ptr_access (T *const ptr)
 Access a target's member consistently using . or -> operators. Note that these functions treat smart pointers as regular objects (ptr_access() and ref_access() will refer to the object itself, not its managed data). A nice discussion for the topic: https://stackoverflow.com/questions/14466620/c-template-specialization-calling-methods-on-types-that-could-be-pointers-or.
 
template<typename T >
T * ptr_access (T &ref)
 
template<typename T >
T * ptr_access (T &&ref)=delete
 
template<typename T >
T & ref_access (T &ref)
 
template<typename T >
T & ref_access (T *const ptr)
 
void ref_access (std::nullptr_t)=delete
 
template<typename T >
T & ref_access (T &&ref)=delete
 

Variables

constexpr ESurfacePhenomenon ALL_SURFACE_PHENOMENA
 
constexpr ESurfacePhenomenon DIFFUSE_SURFACE_PHENOMENA
 
constexpr ESurfacePhenomenon DELTA_SURFACE_PHENOMENA
 
constexpr ESurfacePhenomenon GLOSSY_SURFACE_PHENOMENA
 
constexpr SurfaceElemental ALL_SURFACE_ELEMENTALS = -1
 
constexpr SdlResourceId EMPTY_SDL_RESOURCE_ID = 0
 

Detailed Description

The root for all renderer implementations.

Typedef Documentation

◆ AnyConstPtr

using ph::AnyConstPtr = TAnyPtr<true>

A type-safe, lightweight wrapper for any const raw pointer type.

◆ AnyNonConstPtr

using ph::AnyNonConstPtr = TAnyPtr<false>

A type-safe, lightweight wrapper for any non-const raw pointer type.

◆ CookLevel

using ph::CookLevel = uint8

◆ CookPriority

using ph::CookPriority = uint8

◆ EmitterFeatureSet

◆ FaceTopology

◆ HdrComponent

using ph::HdrComponent = float32

◆ HdrRgbFrame

◆ IndexedQuadBuffer

◆ IndexedTriangleBuffer

◆ LdrComponent

using ph::LdrComponent = uint8

◆ LdrRgbFrame

◆ Region

using ph::Region = math::TAABB2D<int64>

◆ SdlConstInstance

◆ SdlGetterVariant

Initial value:
TSdlAccessorVariant<std::variant<
std::monostate,
int64,
float64,
TAnyPtr< true > AnyConstPtr
A type-safe, lightweight wrapper for any const raw pointer type.
Definition TAnyPtr.h:43
TSdlAnyInstance< true > SdlConstInstance
Definition sdl_fwd.h:33

◆ SdlNonConstInstance

◆ SdlResourceId

using ph::SdlResourceId = std::uint64_t

◆ SdlSetterVariant

Initial value:
TSdlAccessorVariant<std::variant<
std::monostate,
int64,
float64,
TAnyPtr< false > AnyNonConstPtr
A type-safe, lightweight wrapper for any non-const raw pointer type.
Definition TAnyPtr.h:47
TSdlAnyInstance< false > SdlNonConstInstance
Definition sdl_fwd.h:34

◆ SurfaceElemental

using ph::SurfaceElemental = int

◆ SurfaceHitReason

◆ SurfacePhenomena

◆ TConversionTexture

template<typename InputType , typename OutputType >
using ph::TConversionTexture = TUnaryTextureOperator<InputType, OutputType, texfunc::TDefaultConversion<InputType, OutputType>>

◆ TEnumFlags

template<CEnum EnumType>
using ph::TEnumFlags = TBitFlags<std::underlying_type_t<EnumType>, EnumType>

Convenient type for using scoped/unscoped enum for bit flags.

◆ TFixedEnumMap

template<typename... Entries>
using ph::TFixedEnumMap = TFixedMapBase<Entries...>

◆ TFixedEnumMapEntry

template<auto KEY, typename Value >
using ph::TFixedEnumMapEntry = TFixedMapEntry<decltype(KEY), KEY, Value>

◆ TFixedIntegerMap

template<typename... Entries>
using ph::TFixedIntegerMap = TFixedMapBase<Entries...>

◆ TFixedIntegerMapEntry

◆ TFunction

template<typename Func , std::size_t MIN_SIZE_HINT = PH_TFUNCTION_DEFAULT_MIN_SIZE_IN_BYTES>
using ph::TFunction = function_detail::TFunction<Func, MIN_SIZE_HINT>

◆ TSdlDouble

template<typename Owner >
using ph::TSdlDouble = TSdlReal<Owner, double>

◆ TSdlFloat

template<typename Owner >
using ph::TSdlFloat = TSdlReal<Owner, float>

◆ TSdlFloat32

template<typename Owner >
using ph::TSdlFloat32 = TSdlReal<Owner, float32>

◆ TSdlFloat64

template<typename Owner >
using ph::TSdlFloat64 = TSdlReal<Owner, float64>

◆ TSdlInt16

template<typename Owner >
using ph::TSdlInt16 = TSdlInteger<Owner, int16>

◆ TSdlInt32

template<typename Owner >
using ph::TSdlInt32 = TSdlInteger<Owner, int32>

◆ TSdlInt64

template<typename Owner >
using ph::TSdlInt64 = TSdlInteger<Owner, int64>

◆ TSdlInt8

template<typename Owner >
using ph::TSdlInt8 = TSdlInteger<Owner, int8>

◆ TSdlOptionalDouble

template<typename Owner >
using ph::TSdlOptionalDouble = TSdlOptionalReal<Owner, double>

◆ TSdlOptionalEnumField

template<typename Owner , typename EnumType >
using ph::TSdlOptionalEnumField = TSdlEnumField<Owner, EnumType, TSdlOptionalValue<EnumType, Owner>>

◆ TSdlOptionalFloat

template<typename Owner >
using ph::TSdlOptionalFloat = TSdlOptionalReal<Owner, float>

◆ TSdlOptionalFloat32

template<typename Owner >
using ph::TSdlOptionalFloat32 = TSdlOptionalReal<Owner, float32>

◆ TSdlOptionalFloat64

template<typename Owner >
using ph::TSdlOptionalFloat64 = TSdlOptionalReal<Owner, float64>

◆ TSdlOptionalInt16

template<typename Owner >
using ph::TSdlOptionalInt16 = TSdlOptionalInteger<Owner, int16>

◆ TSdlOptionalInt32

template<typename Owner >
using ph::TSdlOptionalInt32 = TSdlOptionalInteger<Owner, int32>

◆ TSdlOptionalInt64

template<typename Owner >
using ph::TSdlOptionalInt64 = TSdlOptionalInteger<Owner, int64>

◆ TSdlOptionalInt8

template<typename Owner >
using ph::TSdlOptionalInt8 = TSdlOptionalInteger<Owner, int8>

◆ TSdlOptionalInteger

template<typename Owner , typename IntType = integer>
using ph::TSdlOptionalInteger = TSdlInteger<Owner, IntType, TSdlOptionalValue<IntType, Owner>>

A field class that binds an optional integral member variable.

◆ TSdlOptionalQuaternion

template<typename Owner , typename Element = real>
using ph::TSdlOptionalQuaternion = TSdlQuaternion<Owner, Element, TSdlOptionalValue<math::TQuaternion<Element>, Owner>>

◆ TSdlOptionalReal

template<typename Owner , typename FloatType = real>
using ph::TSdlOptionalReal = TSdlReal<Owner, FloatType, TSdlOptionalValue<FloatType, Owner>>

A field class that binds an optional floating point member variable.

◆ TSdlOptionalSize

template<typename Owner >
using ph::TSdlOptionalSize = TSdlOptionalInteger<Owner, std::size_t>

◆ TSdlOptionalSpectrum

template<typename Owner >
using ph::TSdlOptionalSpectrum = TSdlSpectrum<Owner, TSdlOptionalValue<math::Spectrum, Owner>>

◆ TSdlOptionalUint16

template<typename Owner >
using ph::TSdlOptionalUint16 = TSdlOptionalInteger<Owner, uint16>

◆ TSdlOptionalUint32

template<typename Owner >
using ph::TSdlOptionalUint32 = TSdlOptionalInteger<Owner, uint32>

◆ TSdlOptionalUint64

template<typename Owner >
using ph::TSdlOptionalUint64 = TSdlOptionalInteger<Owner, uint64>

◆ TSdlOptionalUint8

template<typename Owner >
using ph::TSdlOptionalUint8 = TSdlOptionalInteger<Owner, uint8>

◆ TSdlOptionalVector2

template<typename Owner , typename Element >
using ph::TSdlOptionalVector2 = TSdlVector2<Owner, Element, TSdlOptionalValue<math::TVector2<Element>, Owner>>

◆ TSdlOptionalVector2R

template<typename Owner >
using ph::TSdlOptionalVector2R = TSdlOptionalVector2<Owner, real>

◆ TSdlOptionalVector2S

template<typename Owner >
using ph::TSdlOptionalVector2S = TSdlOptionalVector2<Owner, std::size_t>

◆ TSdlOptionalVector3

template<typename Owner , typename Element = real>
using ph::TSdlOptionalVector3 = TSdlVector3<Owner, Element, TSdlOptionalValue<math::TVector3<Element>, Owner>>

SDL binding type of an optional Vector3.

◆ TSdlOptionalVector4

template<typename Owner , typename Element = real>
using ph::TSdlOptionalVector4 = TSdlVector4<Owner, Element, TSdlOptionalValue<math::TVector4<Element>, Owner>>

SDL binding type of an optional Vector4.

◆ TSdlSize

template<typename Owner >
using ph::TSdlSize = TSdlInteger<Owner, std::size_t>

◆ TSdlUint16

template<typename Owner >
using ph::TSdlUint16 = TSdlInteger<Owner, uint16>

◆ TSdlUInt32

template<typename Owner >
using ph::TSdlUInt32 = TSdlInteger<Owner, uint32>

◆ TSdlUInt64

template<typename Owner >
using ph::TSdlUInt64 = TSdlInteger<Owner, uint64>

◆ TSdlUint8

template<typename Owner >
using ph::TSdlUint8 = TSdlInteger<Owner, uint8>

◆ TSdlVector2R

template<typename Owner >
using ph::TSdlVector2R = TSdlVector2<Owner, real>

◆ TSdlVector2S

template<typename Owner >
using ph::TSdlVector2S = TSdlVector2<Owner, std::size_t>

◆ TSpan

template<typename T , std::size_t EXTENT = std::dynamic_extent>
using ph::TSpan = std::span<T, EXTENT>

A contiguous sequence of objects of type T. Effectively the same as std::span.

◆ TSpanView

template<typename T , std::size_t EXTENT = std::dynamic_extent>
using ph::TSpanView = std::span<const T, EXTENT>

Same as TSpan, except that the objects are const-qualified. Note that for pointer types, the const is applied on the pointer itself. For example, when T is const int*, the accessed type will be const int* const.

◆ TSubscriptedTypeOf

template<CSubscriptable Ts>
using ph::TSubscriptedTypeOf = decltype(std::declval<Ts>()[0])

◆ TTexPixel

template<typename T , std::size_t N>
using ph::TTexPixel = math::TArithmeticArray<T, N>

Enumeration Type Documentation

◆ EAccelerator

enum class ph::EAccelerator
strong
Enumerator
Unspecified 
BruteForce 
BVH 
BVH4 
BVH8 
Kdtree 
IndexedKdtree 

◆ EAttribute

enum class ph::EAttribute : unsigned int
strong
Enumerator
LIGHT_ENERGY 
LIGHT_ENERGY_HALF_EFFORT 
LIGHT_ENERGY_INDEXED 
NORMAL 
DEPTH 
TEXTURE_COORDINATE 
POSITION 
SIZE 

◆ ECookLevel

enum class ph::ECookLevel : CookLevel
strong
Enumerator
First 
Normal 
Last 

◆ ECookPriority

enum class ph::ECookPriority : CookPriority
strong
Enumerator
High 
Normal 
Low 

◆ ECoordSys

enum class ph::ECoordSys : int
strong
Enumerator
World 
Local 
SIZE 

◆ EEmitterFeatureSet

Runtime features of an emitter.

Attention
Some features are not handled by Emitter itself, as it is impossible to determine the intended usage solely from its interface. Currently, light transport algorithms need to handle ZeroBounceSample and BsdfSample by themselves.
Enumerator
ZeroBounceSample 

Directly visualize the emitter.

BsdfSample 

Use BSDF sampling technique for rendering the emitter.

DirectSample 

Use direct sampling technique for rendering the emitter.

EmissionSample 

Use emission sampling technique for rendering the emitter.

Default 

◆ EEngineProject

enum class ph::EEngineProject
strong
Enumerator
Engine 
EngineTest 
SDLGen 
SDLGenCLI 
PhotonCLI 
Editor 
EditorLib 
EditorTest 
IntersectError 

◆ EFaceTopology

enum class ph::EFaceTopology : uint8
strong

Categorizing face topology.

Enumerator
General 

Basically cannot assume anything about the face.

Planar 

Flat face.

Convex 

A bump into the hemisphere of face normal.

Concave 

A dent into the opposite hemisphere of face normal.

Triangular 

The face is a triangle.

Quadrilateral 

The face is a quadrilateral.

◆ EFieldImportance

enum class ph::EFieldImportance
strong
Enumerator
Optional 

Value for the field may be omitted as the default value is usually what the user want.

NiceToHave 

Value for the field should be provided as the engine may not be able to provide a suitable value by itself.

Required 

Value for the field is necessary and the engine provided value is typically not what the user meant to have.

◆ EHaltonPermutation

enum class ph::EHaltonPermutation
strong

Permutation schemes available for a Halton sequence. See sdl_halton_randomization_types.h for detailed explanation.

Enumerator
None 
Fixed 
PerDigit 
Owen 

◆ EHaltonSequence

enum class ph::EHaltonSequence
strong
Enumerator
Original 
Leap 
RandomLeap 
RandomStart 

◆ EIdealSubstance

enum class ph::EIdealSubstance
strong
Enumerator
Absorber 
DielectricReflector 
DielectricTransmitter 
MetallicReflector 
Dielectric 

◆ EImageSampleMode

enum class ph::EImageSampleMode
strong
Enumerator
Unspecified 
Bilinear 
Nearest 
Trilinear 

◆ EImageWrapMode

enum class ph::EImageWrapMode
strong
Enumerator
Unspecified 
ClampToEdge 
Repeat 
FlippedClampToEdge 

◆ EInterfaceFresnel

enum class ph::EInterfaceFresnel
strong
Enumerator
Unspecified 
Schlick 
Exact 

◆ EInterfaceMicrosurface

enum class ph::EInterfaceMicrosurface
strong
Enumerator
Unspecified 
TrowbridgeReitz 
Beckmann 

◆ EMaskingShadowing

enum class ph::EMaskingShadowing
strong

Different types of masking and shadowing terms for microfacet distributions. Eric Heitz has published a detailed explanation [10], which is excellent and definitely worth a read in my opinion.

Enumerator
HightCorrelated 

Modeling the correlation between masking and shadowing due to the height of the microsurface. This is a more accurate version than the one used by Walter et al. [18] (which is Separable).

Separable 

Statistically independent masking and shadowing. This form is simpelr but always overestimates the geometry term as some correlation always exists.

DirectionCorrelated 

Modeling the correlation between masking and shadowing due to the differences between incident and outgoing directions.

HeightDirectionCorrelated 

Modeling the correlation between masking and shadowing due to both height and direction differences. This is the most accurate version of all.

◆ EMathImageOp

enum class ph::EMathImageOp
strong
Enumerator
Add 
Subtract 
Multiply 
Divide 
Power 
Absolute 
Clamp 

◆ EPhotonData

enum class ph::EPhotonData
strong
Enumerator
ThroughputRadiance 
Pos 
FromDir 
GeometryNormal 
PathLength 

◆ EPhotonMappingMode

enum class ph::EPhotonMappingMode
strong
Enumerator
Vanilla 
Progressive 
StochasticProgressive 
ProbabilisticProgressive 

◆ EPictureFile

enum class ph::EPictureFile
strong
Enumerator
Unknown 
PNG 
JPG 
BMP 
TGA 
HDR 
EXR 
HighPrecisionEXR 
PFM 

◆ EPicturePixelComponent

enum class ph::EPicturePixelComponent
strong
Enumerator
Empty 
Int8 
UInt8 
Int16 
UInt16 
Int32 
UInt32 
Int64 
UInt64 
Float16 
Float32 
Float64 

◆ EPlyDataFormat

enum class ph::EPlyDataFormat
strong
Enumerator
ASCII 
BinaryLittleEndian 
BinaryBigEndian 
NUM 

◆ EPlyDataType

enum class ph::EPlyDataType
strong
Enumerator
Unspecified 
Int8 

The char type, character with 1 byte.

UInt8 

The uchar type, unsigned character with 1 byte.

Int16 

The short type, short integer with 2 bytes.

UInt16 

The ushort type, unsigned short integer with 2 bytes.

Int32 

The int type, integer with 4 bytes.

UInt32 

The uint type, integer with 4 bytes.

Float32 

The float type, single-precision float with 4 bytes.

Float64 

The double type, double-precision float with 8 bytes.

NUM 

◆ ERayEnergyEstimator

enum class ph::ERayEnergyEstimator
strong
Enumerator
Unspecified 
BVPT 
BNEEPT 
BVPTDL 

◆ ERegionStatus

enum class ph::ERegionStatus
strong

Status of a rendering region. Note that when adding new entries, the order is important: later entries will take precedence when multiple regions are merged together. For example, merging Invalid and Updating regions will result in an Updating region.

Enumerator
Invalid 
Finished 
Updating 

◆ ERoughnessToAlpha

enum class ph::ERoughnessToAlpha
strong
Enumerator
Unspecified 
Equaled 
Squared 
PbrtV3 

◆ ESampleFilter

enum class ph::ESampleFilter
strong
Enumerator
Unspecified 
Box 
Gaussian 
MitchellNetravali 
BlackmanHarris 

◆ EScheduler

enum class ph::EScheduler
strong
Enumerator
Unspecified 
Bulk 
Stripe 
Grid 
Tile 
Spiral 
SpiralGrid 

◆ ESdlClauseValue

Meta information for the value in a clause.

Enumerator
General 

Value of unspecified format.

PersistentTargetName 

Name of a single persistent target.

CachedTargetName 

Name of a single cached target.

◆ ESdlCommandType

enum class ph::ESdlCommandType
strong
Enumerator
Unknown 
Directive 
Load 
Removal 
Update 
Execution 
NamedDataPacket 
Phantom 

◆ ESdlDataFormat

enum class ph::ESdlDataFormat : uint8
strong

Format of the data used by SDL. Each listed data format tells how a group of data is arranged internally as well as its meaning. Useful for code that require some determinable runtime behavior.

Enumerator
None 
Single 

T types. Scalar or containing a single object only.

Vector2 

math::TVector2<T> types.

Vector3 

math::TVector3<T> types.

Vector4 

math::TVector4<T> types.

Quaternion 

math::TQuaternion<T> types.

Vector 

std::vector<T> types.

Vector2Vector 

std::vector<math::TVector2<T>> types.

Vector3Vector 

std::vector<math::TVector3<T>> types.

QuaternionVector 

std::vector<math::TQuaternion<T>> types.

SharedPtrVector 

std::vector<std::shared_ptr<T>> types.

SharedPointer 

std::shared_ptr<T> types.

UniquePointer 

std::unique_ptr<T> types.

SIZE 

◆ ESdlDataType

enum class ph::ESdlDataType : uint8
strong

Common data types used by SDL. Each listed data type has some form of one to one mapping to a specific runtime type. Useful for code that require some determinable runtime behavior.

Enumerator
None 
Int8 

The ph::int8 type.

UInt8 

The ph::uint8 type.

Int16 

The ph::int16 type.

UInt16 

The ph::uint16 type.

Int32 

The ph::int32 type.

UInt32 

The ph::uint32 type.

Int64 

The ph::int64 type.

UInt64 

The ph::uint64 type.

Float32 

The ph::float32 type.

Float64 

The ph::float64 type.

Bool 

The bool type.

String 

The std::string type.

Path 

The ph::Path type.

ResourceIdentifier 

The ph::ResourceIdentifier type.

Spectrum 

The math::Spectrum type.

Enum 

Enum types. Specific enum type would require reflection from the enum name.

Struct 

Struct types. Specific struct type would require reflection from the struct name.

Geometry 

The ph::Geometry type.

Material 

The ph::Material type.

Motion 

The ph::MotionSource type.

Actor 

The ph::Actor type.

Image 

The ph::Image type.

FrameProcessor 

The ph::FrameProcessor type.

Observer 

The ph::Observer type.

SampleSource 

The ph::SampleSource type.

Visualizer 

The ph::Visualizer type.

Option 

The ph::Option type.

Object 

The ph::Object type.

SIZE 

◆ ESdlTypeCategory

enum class ph::ESdlTypeCategory
strong
Enumerator
Unspecified 
Ref_Geometry 
Ref_Material 
Ref_Motion 
Ref_Image 
Ref_Actor 
Ref_FrameProcessor 
Ref_Observer 
Ref_SampleSource 
Ref_Visualizer 
Ref_Option 
Ref_Object 
SIZE 

◆ ESriType

enum class ph::ESriType
strong

Type of the SDL Resource Identifier (SRI).

Enumerator
Unknown 
Bundle 
External 

◆ ESurfaceHitReason

Enumerator
Invalid 

Invalid state. Most likely the reason has not been set.

Unknown 

An uncategorized, unknown reason.

IncidentRay 

A ray has hit the surface.

SampledPos 

A position from the surface has been picked.

SampledDir 

A direction from the surface has been picked.

SampledPosDir 

Both a position and a direction from the surface are picked.

◆ ESurfaceMaterialMixMode

enum class ph::ESurfaceMaterialMixMode
strong
Enumerator
Lerp 

◆ ESurfacePhenomenon

enum class ph::ESurfacePhenomenon : uint32
strong

Available surface phenomena.

Enumerator
DiffuseReflection 
NearDiffuseReflection 
DeltaReflection 
GlossyReflection 
DiffuseTransmission 
NearDiffuseTransmission 
DeltaTransmission 
GlossyTransmission 

◆ ESurfaceRefineMode

enum class ph::ESurfaceRefineMode
strong
Enumerator
Manual 
Empirical 
Iterative 
Default 

◆ ETexWrapMode

enum class ph::ETexWrapMode
strong
Enumerator
REPEAT 
CLAMP_TO_EDGE 

◆ EVertexAttribute

enum class ph::EVertexAttribute : uint8
strong
Enumerator
Position_0 
Normal_0 
Tangent_0 
TexCoord_0 
TexCoord_1 
Color_0 
SIZE 

◆ EVertexElement

enum class ph::EVertexElement : uint8
strong
Enumerator
Float32 
Float16 
Int32 
Int16 
OctahedralUnitVec3_32 
OctahedralUnitVec3_24 
SIZE 

◆ EViewPathSampleMode

enum class ph::EViewPathSampleMode
strong

Directives on how to trace the next path.

Enumerator
SinglePath 

Keep tracing current path.

ElementalBranch 

Trace a different path for each elemental.

◆ EViewpointData

enum class ph::EViewpointData
strong
Enumerator
SurfaceHit 
RasterCoord 
Radius 
NumPhotons 
Tau 
ViewThroughput 
ViewDir 
ViewRadiance 

Function Documentation

◆ accept_photon_by_surface_topology()

template<CPhoton Photon>
bool ph::accept_photon_by_surface_topology ( const Photon & photon,
const math::Vector3R & Ng,
const math::Vector3R & Ns,
const math::Vector3R & L,
const math::Vector3R & V,
const lta::SidednessAgreement & sidedness )
inline

Given a valid set of target point's evaluation attributes (Ng, Ns, L, V), checks whether photon is usable under the sidedness constraint.

◆ after_engine_init()

void ph::after_engine_init ( const EngineInitSettings & settings)

◆ before_engine_exit()

void ph::before_engine_exit ( )

◆ bitwise_cast()

template<typename Target , typename Source >
Target ph::bitwise_cast ( const Source & source)
inline

Effectively the same as std::bit_cast(). This function also works without C++20.

◆ enum_size()

template<CEnumWithSizeInfo EnumType>
auto ph::enum_size ( )
inlineconstexpr

◆ enum_to_string()

template<CEnum EnumType>
std::string ph::enum_to_string ( const EnumType enumValue)
inline

◆ enum_to_value()

template<CEnum EnumType>
auto ph::enum_to_value ( const EnumType enumValue)
inlineconstexpr

◆ estimate_certainly_lost_energy()

template<CPhoton Photon>
math::Spectrum ph::estimate_certainly_lost_energy ( const std::size_t viewPathLength,
const SurfaceHit & X,
const math::Spectrum & viewPathThroughput,
const TPhotonMapInfo< Photon > & photonMapInfo,
const Scene * scene,
const std::size_t minFullPathLength = 1,
const std::size_t maxFullPathLength = PMCommonParams::DEFAULT_MAX_PATH_LENGTH )
inline

Estimate the energy that can never be obtained by utilizing a photon map. The estimation is for the current hit point only. To account for lost energy along a path with multiple hit points, call this function for each hit point and sum the results.

Parameters
viewPathLengthCurrent view path length. Each path length calculates an independent component of the total energy (in equilibrium).
XCurrent hit point.
viewPathThroughputCurrent view path throughput.
photonMapInfoInformation of the photon map that is being involved in the energy evaluation process.
sceneThe scene that is being rendered.
minFullPathLengthThe minimum length of the full light transport path to consider.
maxFullPathLengthThe maximum length of the full light transport path to consider (inclusive).
Returns
The energy that is lost, properly weighted by viewPathThroughput.

◆ estimate_lost_energy_for_extending()

template<CPhoton Photon>
math::Spectrum ph::estimate_lost_energy_for_extending ( const std::size_t viewPathLength,
const SurfaceHit & X,
const math::Spectrum & viewPathThroughput,
const TPhotonMapInfo< Photon > & photonMapInfo,
const Scene * scene,
const std::size_t minFullPathLength = 1,
const std::size_t maxFullPathLength = PMCommonParams::DEFAULT_MAX_PATH_LENGTH )
inline

Estimate the energy that is otherwise lost forever if the path is extended. The estimation is for the current hit point only. To account for lost energy along an extended path with multiple hit points, call this function for each hit point and sum the results. For a hit point, only one of estimate_lost_energy_for_extending() and estimate_lost_energy_for_merging() can be called.

Parameters
viewPathLengthCurrent view path length. Each path length calculates an independent component of the total energy (in equilibrium).
XCurrent hit point.
viewPathThroughputCurrent view path throughput.
photonMapInfoInformation of the photon map that is being involved in the energy evaluation process.
sceneThe scene that is being rendered.
minFullPathLengthThe minimum length of the full light transport path to consider.
maxFullPathLengthThe maximum length of the full light transport path to consider (inclusive).
Returns
The energy that is lost, properly weighted by viewPathThroughput.

◆ estimate_lost_energy_for_merging()

template<CPhoton Photon>
math::Spectrum ph::estimate_lost_energy_for_merging ( const std::size_t viewPathLength,
const SurfaceHit & X,
const math::Spectrum & viewPathThroughput,
const TPhotonMapInfo< Photon > & photonMapInfo,
const Scene * scene,
const std::size_t minFullPathLength = 1,
const std::size_t maxFullPathLength = PMCommonParams::DEFAULT_MAX_PATH_LENGTH )
inline

Estimate the energy that is otherwise lost forever if the path is merged. The estimation is for the current hit point only and is expected to be called when the path ended (merged). For a hit point, only one of estimate_lost_energy_for_extending() and estimate_lost_energy_for_merging() can be called.

Parameters
viewPathLengthCurrent view path length. This function calculates an independent component of the total energy (in equilibrium).
XCurrent hit point.
viewPathThroughputCurrent view path throughput.
photonMapInfoInformation of the photon map that is being involved in the energy evaluation process.
sceneThe scene that is being rendered.
minFullPathLengthThe minimum length of the full light transport path to consider.
maxFullPathLengthThe maximum length of the full light transport path to consider (inclusive).
Returns
The energy that is lost, properly weighted by viewPathThroughput.

◆ exit_API_database()

bool ph::exit_API_database ( )

◆ exit_render_engine()

bool ph::exit_render_engine ( )

Exit the render engine. Must be called before leaving the engine. Using the engine after this call returned is prohibited (except some cleanup operations such as destruction).

◆ gen_sdl_resource_id()

SdlResourceId ph::gen_sdl_resource_id ( )
Note
Thread-safe.

◆ get_config_directory()

Path ph::get_config_directory ( EEngineProject project)

◆ get_internal_resource_directory()

Path ph::get_internal_resource_directory ( EEngineProject project)

Directory to resources required by the project.

◆ get_registered_engine_classes()

std::span< const SdlClass *const > ph::get_registered_engine_classes ( )

Get a list of registered SDL classes from the engine.

◆ get_registered_engine_enums()

std::span< const SdlEnum *const > ph::get_registered_engine_enums ( )

Get a list of registered SDL enums from the engine.

◆ get_resource_directory()

Path ph::get_resource_directory ( EEngineProject project)

Directory to additional/optional resources used by the project.

◆ get_script_directory()

Path ph::get_script_directory ( EEngineProject project)

Directory to scripts for the project.

◆ init_engine_core()

bool ph::init_engine_core ( const EngineInitSettings & settings)

◆ init_engine_IO_infrastructure()

bool ph::init_engine_IO_infrastructure ( const EngineInitSettings & settings)

◆ init_render_engine()

bool ph::init_render_engine ( std::optional< EngineInitSettings > settings = std::nullopt)

Initialize the render engine.

Must be called before any other use of the engine. This functions also initializes all dependencies. Note that initialization is generally not required when using APIs from a base library (e.g., the Common library)–in case of an exception (such as logging), consult the API's documentation to see if anything should be done before using it.

Parameters
settingsSettings for the engine. If not provided, the engine will try to load from a standard location (automatically create a default one if not exist).

◆ is_big_endian()

bool ph::is_big_endian ( )
inlineconsteval

Effectively testing std::endian::native == std::endian::big. This function also works without C++20.

◆ load5bScene()

void ph::load5bScene ( VisualWorld *const out_world)
extern

◆ loadCbox3ObjScene()

void ph::loadCbox3ObjScene ( VisualWorld *const out_world)

◆ loadCornellBox()

void ph::loadCornellBox ( VisualWorld *const out_world,
const real boxSize )

◆ loadTestScene()

void ph::loadTestScene ( VisualWorld *const out_world)

*auto sphereMaterial = std::make_shared<MatteOpaque>();

◆ num_bytes_in_component()

std::size_t ph::num_bytes_in_component ( const EPicturePixelComponent componentType)
inline

◆ parallel_work() [1/3]

void ph::parallel_work ( const std::size_t numWorkers,
std::function< void(std::size_t workerIdx) > work )

Runs specified works in parallel. The function will block the calling thread until all works are complete.

Parameters
numWorkersNumber of workers running the works.
workThe actual work that is going to be executed; where the index of the executing worker is specified as input.

◆ parallel_work() [2/3]

void ph::parallel_work ( const std::size_t totalWorkSize,
const std::size_t numWorkers,
std::function< void(std::size_t workerIdx, std::size_t workBegin, std::size_t workEnd) > work )

Runs specified works in parallel. The function will block the calling thread until all works are complete. Note that 0-sized works are not executed (work is not called in this case).

Parameters
totalWorkSizeTotal amount of work.
numWorkersNumber of workers running the works.
workThe actual work that is going to be executed; where the index range [workBegin, workEnd) is specified as input, as well as the index of the executing worker.

◆ parallel_work() [3/3]

void ph::parallel_work ( FixedSizeThreadPool & workers,
const std::size_t totalWorkSize,
std::function< void(std::size_t workerIdx, std::size_t workBegin, std::size_t workEnd) > work )

Runs specified works in parallel using a thread pool. The function will block the calling thread until all works are complete. Note that 0-sized works are not executed (work is not called in this case).

Parameters
workersThe thread pool to use.
totalWorkSizeTotal amount of work.
workThe actual work that is going to be executed; where the index range [workBegin, workEnd) is specified as input, as well as the index of the executing worker.

◆ PH_DECLARE_LOG_GROUP() [1/2]

ph::PH_DECLARE_LOG_GROUP ( ActorCooking )

◆ PH_DECLARE_LOG_GROUP() [2/2]

ph::PH_DECLARE_LOG_GROUP ( PMRenderer )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [1/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( ApiDatabase ,
Core  )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [2/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( CookedResourceCollection ,
World  )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [3/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( CookedResourceCollectionBase ,
World  )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [4/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( SdlClass ,
SDL  )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [5/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( SdlField ,
SDL  )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [6/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( SdlFunction ,
SDL  )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [7/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( SdlStruct ,
SDL  )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [8/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( TableFGD ,
BSDF  )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [9/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( TableTIR ,
BSDF  )

◆ PH_DEFINE_EXTERNAL_LOG_GROUP() [10/10]

ph::PH_DEFINE_EXTERNAL_LOG_GROUP ( TransientResourceCache ,
World  )

◆ PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS() [1/4]

ph::PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS ( EEmitterFeatureSet )

◆ PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS() [2/4]

ph::PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS ( EFaceTopology )

◆ PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS() [3/4]

ph::PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS ( ESurfaceHitReason )

◆ PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS() [4/4]

ph::PH_DEFINE_INLINE_ENUM_FLAG_OPERATORS ( ESurfacePhenomenon )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [1/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( AGeometricLight ,
Actor  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [2/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( AModel ,
Actor  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [3/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( AttributeRenderer ,
Renderer  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [4/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( BinaryFileReader ,
DataIO  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [5/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( BinaryMixedImage ,
Image  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [6/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( BinaryMixedSurfaceMaterial ,
Material  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [7/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( BlackBodyRadiationImage ,
Image  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [8/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( CheckerboardImage ,
Image  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [9/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( ConductiveInterfaceInfo ,
BSDF  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [10/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( ConstantImage ,
Image  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [11/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( CookedNamedResource ,
World  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [12/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( CookingContext ,
World  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [13/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( CoreCookedUnit ,
Core  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [14/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( CppAPI ,
Engine  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [15/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( DielectricInterfaceInfo ,
BSDF  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [16/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( DomeActor ,
Actor  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [17/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( Engine ,
Core  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [18/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( EqualSamplingRenderer ,
Renderer  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [19/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( ExrFileReader ,
DataIO  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [20/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( FormattedTextInputStream ,
DataIO  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [21/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( FrameUtilities ,
Frame  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [22/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( FullMaterial ,
Material  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [23/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( Geometry ,
Geometry  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [24/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( GPlyPolygonMesh ,
Geometry  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [25/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( IdealSubstance ,
Material  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [26/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( IesData ,
DataIO  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [27/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( IesFile ,
DataIO  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [28/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( IndexedUIntBuffer ,
Core  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [29/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( IndexedVertexBuffer ,
Core  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [30/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( InitAndExit ,
Engine  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [31/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( LatLongEnvEmitter ,
Emitter  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [32/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( MathImage ,
Image  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [33/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( MicrosurfaceInfo ,
BSDF  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [34/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( OrientedRasterObserver ,
Observer  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [35/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( PathTracingVisualizer ,
Visualizer  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [36/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( PfmFile ,
DataIO  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [37/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( PhotonMappingVisualizer ,
Visualizer  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [38/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( PlyFile ,
DataIO  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [39/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( PowerFavoringEmitterSampler ,
EmitterSampler  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [40/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( PreethamDomeActor ,
Actor  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [41/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( PreethamTexture ,
Texture  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [42/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( PrimitiveMetadata ,
Primitive  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [43/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( RasterFileImage ,
Image  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [44/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( RawResourceCollection ,
SDL  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [45/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( Receiver ,
Receiver  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [46/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( Renderer ,
Renderer  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [47/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SceneDescription ,
SDL  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [48/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SdlCommandGenerator ,
SDL  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [49/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SdlCommandParser ,
SDL  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [50/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SdlDataPacketCollection ,
SDL  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [51/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SdlDependencyResolver ,
SDL  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [52/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SdlNamedOutputClauses ,
SDL  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [53/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SdlSceneFileReader ,
SDL  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [54/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SdlSceneFileWriter ,
SDL  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [55/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SingleFrameRenderSession ,
RenderSession  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [56/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( SwizzledImage ,
Image  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [57/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( TextFileLoader ,
DataIO  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [58/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( TransformedInstanceActor ,
Actor  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [59/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( VisualWorld ,
World  )

◆ PH_DEFINE_INTERNAL_LOG_GROUP() [60/60]

ph::PH_DEFINE_INTERNAL_LOG_GROUP ( Workflow ,
Concurrent  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [1/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( BSDFAndIndirectLightSampling ,
Render_BNEEPTEstimator  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [2/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( CookActorLevels ,
VisualWorld  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [3/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( DirectLightSampling ,
Render_BNEEPTEstimator  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [4/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( FullEstimation ,
Render_BNEEPTEstimator  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [5/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( GetClauses ,
SdlCommandParser  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [6/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( GetCommandHeader ,
SdlCommandParser  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [7/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( GetSDLClass ,
SdlCommandParser  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [8/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( LoadCommands ,
Engine  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [9/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( ParseCommandTotal ,
SdlCommandParser  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [10/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( ParseDirectiveCommand ,
SdlCommandParser  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [11/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( ParseExecutionCommand ,
SdlCommandParser  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [12/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( ParseLoadCommand ,
SdlCommandParser  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [13/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( ParseNamedDataPacketCommand ,
SdlCommandParser  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [14/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( Render ,
Engine  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [15/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( Update ,
Engine  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [16/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( UpdateAccelerators ,
VisualWorld  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [17/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( UpdateLightSamplers ,
VisualWorld  )

◆ PH_DEFINE_INTERNAL_TIMER_STAT() [18/18]

ph::PH_DEFINE_INTERNAL_TIMER_STAT ( ZeroBounceDirect ,
Render_BNEEPTEstimator  )

◆ PH_DEFINE_LOG_GROUP() [1/2]

ph::PH_DEFINE_LOG_GROUP ( ActorCooking ,
Actor  )

◆ PH_DEFINE_LOG_GROUP() [2/2]

ph::PH_DEFINE_LOG_GROUP ( PMRenderer ,
Renderer  )

◆ PH_DEFINE_SDL_ENUM() [1/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EAccelerator > )

◆ PH_DEFINE_SDL_ENUM() [2/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EHaltonPermutation > )

◆ PH_DEFINE_SDL_ENUM() [3/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EHaltonSequence > )

◆ PH_DEFINE_SDL_ENUM() [4/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EIdealSubstance > )

◆ PH_DEFINE_SDL_ENUM() [5/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EImageSampleMode > )

◆ PH_DEFINE_SDL_ENUM() [6/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EImageWrapMode > )

◆ PH_DEFINE_SDL_ENUM() [7/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EInterfaceFresnel > )

◆ PH_DEFINE_SDL_ENUM() [8/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EInterfaceMicrosurface > )

◆ PH_DEFINE_SDL_ENUM() [9/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EMaskingShadowing > )

◆ PH_DEFINE_SDL_ENUM() [10/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EMathImageOp > )

◆ PH_DEFINE_SDL_ENUM() [11/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EPhotonMappingMode > )

◆ PH_DEFINE_SDL_ENUM() [12/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EPictureFile > )

◆ PH_DEFINE_SDL_ENUM() [13/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< ERayEnergyEstimator > )

◆ PH_DEFINE_SDL_ENUM() [14/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< ERoughnessToAlpha > )

◆ PH_DEFINE_SDL_ENUM() [15/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< ESampleFilter > )

◆ PH_DEFINE_SDL_ENUM() [16/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< EScheduler > )

◆ PH_DEFINE_SDL_ENUM() [17/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< ESurfaceMaterialMixMode > )

◆ PH_DEFINE_SDL_ENUM() [18/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< math::EColorSpace > )

◆ PH_DEFINE_SDL_ENUM() [19/19]

ph::PH_DEFINE_SDL_ENUM ( TSdlGeneralEnum< math::EColorUsage > )

◆ picture_file_type_from_extension()

EPictureFile ph::picture_file_type_from_extension ( std::string_view ext)

◆ ptr_access() [1/3]

template<typename T >
T * ph::ptr_access ( T && ref)
inlinedelete

All remaining types are forbidden. This forwarding reference overload also prevent the use of rvalue to guard against potential dangling pointer.

◆ ptr_access() [2/3]

template<typename T >
T * ph::ptr_access ( T & ref)
inline

◆ ptr_access() [3/3]

template<typename T >
T * ph::ptr_access ( T *const ptr)
inline

Access a target's member consistently using . or -> operators. Note that these functions treat smart pointers as regular objects (ptr_access() and ref_access() will refer to the object itself, not its managed data). A nice discussion for the topic: https://stackoverflow.com/questions/14466620/c-template-specialization-calling-methods-on-types-that-could-be-pointers-or.

◆ ref_access() [1/4]

void ph::ref_access ( std::nullptr_t )
inlinedelete

Cannot dereference a nullptr.

◆ ref_access() [2/4]

template<typename T >
T & ph::ref_access ( T && ref)
inlinedelete

All remaining types are forbidden. This forwarding reference overload also prevent the use of rvalue to guard against potential dangling reference.

◆ ref_access() [3/4]

template<typename T >
T & ph::ref_access ( T & ref)
inline

◆ ref_access() [4/4]

template<typename T >
T & ph::ref_access ( T *const ptr)
inline

◆ refine_mode_to_str()

std::string_view ph::refine_mode_to_str ( const ESurfaceRefineMode mode)
inline

◆ str_to_refine_mode()

ESurfaceRefineMode ph::str_to_refine_mode ( std::string_view mode)
inline

◆ to_string()

std::string_view ph::to_string ( EEngineProject project)

Variable Documentation

◆ ALL_SURFACE_ELEMENTALS

SurfaceElemental ph::ALL_SURFACE_ELEMENTALS = -1
inlineconstexpr

All available elementals.

◆ ALL_SURFACE_PHENOMENA

ESurfacePhenomenon ph::ALL_SURFACE_PHENOMENA
inlineconstexpr
Initial value:
=
static_cast<ESurfacePhenomenon>(~uint32(0))
ESurfacePhenomenon
Available surface phenomena.
Definition surface_optics_fwd.h:16

All available surface phenomena.

◆ DELTA_SURFACE_PHENOMENA

ESurfacePhenomenon ph::DELTA_SURFACE_PHENOMENA
inlineconstexpr
Initial value:
=
ESurfacePhenomenon::DeltaReflection | ESurfacePhenomenon::DeltaTransmission

Surface phenomena with pure delta distribution.

◆ DIFFUSE_SURFACE_PHENOMENA

ESurfacePhenomenon ph::DIFFUSE_SURFACE_PHENOMENA
inlineconstexpr
Initial value:
=
ESurfacePhenomenon::DiffuseReflection | ESurfacePhenomenon::DiffuseTransmission

Surface phenomena with pure diffuse distribution.

◆ EMPTY_SDL_RESOURCE_ID

SdlResourceId ph::EMPTY_SDL_RESOURCE_ID = 0
inlineconstexpr

◆ GLOSSY_SURFACE_PHENOMENA

ESurfacePhenomenon ph::GLOSSY_SURFACE_PHENOMENA
inlineconstexpr
Initial value:
=
ESurfacePhenomenon::GlossyReflection | ESurfacePhenomenon::GlossyTransmission

Surface phenomena with pure glossy distribution.